MARITIME DOMAIN AWARENESS · WS1–WS5 SHIPPED

Maritime Domain Intelligence,
air-gapped, on one desktop.

3D Map Explorer fuses IHO-standard electronic charting, satellite & terrestrial AIS, Signal K own-ship telemetry, radar and air tracks, SAR/optical imagery exploitation, and a coverage-aware dark-vessel detection chain into a single Common Operating Picture — with anomaly analytics, evidence adjudication, and port-call inference. No cloud. No data leaving the machine.

S-57 ENC · IENC · AML S-100 S-102 · S-104 · S-111 AIS ITU-R M.1371 in-house decoder Signal K own-ship telemetry TAK CoT in/out DDIL by design
65+
REST / SSE endpoints
560+
Maritime tests green
3,700
World Port Index ports
11
Deterministic AIS rules
30 days
Track archive (default)
100%
On-device processing
One picture, three mission functions

COP · SA · C3 on a single seat

Maritime operators juggle a chart viewer, a track table, an imagery workbench, a comms client, and a feed manager — stovepiped tools that don't share a picture. 3D Map Explorer collapses the stack into one Common Operating Picture that serves Situational Awareness and Command, Control & Communications from the same local server.

🗺️

Common Operating Picture

COP

Every source, one living map — charted, styled, and queryable.

  • S-57 ENC / IENC / AML vector charting via GDAL → GeoPackage → MVT tiles
  • S-52-inspired rendering — 41 original SVG symbols, 96 class entries, safety-contour shading
  • S-100 dynamic products — S-102 bathymetry, S-104 water level, S-111 surface currents
  • Fused track picture — AIS + radar (ASTERIX) + air (ADS-B) + TAK CoT + RemoteID
  • 3D globe with terrain, viewsheds, and time-aware replay
👁️

Situational Awareness

SA

From raw feeds to adjudicated, calibrated anomaly events.

  • Coverage-aware dark-gap judging — satellite vs terrestrial receiver decay modeled per vessel
  • Dark-vessel chain — SAR/EO detection → JPDA association → evidence fusion
  • 11 deterministic rules — speed caps, jumps, replay, land-intersection, identity conflicts
  • Composite activities — dark-period, rendezvous/STS, loiter, dark-rendezvous chains
  • Registry & sanctions — OFAC SDN + EU consolidated watchlists
📻

Command, Control & Communications

C3

Alerts, adjudication, and interoperability out of the analyst's way.

  • SSE alert streams — anomalies, activities, port calls pushed live
  • Analyst adjudication — confirm / reject / escalate / relabel with evidence provenance
  • TAK / CoT bridges — AIS→CoT and dark-vessel CoT publish to the tactical net
  • Open APIs — OGC Features, MVT, FeatureServer/ImageServer facades, DuckDB analytics
  • HQ-to-boat pairing — Field Sentinel afloat, marine_server / Signal K seam
The headline capability

The air-gapped dark-vessel detection chain

Vessels that go dark on AIS are the hardest maritime problem — and the domain of cloud analytics suites and billion-dollar primes. 3D Map Explorer runs the full chain — detect → associate → fuse → adjudicate — on a single air-gapped workstation, benchmarked code-verified against nine commercial and defense competitors.

01

Detect

YOLOv8-OBB / RT-DETR vessel detection over Sentinel-1 SAR and Sentinel-2 / Landsat / Planet optical. CFAR fallback when weights are absent; Satlas secondary detector.

02

Associate

AIS reports ↔ imagery detections via Mahalanobis gating, Hungarian assignment, and full JPDA — the same math the enterprise fusion engines use.

03

Fuse

Evidence fusion composes AIS + SAR/EO + receiver coverage + sensor detectability into calibrated confidence tiers. Missing modality = zero evidence, never a guess.

04

Adjudicate

Analyst evidence drawer: cost decomposition, provenance, counter-evidence. Confirm / reject / escalate / relabel — every decision persisted to the GPKG evidence store.

Coverage-aware by design. Satellite AIS receivers see a vessel every ~3 hours; terrestrial every ~6 minutes — a 30× difference in expected gap length. Every report is stamped with its receiver's coverage class, so a fishing boat beyond terrestrial range isn't flagged "dark" for the crime of being offshore. It's the difference between anomaly detection and noise generation.
Charting & hydrography

