Two halves, one plugin
A singlemanifest.yaml declares up to two halves. Either half is
optional, so a plugin can ship agent-only, GCS-only, or both.
- Agent half runs as a supervised subprocess on the drone or ground
station, with cgroup-enforced CPU, RAM, and PID limits. It talks to
the host over a Unix domain socket using length-prefixed msgpack
frames, gated by an HMAC capability token. You write the agent half
in Python (
runtime: python) or Rust (runtime: rust). Both speak the same wire to the same host. - GCS half runs in a sandboxed iframe inside Mission Control:
sandbox="allow-scripts", no same-origin, no top-navigation. It talks to the host over postMessage with HMAC-signed capability tokens. You write the GCS half in TypeScript.
vehicle.command cannot send vehicle commands,
and the operator must approve each declared permission at install time.
Pick your SDK
Three SDKs cover the two halves and three languages. Each speaks the same capability-token wire to the same host, so the choice is about the language you want to write in, not a different runtime contract.Python (agent)
ados.sdk. Driver traits, vision client, and the test harness for
an agent half written in Python.Rust (agent)
The
ados-sdk crate. The same agent surface in Rust, compiled to a
native binary that runs directly under systemd.TypeScript (GCS)
@altnautica/plugin-sdk. The browser-side SDK for a GCS half that
mounts UI panels in Mission Control.The four primitives
Every plugin is described by four things: a manifest (what it is and what it asks for), a signature (who built it, verified before install), a sandbox (the isolation it runs inside), and a set of capability tokens (the only privileges it gets at runtime). Read concepts for how the four fit together.Where to start
Quickstart
Scaffold a plugin and see it running in five minutes.
Your first plugin
Full walkthrough using the Battery Health Panel as the worked example.
Manifest
Every field. Every permission. The schema the host enforces.
Permissions
The capability taxonomy and the four-level risk badge.
Distribution today
Plugin authors ship signed.adosplug archives. Two install channels
work today:
- Local file. Drag-drop the archive in Mission Control ->
Settings -> Plugins, or run
ados plugin install <file>.adosplugon the agent. - URL. Install from a hosted archive (for example a GitHub Releases asset) through the Mission Control install dialog.