World Engine
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
workstationor acomputeprofile 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.
Install
The node installer offers the extension as a feature toggle. It is on by default for theworkstation and compute profiles and off for drone and
ground_station. Pass the flag to choose explicitly:
--no-world-engine skips it. An upgrade (--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 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.
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
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 withoffload.compute_node_addr.
How keyframes travel
The drone forwards keyframes over the best bearer it has, in this order:- LAN. Straight to the compute node on
:8092. - Radio relay. Over the radio link’s auxiliary stream to a ground station
in the
relayrole, which forwards onto its own LAN. This lane carries pose and status only. - Cloud relay. Through the agent’s cloud connection.
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.
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
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,torchandtransformersfor an optional monocular-depth seed. Without it, splat training starts from a random point cloud. - ffmpeg for perception offload.
Mission Control pages
The extension adds these pages to the node detail panel.Permissions
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.