Checking session…

Configure an AIS receiver and connect to the NMEA feed

Send your regional AIS feed and qualify for access to the shared TCP stream.

Four steps

Create a station, send AIS, qualify for 15 minutes, then allowlist your client IP.

Configure a station →

AIS receiver configuration

Contribute checksummed NMEA AIS messages over UDP. Eligible contributors can connect to the combined live TCP feed.

Need a receiver?

Build a receive-only AIS station with an SDR or dedicated AIS receiver.

Build a hobby receiver →

1 Configure a station

Sign in with GitHub, open Your account, and provide a descriptive name and accurate receiver coordinates. Open AIS assigns the UDP destination for your station.

2 Send NMEA messages

Use the endpoint shown for your station. Send one complete ASCII !AIVDM or !AIVDO sentence with a valid checksum per UDP datagram. Datagrams over 1024 bytes are rejected; identical station messages are suppressed for 30 seconds.

Use your station’s assigned destination, not the TCP stream address. Forward only locally received AIS, not data from another aggregation service.

3 Meet the feed checks

The default 15-minute window requires at least 20 samples, 95% valid messages, 25% AIS position reports among valid messages, and four valid messages per minute. Deployments can tune these values; the station status in your account is authoritative. After a service restart, eligibility fails closed and is rebuilt from a fresh quality window.

4 Receive the stream

Add the public source IP of your client to the allowlist, then connect to TCP port 9000. Messages from your own stations are excluded and accepted messages are emitted as CRLF-delimited NMEA.

nc connect.open-ais.com 9000

Vessel tracking API — in progress

Current-position and historical vessel queries are in development. The planned API will provide the latest reported positions and historical tracks, with one month of retention for data collected after you join. Public query endpoints are not yet available; use the live NMEA feed for access today.

Forward from AIS Dispatcher

Add Open AIS as another UDP destination in your existing AIS Dispatcher setup. Keep your receiver input and other destinations unchanged. First, register your station and copy its assigned destination:

Host: <assigned-host>
UDP port: <assigned-port>

Linux or Raspberry Pi

  1. Open your Dispatcher’s web interface, normally http://<dispatcher-host>:8080, and sign in. Change the default password if you have not already done so.
  2. Open Configuration → Output and add your assigned host and UDP port alongside your existing destinations.
  3. Under Settings, leave Tag off for plain NMEA output and set Downsampling time to 0 to forward reports without downsampling. Make sure Enabled is selected, then save.

Windows

Open Configuration → Output → UDP Output. Add and enable a destination using your assigned host and port. Avoid destination filters that remove position reports, and save your changes.

Check incoming activity in your Open AIS account. If nothing arrives, verify the destination and outbound UDP access. Forward your own receiver’s feed, not another service’s aggregate stream.

Forward from AIS-catcher

Already running AIS-catcher? Add a UDP output without replacing your existing receiver or destination settings. Replace the placeholders below with your station’s assigned host and port.

AIS-catcher -u <assigned-host> <assigned-port>

This minimal example uses the default NMEA format. For an existing service, append the -u option to its command or add the output to its configuration; do not start a second process on the same radio. Repeated -u options keep other destinations connected.

In managed mode, open Output, add a UDP destination, enter your assigned host and port, and select NMEA output. Save and restart the receiver. Do not select JSON or tagged NMEA for Open AIS.

Forward from docker-shipfeeder

Add Open AIS to UDP_FEEDS in your existing shipfeeder service. Merge this fragment into its Compose environment; keep its image, devices, volumes, and other settings.

environment:
  UDP_FEEDS: "<assigned-host>:<assigned-port>"

If UDP_FEEDS already has destinations, append yours with a comma. If your Compose file uses UDP_FEEDS=${SX_UDP_FEEDS}, update SX_UDP_FEEDS in its environment file instead. Keep the default NMEA output.

docker compose up -d <service-name>

Replace <service-name> with the existing shipfeeder service name. Recreate it to apply the environment change; a restart alone does not update environment variables. Check incoming activity in your Open AIS account.

Other UDP, TCP & serial receivers

Open AIS accepts UDP NMEA input. For a receiver with native UDP forwarding, set its destination to your assigned host and port. Send plain AIS NMEA sentences, not JSON or NMEA 2000 frames.

A receiver exposing NMEA over TCP

Use AIS-catcher to read your receiver’s local TCP server and forward it over UDP. The txt:// prefix selects NMEA text rather than SDR sample data.

AIS-catcher -t txt://<receiver-host>:<receiver-port> -u <assigned-host> <assigned-port>

A serial or USB NMEA receiver

Match the baud rate and device path to your receiver. This example uses 38400 baud:

AIS-catcher -e 38400 /dev/ttyUSB0 -u <assigned-host> <assigned-port>

If another process owns the serial device, add an output there or use a multiplexer rather than opening it twice.

Delivery semantics

The aggregate stream is live-only: there is no history or replay. UDP arrival order is preserved after ingestion, but UDP itself can reorder or lose datagrams. A slow TCP reader is disconnected when it falls behind the bounded fanout buffer, so clients should reconnect with capped exponential backoff.

Service limits

The live NMEA stream has no history or replay, and the service has no uptime SLA. Your account shows your station’s connection details, incoming activity, and current access status.