record_id, chunk_id, bitemporal fields, confidence_score, provenance) and carries the join keys documented below.
Dataset-specific fields
Vessel identity
| Field | Type | Nullable | Description |
|---|---|---|---|
imo | integer | yes | IMO number (7-digit). Primary vessel identifier per IMO A.600(15). |
mmsi | string | yes | Maritime Mobile Service Identity (9-digit). Fallback identifier. |
vessel_name | string | yes | Vessel name (max 20 ASCII characters per AIS message 5). |
call_sign | string | yes | Radio call sign (max 7 characters). |
flag_state | string | yes | ISO 3166-1 alpha-3 country code. |
vessel_type | string | yes | Codex 6-category enum: container, tanker_crude, tanker_product, bulker, fishing, other. Raw ITU code preserved in metadata. |
dwt | numeric | yes | Deadweight tonnage in metric tonnes. |
length_oa | numeric | yes | Length overall in meters. |
beam | numeric | yes | Beam in meters. |
draught | numeric | yes | Draught in meters. |
Position and kinematics
| Field | Type | Nullable | Description |
|---|---|---|---|
lat | float | no | WGS84 latitude. |
lng | float | no | WGS84 longitude. |
speed | float | yes | Speed over ground in knots (0.1 kn resolution). |
course | float | yes | Course over ground in degrees (0.1° resolution). |
heading | float | yes | True heading in degrees (1° resolution). |
nav_status | string | yes | AIS navigation status (0–15). Codex emits both the numeric code and a human-readable label. |
rot | float | yes | Rate of turn in degrees per minute (decoded from AIS-coded ±127 value). |
timestamp | timestamptz | no | UTC timestamp of the position fix. |
h3_index | string | no | H3 resolution-8 cell derived from lat/lng. |
Codex enrichments
| Field | Type | Nullable | Description |
|---|---|---|---|
behavior_anomaly_flag | boolean | no | true when kinematic or behavioral anomaly detected (AIS gap, speed anomaly, or route deviation). |
port_event_id | UUID | yes | Links to the corresponding event in Events Timeline when the position falls inside a port polygon. |
beneficial_owner_urn | string | yes | Entity resolution link to the vessel’s beneficial owner. |
sanctioned_owner | boolean | yes | true when the beneficial owner appears on a sanctions list. |
Vessel types
The raw ITU vessel type code (0–99) is preserved inmetadata.itu_vessel_type_code. Codex normalizes vessels into six categories for consistent filtering:
| Category | Description |
|---|---|
container | Container ships |
tanker_crude | Crude oil tankers |
tanker_product | Product and chemical tankers |
bulker | Dry bulk carriers |
fishing | Fishing vessels |
other | All other vessel types |
Navigation status codes
| Code | Label |
|---|---|
| 0 | Under way using engine |
| 1 | At anchor |
| 2 | Not under command |
| 3 | Restricted maneuverability |
| 4 | Constrained by draught |
| 5 | Moored |
| 7 | Engaged in fishing |
| 8 | Under way sailing |
AIS positions in the Codex dataset are compressed to one per minute per vessel. In Overwatch, live positions are kept at full resolution for 7 days and then downsampled through progressive tiers. Both raw and compressed views are available depending on your tier.
Join keys
| Key | Presence | Notes |
|---|---|---|
record_id | always | APRS URN |
chunk_id | always | Deterministic from record_id |
imo | often | Primary vessel identity. Null for small craft without IMO numbers |
mmsi | always | Fallback vessel identity |
h3_index | always | H3 resolution-8 spatial key |
port_event_id | sometimes | Links to Events Timeline for in-port positions |
beneficial_owner_urn | sometimes | Entity resolution link to beneficial owner |
Example query
Find vessels flagged as anomalous near a specific port in the last 30 days:Known limitations
imois null for small craft, fishing vessels, and some flag-of-convenience registrations. Usemmsias a fallback.vessel_typenormalization collapses 99 ITU codes into 6 categories — checkmetadata.itu_vessel_type_codewhen you need the original classification.beneficial_owner_urnis populated by the entity resolution pipeline and may be null for recently ingested positions.- Position compression (1-per-minute) means sub-minute maneuvers are not visible in the default view.