IHO-standard charting, in-process

Chart ingestion runs on embedded GDAL 3.13 — no external tools, no cloud tile services, nothing leaves the machine. Cells land in a GeoPackage, render as MVT vector tiles, and style through a Mapbox GL style endpoint the SDK consumes natively.

🧭

Vector — S-57 ENC

SHIPPED

Base cells plus update files (.001+), exchange sets, zips — applied automatically. Inland ENC (IENC) and NATO AML ride the same pipeline. One table per S-57 object class, verbatim attributes, light sectors and coverage derived.

S-57 .000 IENC AML NATO S-101 ISO 8211 reader
🌊

Dynamic — S-100 suite

SHIPPED

Time-aware dynamic products queryable by point and polygon: bathymetric surfaces register as COG + DEM; water level and currents expose value queries and vector-arrow overlays.

S-102 bathymetry S-104 water level S-111 currents BAG .bag
🖼️

Raster — BSB / KAP

SHIPPED

Raster nautical charts convert in-process and drape under the vector picture. DNC/VPF is architected behind a capability gate — drop in an OGDI-capable GDAL build and it lights up, with the capabilities endpoint always reporting the truth.

BSB/KAP .kap DNC/VPF — gated S-63 — sibling product
🎨

S-52-inspired portrayal

3 PALETTES

Original artwork (not the IHO PresLib): 41 master SVG symbols across 96 catalogued classes, safety/shallow/deep contour shading, soundings in meters/feet/fathoms, SCAMIN-derived zoom bands, and base ⊂ standard ⊂ other display categories.

DAY
DUSK
NIGHT
Real-time data fusion

Every feed, one track picture

An in-house ITU-R M.1371 AIS decoder (message types 1/2/3/5/18/24 with multi-fragment reassembly) sits at the center, fed by four receiver kinds — from a $30 software-defined radio to commercial satellite constellations. Latest state and full history persist to an on-device DuckDB archive; every vessel streams to the map over SSE.

aisstream.iocloud aggregator
Live global WebSocket feed with per-receiver coverage classification — bring an API key, get a world picture in seconds.
WSS
Kpler / Spiresatellite AIS
GraphQL connectors against the commercial constellations — cursor pagination, quota backoff, keys always masked. Offshore coverage where SDR can't reach.
GraphQL
Local SDRrtl_ais
Terrestrial AIS from a USB dongle — fully passive, fully offline, zero subscription. Ideal for port, coastal, and field deployments.
SDR
Remote TCPNMEA stream
Point at any existing NMEA AIS source — a base station, a bridge system, a relayed feed.
TCP
Signal K · Marine Serverown-ship gateway
Own-ship telemetry normalized from Signal K SI units: position, SOG/STW, COG, heading (true/magnetic), depth, apparent wind, water temperature, rudder angle, roll/pitch/yaw — plus AIS proxy, chart tiles, and OGC collections from the vessel edge.
REST · :5214
Radar · Air · FieldFusionTrack
ASTERIX CAT-048/062/021 radar tracks, ADS-B + APRS + RemoteID air picture, and TAK CoT blue-force positions fuse into one track table with pairwise CPA/TCPA conflict warnings.
UDP · SSE
Analytics & alerting

From tracks to judged intelligence

Detection is table stakes; explanation is the product. Every alert carries its evidence, its probability, and its provenance — and flows to the analyst through the same adjudication workflow, whether it fired from a deterministic rule or the fused evidence engine.

📏

Rules engine

11 RULES
  • Per-ship-type speed caps (ITU-R Table 50)
  • Impossible jumps & future timestamps
  • Stale-burst / replay detection
  • Land-intersection & nav-status conflicts
  • Course/heading mismatch, turn rate
  • Duplicate MMSI & duplicate transmission
🤝

Composite activities

5 TYPES
  • Dark periods, scored by coverage class
  • Rendezvous / STS: CPA < 500 m ∧ rel-speed < 3 kn
  • Loitering by radius & duration
  • Suspected ship-to-ship transfer
  • Dark rendezvous — dark-gap chains into a meeting (3 nm / 6 h window)
🛰️

Identity & spoofing

