Skip to main content
The World Engine is a first-party extension, com.altnautica.world-engine. It is not part of the agent core: a node without it installed carries no world-model or compute code, service, route, config block or page. Install it where you want it and every piece arrives together. It does two jobs:
  • World models. A drone selects pose-tagged keyframes from its camera stream and sends them to a compute node on the same network (a workstation or a compute profile node). The node reconstructs a Gaussian splat, a point cloud, a mesh and an occupancy grid, and Mission Control views the result live and after the flight.
  • Perception offload. A drone with no on-board accelerator streams its camera to the compute node, the node runs the detector, and the detections return to the drone’s own detection bus. Follow-Me, the gimbal and the cockpit overlay work unchanged. A stale or link-lost detection is treated as lost, never extrapolated.
The heavy products (splat training, meshes, high-resolution clouds) are built on the compute node. With a planar LiDAR the drone keeps only its navigation pose, a live occupancy map and a sweep point cloud whose resolution follows atlas.compute_placement (see Configuration).

Install

The node installer offers the extension as a feature toggle. It is on by default for the workstation and compute profiles and off for drone and ground_station. Pass the flag to choose explicitly:
--no-world-engine skips it. An upgrade leaves an installed extension alone; plugin auto-update keeps it current. On a node that is already installed, use the CLI. ados plugin install accepts the catalog id, a release URL or a downloaded archive:
The catalog id installs the version pinned in the agent’s bundled catalog; a release URL installs that exact release. The install prompt lists every permission the extension asks for. Because the extension is high risk, approve it interactively (--yes refuses it). You can also install it from the node’s Extensions page in Mission Control; see Install extensions from Mission Control.
The archive is small. The per-architecture binaries and the Rerun viewer’s wasm are install-time payloads: the agent downloads only the files for its own architecture and profile from the GitHub release, checks each against the sha256 and size pinned in the signed manifest, and refuses the install on any mismatch. The node needs outbound HTTPS to GitHub while it installs.
The extension is signed by the Altnautica first-party key. It needs that signer for three reasons: its Mission Control pages run as an inline module rather than in an iframe, its resource class is heavy, and on macOS the launchd backend enforces no sandbox. The agent refuses any of those from a third-party signer.

Supported nodes

A drone on an architecture the capture service does not ship for is refused with incompatible: no binary for <arch-os>, before anything is unpacked.

Service names

Each unit name carries the sanitized plugin id plus <hash>, eight hex characters derived from the plugin id. Declared services append their name.

Pair a drone with a compute node

Pair the drone and the compute node to the same Mission Control account, with the extension installed on both. Mission Control then issues the drone a credential scoped to the node’s lanes (keyframe ingest, the world-model stream, offload, artifacts and job submission) and installs it on the drone through the extension. A ground station is issued the ingest lane only. The compute node’s Jobs & outputs page lists these credentials and revokes them. The drone finds the compute node over mDNS, or you pin it with offload.compute_node_addr.

How keyframes travel

The drone forwards keyframes over the best bearer it has, in this order:
  1. LAN. Straight to the compute node on :8092.
  2. Radio relay. Over the radio link’s auxiliary stream to a ground station in the relay role, which forwards onto its own LAN. This lane carries pose and status only.
  3. Cloud relay. Through the agent’s cloud connection.
Forwarding starts only while capture is enabled and the camera pipeline reports ready.

Configuration

The extension keeps its configuration in the plugin config, not in /etc/ados/config.yaml. Read and write it from Mission Control’s setup pages, or over REST:
Capture re-reads its config every 5 seconds, so a change needs no restart.

Live navigation and map topics

Other extensions and the agent’s navigation API read these shared topics while the pose source runs: A planar LiDAR records into the session as a compact polar stream, and the planar-sweep reconstruction preset turns it into a point cloud, an occupancy map per height band and a floorplan without any camera. Vision Navigation turns the pose into ODOMETRY and the scan into OBSTACLE_DISTANCE for the flight controller, Follow-Me uses the scan as a range cue, and the agent serves the pose, scan, occupancy and map status to every operator surface through its navigation and map routes.

The extension’s HTTP API

The extension serves its own API through the agent’s plugin passthrough, /api/plugins/com.altnautica.world-engine/x/<path> on :8080. The normal pairing key applies, and the same path works through a ground station’s relay proxy.

On a drone

Capture states: idle, capturing, paused, finalizing, bagged. stop finalizes and bags the session, which is what makes the compute node reconstruct it.

On a ground station

GET atlas-relay/status returns the relay’s keyframes seen and forwarded.

On a compute node

The node service answers drones on its own :8092 listener, with the node credential for auth, and answers the operator through the passthrough. Job kinds are reconstruct (a world model from a keyframe bag), perception_offload (frames in, detections back) and slam_offload (frames in, poses back). A job moves queued, running, then completed, failed or cancelled. A worker runs the backend without holding the job-store lock, so a reconstruction that takes minutes never blocks the API, and a cancel that lands during the run wins. Job records also sync to the operator’s cloud account as the extension’s own records, so Mission Control can list past jobs when the node is offline.

Host tools on the compute node

The node calls reconstruction tools installed on the host. They are not shipped in the extension:
  • COLMAP for structure-from-motion poses and a sparse point cloud.
  • Brush or msplat (Apple Silicon) for Gaussian-splat training; nerfstudio (ns-train) also works.
  • Python 3 with numpy, Pillow, torch and transformers for an optional monocular-depth seed. Without it, splat training starts from a random point cloud.
  • ffmpeg for perception offload.
With no reconstruction backend installed, a job completes with a placeholder output that Mission Control badges as a placeholder and never shows as a real world model.

Mission Control pages

The extension adds these pages to the node detail panel.

Permissions

The agent and Mission Control halves together request: Permissions
  • button.subscribe
  • camera.control.write
  • capture.storage.write
  • cloud.publish
  • cloud.records
  • display.oled.page
  • event.publish
  • hardware.gpu
  • hardware.uart
  • mavlink.read
  • mcp.expose
  • network.listen
  • network.outbound
  • node.info.read
  • perception.read
  • radio.aux_stream
  • sensor.stream.read
  • sensors.rig.write
  • telemetry.extend
  • telemetry.read
  • telemetry.subscribe.status
  • ui.slot.node-agent-page
  • ui.slot.node-surface
  • video.whep.relay
  • vision.detection.publish
  • vision.frame.read
  • vision.offload.advertise
Boards: * The extension also declares plugin.world-engine.world.read, the capability another plugin needs to subscribe to its point cloud, occupancy, splat and mesh topics. See Permissions.

Next steps

Extensions catalog

All first-party extensions.

Node profiles

The drone, ground station, workstation and compute profiles.

Multi-camera

Camera sets on the drone.

Manifest reference

The fields the extension’s manifest uses.
Last modified on November 3, 2026