> ## 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.

# Rust crates

> ADOS libraries on crates.io: what each does, how to add it, and how they are versioned.

The ADOS Drone Agent publishes its reusable Rust code as separate crates on crates.io. All of them live in the [`crates/` workspace](https://github.com/altnautica/ADOSDroneAgent/tree/main/crates#published-crates) of the agent repository. The platform crates speak the agent's wire or read its board profiles; the standalone crates have no ADOS dependency and work in any project.

**Platform (versioned with the ADOS Drone Agent)**

| Crate | What it does | Add it | Docs |
| - | - | - | - |
| [`ados-protocol`](https://crates.io/crates/ados-protocol) | Wire contracts of the ADOS Drone Agent: IPC framing, plugin RPC envelope, capability tokens and the vision frame bus. | `cargo add ados-protocol` | [docs.rs](https://docs.rs/ados-protocol) |
| [`ados-sdk`](https://crates.io/crates/ados-sdk) | Write Rust plugins for the ADOS Drone Agent: IPC client, plugin context, driver traits and lifecycle runner. | `cargo add ados-sdk` | [docs.rs](https://docs.rs/ados-sdk) |
| [`ados-vision`](https://crates.io/crates/ados-vision) | Single-object visual tracker: Kalman motion model, appearance re-identification and YOLOv8 head decoding. | `cargo add ados-vision` | [docs.rs](https://docs.rs/ados-vision) |
| [`ados-gpio`](https://crates.io/crates/ados-gpio) | Drive status buzzers and LEDs on Linux GPIO lines, with bounded software-PWM beep patterns. | `cargo add ados-gpio` | [docs.rs](https://docs.rs/ados-gpio) |
| [`ados-hal-probe`](https://crates.io/crates/ados-hal-probe) | Find out what a board's hardware can really do by probing it, plus bundled board profiles. | `cargo add ados-hal-probe` | [docs.rs](https://docs.rs/ados-hal-probe) |

**Standalone**

| Crate | What it does | Add it | Docs |
| - | - | - | - |
| [`ados-sensorhub`](https://crates.io/crates/ados-sensorhub) | Sensor hub wire protocol: COBS framing, CRC-16 and fixed-layout IMU, baro, mag and GNSS packets. no\_std. | `cargo add ados-sensorhub` | [docs.rs](https://docs.rs/ados-sensorhub) |
| [`ados-offload`](https://crates.io/crates/ados-offload) | Choose where perception runs (onboard, offloaded or hybrid) and hold the vehicle when results go stale. | `cargo add ados-offload` | [docs.rs](https://docs.rs/ados-offload) |
| [`ados-macpin`](https://crates.io/crates/ados-macpin) | Stable MAC addresses for Linux network adapters that randomize theirs every boot. | `cargo add ados-macpin` | [docs.rs](https://docs.rs/ados-macpin) |
| [`ados-lora`](https://crates.io/crates/ados-lora) | LoRa transmit governor with cited regional band plans, duty cycle, dwell time and airtime accounting. | `cargo add ados-lora` | [docs.rs](https://docs.rs/ados-lora) |
| [`ados-crsf-codec`](https://crates.io/crates/ados-crsf-codec) | no\_std CRSF / ExpressLRS codec for RC channels, telemetry and parameter frames. | `cargo add ados-crsf-codec` | [docs.rs](https://docs.rs/ados-crsf-codec) |
| [`ados-positioning`](https://crates.io/crates/ados-positioning) | Split mixed UBX, NMEA and RTCM3 GNSS streams, configure u-blox receivers and run an RTK base survey-in. | `cargo add ados-positioning` | [docs.rs](https://docs.rs/ados-positioning) |
| [`ados-rtcm`](https://crates.io/crates/ados-rtcm) | RTCM3 framing, CRC-24Q and MAVLink GPS\_RTCM\_DATA fragmentation for RTK corrections. | `cargo add ados-rtcm` | [docs.rs](https://docs.rs/ados-rtcm) |
| [`ados-clock`](https://crates.io/crates/ados-clock) | Map remote clocks onto the host clock: least-squares and envelope fits, TIMESYNC and a chrony sink. | `cargo add ados-clock` | [docs.rs](https://docs.rs/ados-clock) |
| [`ados-swarm`](https://crates.io/crates/ados-swarm) | Swarm control laws: separation, flocking, formations, CBBA task allocation and a point-mass simulator. | `cargo add ados-swarm` | [docs.rs](https://docs.rs/ados-swarm) |
| [`ados-mavlink-tunnel`](https://crates.io/crates/ados-mavlink-tunnel) | Send large messages over MAVLink TUNNEL frames with chunking and bounded reassembly. | `cargo add ados-mavlink-tunnel` | [docs.rs](https://docs.rs/ados-mavlink-tunnel) |
| [`ados-display-driver`](https://crates.io/crates/ados-display-driver) | Small-display output on Linux: SSD1306/SH1106 OLED over I2C, pixel packers and a framebuffer writer. | `cargo add ados-display-driver` | [docs.rs](https://docs.rs/ados-display-driver) |
| [`ados-hmi`](https://crates.io/crates/ados-hmi) | Front-panel input: touchscreen calibration and gestures, button presses and rotary encoders. | `cargo add ados-hmi` | [docs.rs](https://docs.rs/ados-hmi) |

## Versioning

* **Platform crates move in lockstep with the agent.** `ados-protocol`, `ados-sdk`, `ados-vision`, `ados-gpio` and `ados-hal-probe` carry the agent version, so `ados-sdk` X.Y.Z speaks the wire of agent X.Y.Z. Pin the major.minor of the agent you target.
* **Standalone crates follow their own semver.** They started at 0.1.0 and bump only when they change.

Any change to a published crate's packaged files ships with a version bump. To build an agent plugin, start with the [Rust SDK guide](/developers/sdk-rust).

## License

Every crate is licensed under either of Apache License 2.0 or MIT at your option, except `ados-sensorhub`, which is MIT. The agent services themselves stay GPL-3.0-or-later. See [Legal and licensing](/developers/legal-and-licensing).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.