> ## Documentation Index
> Fetch the complete documentation index at: https://docs.altnautica.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Developers

> Build plugins and extensions for ADOS Mission Control and the ADOS Drone Agent.

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.

<CardGroup cols={3}>
  <Card title="Python (agent)" icon="python" href="/developers/sdk-python">
    `ados.sdk`. Driver traits, vision client, and the test harness for
    an agent half written in Python.
  </Card>

  <Card title="Rust (agent)" icon="rust" href="/developers/sdk-rust">
    The `ados-sdk` crate. The same agent surface in Rust, compiled to a
    native binary that runs directly under systemd.
  </Card>

  <Card title="TypeScript (GCS)" icon="js" href="/developers/sdk-typescript">
    `@altnautica/plugin-sdk`. The browser-side SDK for a GCS half that
    mounts UI panels in Mission Control.
  </Card>
</CardGroup>

## 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](/developers/concepts) for how the four fit together.

## Where to start

<CardGroup cols={2}>
  <Card title="Quickstart" icon="rocket" href="/developers/quickstart">
    Scaffold a plugin and see it running in five minutes.
  </Card>

  <Card title="Your first plugin" icon="code" href="/developers/your-first-plugin">
    Full walkthrough using the Battery Health Panel as the worked example.
  </Card>

  <Card title="Manifest" icon="file-code" href="/developers/manifest">
    Every field. Every permission. The schema the host enforces.
  </Card>

  <Card title="Permissions" icon="lock" href="/developers/permissions">
    The capability taxonomy and the four-level risk badge.
  </Card>
</CardGroup>

## 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](/developers/distribution-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](https://opensource.org/licenses) works.
Closed-source plugins are allowed; they just cannot link against
ADOS GPL code at the source level.
