Skip to main content
A plugin lets you add code, hardware drivers, UI panels, and behaviors to ADOS without forking the core projects. One manifest, signed, gets installed on a drone and a ground station; from there it runs in isolation with explicit capability grants.

Two halves, one plugin

A single manifest.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.
The host gates every privileged call against the manifest. A plugin that did not declare 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>.adosplug on the agent.
  • URL. Install from a hosted archive (for example a GitHub Releases asset) through the Mission Control install dialog.
The hosted plugin registry is not live yet. Until it ships, GitHub Releases is the recommended publishing channel. See distribution and local install.

License

Plugins are independent of the ADOS core projects. We recommend GPL-3.0-or-later to match the host, but any OSI-approved license works. Closed-source plugins are allowed; they just cannot link against ADOS GPL code at the source level.