6 TIERS
  • One-MMSI-two-places identity conflicts
  • Ghost-AIS candidates, calibrated tiers
  • Brier score + ECE calibration reporting
  • Confidence: Information → Low → Medium → High → Ghost
  • Honest abstain when a modality is missing

Port calls & ETA

WS5

NGA World Port Index (~3,700 ports) drives an arrival/departure state machine — AtSea → Approaching → InPort → Departed — with dwell time, visit confidence, and voyage timelines. ETA is dead-reckoned with a COG-cone ±30° confidence and destination fuzzy-matching (LOCODE + Levenshtein).

Archive & replay

1×–300×

A persistent 30-day (configurable) AIS history with an investigation timeline: dual-handle scrubber, variable-speed playback, area/vessel/time query, and CSV / GeoJSON export for the report or the prosecutor.

📋

Registry & sanctions

OFAC + EU

A vessel-particulars registry in GeoPackage: operator file import (CSV/JSON), OFAC SDN and EU consolidated sanctions lists, AIS Type 5/24 auto-accumulation, and MMSI+IMO watchlist joins that enrich the live vessel table and the evidence drawer.

Advanced visualization & analysis

A geospatial exploitation desktop, not a dashboard

The maritime picture rides on a full imagery-intelligence workstation: an ArcGIS Maps SDK 5.x 3D globe with global terrain, and an analysis stack no maritime SaaS competitor ships on a laptop.

🌍

3D globe & terrain

SceneView with DEM terrain, quantized meshes, 3D Tiles, I3S, point clouds — and dynamic 2D projected views (polar stereographic, gnomonic, LCC) for theater-scale pictures.

📡

SAR & InSAR suite

Sentinel-1 amplitude with speckle filtering, full interferometric chains (SNAP + SNAPHU) producing displacement COGs, SICD reads for commercial SAR, Pauli decompositions.

🎬

Full-motion video

FMV/KLV exploitation: metadata parsing, mosaicking, telestration, and continuous AI object detection across drone and surveillance feeds.

🔍

Spectral & detection

ImageServer with spectral indices, supervised/unsupervised classification (SAM, MaxLik, k-means, RF/SVM/XGBoost), change detection, and OBIA segmentation.

⛰️

Terrain analysis

3D mesh viewsheds, line-of-sight, BVLOS corridors, range rings/fans, elevation profiles — coastal sensor-site and watcher-position problems solved on-device.

🧮

Grid & coordinates

MGRS, GARS, USNG, UTM, DD/DMS with graticule overlays and gridded-reference-graphic builders — the defense-coordinate suite, built in.

Integrations & APIs

Open at every seam

Sixty-five REST/SSE endpoints across four API families — every one serving the same local truth. If your system speaks OGC, MVT, CoT, GeoJSON, or plain SQL, it already integrates.

