Open Waters AIS privacy policy
Open Water Software, LLC ("we") runs Open Waters AIS: the map at openwaters.io/ais/vessels, the API at ais.openwaters.io, and the network of stations that feed it. This policy says what personal data the service handles, why, how long we keep it, and what you can ask us to do. Write to hello@openwaters.io with any question or request. A person reads it.
Summary
We publish what vessels broadcast over AIS. The track of a small boat can point to its owner, so an owner can ask us to stop publishing their vessel, and we will. We have no accounts and ask for no email address or payment details. We log API requests to keep the service running and to stop abuse. We do not sell personal data. The map counts page views with Plausible, which sets no cookies, and runs no advertising or cross-site tracking.
Vessel data
AIS is an open radio broadcast. Vessels send their identity (MMSI), name, call sign, position, course, speed, destination, and dimensions, unencrypted, so that other vessels can see them. We receive these broadcasts from government open-data feeds, other AIS exchanges, and volunteer stations. We also load past years of AIS that governments publish, such as the US Coast Guard's archive on MarineCadastre and the Danish Maritime Authority's archive. We add public registry details, such as build year, tonnage, owner, operator, and home port, from Wikidata and from national registers in the United States, Canada, Norway, and Australia. Owner names come only from Wikidata, and from Norway's fishing register when the owner is a company.
We publish this data as a live stream, current positions, vessel tracks, and an archive, under open licenses. We keep every reception indefinitely, with the source and station that delivered it, in our database. Live receptions are also kept in our archive. We back up the database every night and keep each backup for 70 days. We also keep each vessel's last known position and details. A vessel's page shows its last known position however old, including vessels that only an archive heard. Anyone can see a vessel's past tracks, as far back as we have them. Tracks older than 48 hours come in less detail unless you have a contributing station or a commercial token. Pages for named vessels heard in the past 30 days are listed for search engines.
Our Explore pages feature some vessels with the people linked to them, such as sailing channels on YouTube and yachts whose owners have been publicly reported. They use only what those people, or public sources such as boat builders, yacht databases, and AIS tracking sites, have published. If you are featured, you can ask us to remove your entry, and we will. Removing your entry does not change the vessel's own page or track. The vessel opt-out below covers those.
Most AIS traffic is commercial shipping, and that is not personal data. A small craft linked to a person is different. A vessel registry can connect the MMSI to an owner, and the track can then show where that person is or lives.
We publish this data on the basis of legitimate interest. The vessel's own equipment broadcasts it to anyone in range. Publishing it supports safety, navigation, search and rescue, research, and accident investigation. The opt-out below is the safeguard that balances this for small craft.
Vessel opt-out
If your vessel is a small craft linked to you, you can ask us to stop publishing it. Email hello@openwaters.io with the MMSI and anything that shows your connection to the vessel. A photo, an insurance or mooring document, or a club listing is enough. You do not have to be the registered owner. A vessel registered to a company counts if you are its only user.
The opt-out is free, and a person handles each request. Within 30 days we stop publishing the vessel in the live stream, on the map, in track and history queries, and on its vessel page, and we remove the page from the list we give search engines. We delete it from our database, leave it out of any copy of our data that we publish after that, and confirm this to you in writing. Backups made before then expire within 70 days. We keep the MMSI on a list so that we do not publish the vessel again. We delete the proof you sent once we have handled the request.
There are limits. Our maps of coverage by area count each distinct vessel heard in an area for up to 13 months, and they never show which vessels they count, so those totals keep your vessel. Our archive keeps every vessel together in hourly files, so the vessel stays there, but we leave it out whenever we rebuild our database from the archive. A station that sends your own vessel's position stays on the stations list under your vessel's name, and the opt-out does not remove it. Copies of the archive that others took under an open license are beyond our control. Anyone with a receiver can still hear your transponder. Search engines may keep their own copies of a vessel page for a while. Other tracking sites are separate, and you must ask each of them.
The opt-out does not cover vessels that must carry AIS by law, such as commercial ships.
Station operators
A volunteer station is identified by a public key that its software generates, or, for stations that send over UDP, by a keyed hash of the sender's address. We never ask for a station's location. We label each station with the town of 5,000 or more people, or the region, nearest to the traffic it hears. The stations list also shows the area covered by all the positions a station has heard, which can include its own vessel's positions, and a map of how many stations hear each area, and which ones. Our API serves where each station heard vessels over the past 7 days, in cells about 3 km on a side. For a boat station that does not share its own position, these cells trace where the boat went.
A station can have a public name. It comes from the name the operator types on the token page, or else the vessel name the Signal K plugin sends, or else the name of the station's own vessel. We store these names and show them on the stations list, with the station's own vessel if it has one. To change or clear a name, use the token page again or write to us.
If your station sends your own vessel's position (!AIVDO), or the Signal K plugin builds one for you, we publish it like any other vessel, and we identify your station by that vessel. We store every reception your station sends under your station's identity, which names your vessel, so the traffic it heard shows where your boat has been. The vessel opt-out does not remove what your station shared. The Signal K plugin is off until you turn it on. Once it is on, sharing your own position is on by default, and you can turn it off. The data you send can reveal where your station is. The contributor agreement explains this.
When a station sends data to our API, our request logs link its key to its network address, as described below.
We forward receptions from volunteer stations to AISHub, an AIS exchange, as part of an exchange agreement.
Tokens
You do not need a token. A free token, from the token page or the Signal K plugin, raises your limits. Your browser or plugin generates a key pair, and the private key stays on your device. We sign a token for the public key and send it back. We do not keep a copy of the token. For each station that signs its requests, we store its names, its own vessel's MMSI, and the times of its first and last signed requests.
If you choose to bind a token to your address, that address is written into the token, and your UDP station is linked to your token. The token still works from any address.
The map
The map at openwaters.io/ais/vessels, with its vessel, station, and network pages, needs no account. It counts page views with Plausible, as the rest of openwaters.io does. Plausible sets no cookies and does not keep your IP address. It records the page, the site that sent you, your rough location by country, region, and city, and your browser, operating system, and type of device.
- Cookies and storage. If you pick a theme, the map sets a cookie,
aiscast-theme, that remembers your choice for a year. The map keeps your last search in your browser until you close the tab. The token page keeps your key pair, token, and station name in your browser's local storage. Nothing else is stored, and you can delete all of it by clearing site data. - Starting location. Cloudflare estimates your approximate location from your IP address. The map uses that estimate to open near you. We do not store it. The map then keeps its current view in the page's address, so a link you share shows the area you were looking at.
- Your location. If you choose "Near me" or the locate button, your browser asks for your permission and then shares your location with the map. The locate button keeps it in your browser. A search sorted by distance sends your location, or the center of the map, to our API. The map also sends the area on your screen. Our API log keeps these only to about 10 km. The web server log drops them, but it keeps the exact map tiles you load.
- Other services. The map loads its base map from OpenFreeMap, its page counter from Plausible, channel avatars on Explore pages from YouTube's image servers, and vessel photos straight from Wikimedia Commons. Those services receive your IP address. All but YouTube also receive the site you came from. Their own privacy policies apply. The map's server looks up which photos exist, so Wikimedia does not see those lookups come from you.
- Error reports. When the map hits an error, about half of page loads send a report to our own server. It holds the kind of error, its message and stack trace, the section of the app, and your browser's user agent. We remove the query part of web addresses, tokens, email addresses, and precise coordinates before we store it. The report itself holds no IP address and nothing that links one report to another. Reports are kept in Cloudflare Workers Logs. Cloudflare's own record of the request, described below, includes your address, as it does for any request to the map.
The other pages on openwaters.io, including the Open Waters AIS home page, are covered by the Open Waters privacy page.
Request logs
Every request to the API at ais.openwaters.io is logged twice. A live stream or MQTT connection is logged once, when it closes. Data that stations send over UDP is not logged this way. Neither log records the body of a request, such as what an AI assistant asks our MCP server to look up.
- The web server log holds your full IP address, the time, what you requested, the result, and the encryption settings your browser chose. Any token, your search position, and the map area are removed from the request. It records none of your browser's request headers. It keeps the exact map tiles you load, which show the area you are looking at. It stays on our server and is deleted within two weeks.
- The API log holds the request, including any search text, vessel, or station it names, the time, the result, your network (the first three parts of an IPv4 address, or the first 48 bits of an IPv6 address), a keyed hash of your full address, your browser's user agent, the site that sent you without its query, the
Originheader, and your token's public identifier. It leaves out tokens. It keeps locations in the request, such as a search position, the map area, or a map tile, only to about 10 km. The hash links your requests over time, so we can follow abuse across days and weeks. Because we hold the key, we can recover your address from this log. We delete it after 90 days.
We use these logs to find what is causing load, to detect and stop abuse, to learn how the API is used, and to plan new features. We also count requests per address to enforce rate limits. Error messages in the server's system log can include an address. That log has a fixed size, and new entries overwrite old ones.
If you write to us, we keep the correspondence. We use it only to answer you and to carry out your request.
Monitoring
We send counts and timings to Grafana Cloud to watch the service's health. They hold no addresses, tokens, or vessel positions. Event counts per source are labeled with each station's public identifier.
Who else handles data
- Cloudflare serves the map and openwaters.io, so it sees those requests. It keeps copies of vessel and station pages for a minute and of share images for an hour, which hold no visitor data. Cloudflare Workers Logs keep a record of each request to the map, with your address, the page, and your browser's headers, for up to seven days. They can include Cloudflare's estimate of your location. We use them to find and fix errors. Our archive, database history older than 30 days, nightly backups, and the API log are stored in Cloudflare R2. The API log is in its own private bucket.
- Hetzner hosts the API server in Helsinki, Finland. The API does not pass through Cloudflare.
- Grafana Cloud stores our monitoring data.
- Plausible counts page views on the map.
These providers process data for us under their own terms. We do not sell personal data or share it for advertising.
Your rights
You can ask us what we hold about you, and ask us to correct it or delete it. We have no accounts, so we may ask you for something that lets us find your data, such as your token, your MMSI, or your IP address and the times you used the service.
If the GDPR applies to you, the vessel opt-out is how you use your right to object, and the deletion that follows is your right to erasure. You can complain to your data protection authority.
Changes
This policy lives in the public aiscast repository. We change it only by pull request there, so every change is public. A material change takes effect 30 days after its pull request merges. Watch the repository to hear about changes.