By Muhammad Umar. This is the engineering summary of an open reference architecture. The paper, its object model as JSON and the model register are free to reuse under CC BY 4.0: https://codeatoms.ai/drone-detection-dispatch-port-germany/. DOI 10.5281/zenodo.23635729. The operator is described by class, never by name.
A maritime and ports authority in Germany already flies a docked drone network across two port sites. The drones launch on a schedule or on demand and land hours of video and still imagery every day, and nobody can watch all of it, so oil sheen drifts, persons cross restricted zones and fenders fail while the footage sits unreviewed. The question is simple: what is happening right now, where, and which named person should respond.
1. Detect where the pixels land
Hours of daily video cannot cross a dock uplink, and detection has to survive losing it. So the design does not stream video to central servers. A GPU-class edge box at each dock, running containers under K3s, takes the camera streams through MediaMTX for ingest and recording, runs RF-DETR per frame for moored vessels, buoys, persons, vehicles and gates, and runs the Roboflow trackers for motion and association, with no re-identification branch. Only detection events, evidence crops, telemetry and health signals cross the boundary. The edge box's silicon is fixed at the dock site survey, rated against salt air, wind and temperature.
2. Three tiers, one sizing line
The site server at each port site carries one to four air-cooled cards of the 48 GB PCIe class. OWLv2 runs zero-shot, open-vocabulary passes over selected frames for oil sheen, floating debris, smoke or vapour and damage cues, and Ministral 3 8B under vLLM triages the evidence crops and drafts the work item. At FP8, Ministral occupies about 12 GB, so one card holds the site models and more cards buy concurrency. The port's own data centre runs GLM 5.3 as the agentic work surface on one node of eight 141 GB HBM cards. The arithmetic: 753 billion parameters at FP8 is 753 GB of weights, the 1.2 planning factor for KV cache and activations makes it 904 GB, and the node holds 1,128 GB, leaving about 375 GB beside the weights.
3. One backbone, one clock
Every source enters through one integration adapter family that does schema mapping, provenance stamping and replay. Apache Kafka 4.3 in KRaft mode is the backbone: ordering per mission and asset key, at-least-once delivery, and writes into the object model keyed on mission and frame timestamps, so a replayed event creates no duplicate detection. The dock buffers events and recordings through an uplink loss and resynchronises when the link returns. InfluxDB 3 Core holds telemetry, Keycloak issues identities to named people in named roles, Harbor is the air-gapped artifact and model registry, an OCP Time Card grandmaster with linuxptp and chrony keeps frames, telemetry and vessel traffic on one clock, and Prometheus, Grafana and Loki turn a silent gap into an alarm.
4. Fifteen objects, fourteen links
The object model holds the Mission and Construction Work as events, Detection, Work Item, Flight Authorisation and Coverage Statement as records, Berth, Dock Station and Restricted Zone as sites, Vessel, Quay Asset and Drone as assets, Responder Role and Drone Operator as actors, and Weather Observation as a measure. A query walks from a Quay Asset to its Berths, the Vessels occupying them, the Construction Work recorded against it and the Detections confirmed on it in one traversal. A weather grounding publishes a Coverage Statement naming the detection classes it blinded, so silence is never read as safety. It is one of our industrial ontology examples, published as JSON.
5. A person decides, and the loop learns in memory
A Detection stays Proposed until a responder confirms, rejects or merges it. Every Work Item is acknowledged with reason codes, so acknowledge, ignore and action rates are measured from the first dispatch. Nothing is trained into weights: thresholds, routing and confidence bands live in memory over responder outcomes, which is also why the imagery, the weights and the detection history survive a change of drone operator. Four models are Apache-2.0 and GLM 5.3 carries a bespoke licence that permits internal use. The rollout is four phases and 20 scope items, and no detection class goes live below its floor measured on the port's own two pilot missions.
6. What it costs
Appendix A prices the central node and the two site servers at about 735,000 US dollars to own over three years (650,000 to 845,000), with power at the Eurostat non household tariff for Germany. Renting the same card classes on the deepest three-year commitment in AWS Europe is about 761,000, so ownership costs about the same, and about 2.02 million on demand, against which ownership costs about a third. Ownership is chosen for the boundary, not the price.
Designed on CodeNinja Praxis, the CodeNinja Atoms platform for designing physical AI systems. The object model imports into Hyper Ontology. Paper, ontology and register: https://codeatoms.ai/drone-detection-dispatch-port-germany/
One of the CodeNinja Atoms sovereign AI reference architectures: every published design with its sector, country, compute and three-year cost.
Top comments (0)