/api/maritime/*
25
anomalies · activities · registry · ports · port calls · ETA
GET /anomalies/events → SSE stream
/api/marine/*
17
chart import · tiles · style · sprites · identify · S-100
GET /tiles/{z}/{x}/{y}.pbf → MVT
/api/ais/*
13
vessels · receivers · replay · export · coverage
GET /vessels/events → SSE stream
/api/signalk/*
10
own-ship · AIS proxy · charts · OGC collections
GET /ownship → normalized telemetry
🗯️

TAK / CoT interop

Full TAK client (STOMP mTLS + UDP multicast) with purpose-built bridges: AIS vessels published as CoT markers, dark-vessel High/GhostAisHigh tier alerts pushed to the tactical net — opt-in, throttled per MMSI.

🛥️

Field Sentinel pairing

HQ-to-boat by design: 3D Map Explorer as the shore exploitation seat, Field Sentinel afloat as the offline-first ECS with S-63 charts, SAR patterns, and boarding-report forms — bridged over the marine_server / Signal K seam (integration in final testing).

🛰️

Imagery tasking

STAC catalog search plus SkyWatch, SkyFi, Planet, and Copernicus CDSE tasking — bring your own keys, pull tasked imagery straight into the detection chain. Fully optional; fully offline without it.

🗄️

DuckDB analytics hub

Every archive, chart package, and evidence store is queryable through an in-process DuckDB spatial hub — SQL joins across AIS history, charts, and detections without exporting anything.

🌐

OGC & Esri facades

OGC API Features/Records, MVT tiles, FeatureServer and ImageServer facades — QGIS and ArcGIS Pro connect to the live maritime picture as just another GIS service.

📦

Evidence as GeoPackage

Anomalies, activities, registry, and ports persist as valid GeoPackages — open in any GIS, archived by any standard backup, admissible as structured data.

Where we win — code-verified

Benchmarked against the field

Scored against nine maritime-intelligence vendors — Kongsberg, Systematic SitaWare, Windward, Spire/Kpler, HawkEye 360, Esri, Palantir, Thales — in a living capability matrix where every 3D Map Explorer claim maps to inspected code, not marketing.

CapabilityCloud SaaS analyticsDefense primes3D Map Explorer
Dark-vessel detection chain on one air-gapped seatCloud onlyProgram scale & price✅ Detect → JPDA → fusion → adjudication
SAR + optical vessel detection, on-deviceBuys detectionsEnterprise only✅ YOLO/CFAR over Sentinel-1/2, Landsat, Planet
Coverage-aware AIS gap scoringUndocumented✅ Per-receiver satellite/terrestrial/mixed decay
AIS spoofing / identity-manipulation detectionUndocumented✅ IdentityConflict + 11-rule engine
Analyst adjudication workflowAllSource-class seats✅ Evidence drawer, persisted decisions
ENC + S-100 charting built inNoneS-57 display✅ S-57/IENC/AML + S-102/104/111 + BSB
3D globe + terrain + viewshedNoneLimited✅ Full IMINT stack
TAK / CoT tactical interopNoneStovepiped links✅ CoT in/out + AIS & dark-vessel bridges
Air-gapped / DDIL operationSaaS only✅ By design — everything local
Single-seat licensing$10s–100s k/yrProgram contracts✅ One desktop license
Delivery cadence

Shipped workstreams, honest roadmap

Five workstreams shipped in 2026, each behind a review gate and a dedicated test suite. The roadmap ahead is public, specific, and tracked in the capability matrix — including the gaps we choose not to paper over.

WS1 — Satellite & cloud AIS connectors

SHIPPED · 97 TESTS

aisstream.io WebSocket + Kpler/Spire GraphQL receiver kinds, key masking, persisted receivers, coverage-class per receiver.

WS2 — Vessel registry, watchlist & sanctions

SHIPPED · 41 TESTS

GeoPackage registry, OFAC SDN + EU consolidated importers, AIS Type 5/24 auto-accumulation, MMSI+IMO watchlist joins, live enrichment.

WS3 — Persistent archive & replay

SHIPPED · 90 TESTS

30-day archive with retention guards, replay query API, timeline panel with 1×–300× playback, CSV/GeoJSON export.

WS4 — Composite activity engine

SHIPPED · 98 TESTS

Five activity types including the dark-gap → rendezvous composite, 24-hour rolling windows, SSE alerting, adjudication.

WS5 — Port-call inference & ETA

SHIPPED · 106 TESTS

NGA World Port Index store, arrival/departure state machine with hysteresis, dwell + confidence, dead-reckoning ETA with COG-cone, voyage timelines, ports overlay.

Deployment

Built for the worst network you'll ever use

A single .NET 10 Windows application with an in-process geospatial server. Every analysis, decoder, tile renderer, and detection model runs on the machine in front of you.

🔌

Air-gapped by design

No cloud dependency anywhere in the chain. Offline geocoding, local tiles, local models. Denied, disconnected, intermittent, and limited (DDIL) is the primary mode, not an afterthought.

💻

One seat, one license

Runs on a analyst laptop or a TOC workstation. No per-query pricing, no data egress, no vendor cloud seeing your picture.

🔐

Data sovereignty

Feeds, archives, evidence, and decisions persist locally as GeoPackages and DuckDB — standard formats, standard backup, no lock-in.

⚖️

Scale when you need it

A Helm chart exists to scale the dark-vessel backend (fusion, track processing, GPU inference) to Kubernetes — for the day one seat becomes a program.

See it live

Watch a dark vessel get found.

Thirty-minute guided demo: ingest an ENC cell, light up satellite AIS, replay a dark-gap, run the detection chain, and adjudicate the evidence — all on one machine, disconnected.