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

# Project Structure

> Directory maps and key files for both ADOS repositories.

# Project Structure

ADOS lives in two repositories. Both are open-source under GPLv3.

## ADOS Mission Control (GCS)

**Repository:** [github.com/altnautica/ADOSMissionControl](https://github.com/altnautica/ADOSMissionControl)

**Stack:** Next.js 16, React 19, TypeScript, Zustand, Tailwind CSS, Leaflet, CesiumJS

```
ADOSMissionControl/
├── src/
│   ├── app/                        # Next.js App Router pages
│   │   ├── page.tsx                # Dashboard (home)
│   │   ├── command/                # Drone Command tab
│   │   ├── plan/                   # Mission Planning tab
│   │   ├── simulate/               # Simulation tab (Cesium 3D preview/replay)
│   │   ├── config/                 # App configuration
│   │   ├── pair/                   # Add-a-node local pairing flow
│   │   ├── flight-logs/            # Flight log review
│   │   ├── hud/                    # Standalone HUD (kiosk mode)
│   │   ├── community/              # Changelog, roadmap, kanban
│   │   └── api/                    # Route handlers (auth, LAN-pairing proxy)
│   │
│   ├── components/                 # React components
│   │   ├── command/                # Command tab components
│   │   ├── fc/                     # Flight controller config panels (60+ panels)
│   │   ├── drone-detail/           # Per-drone detail tabs (overview, parameters, configure, ...)
│   │   ├── planner/                # Mission planning components
│   │   ├── simulation/             # Simulation components
│   │   ├── hardware/               # Ground station Hardware tab
│   │   ├── map/                    # Leaflet map layers
│   │   ├── hud/                    # HUD overlay widgets
│   │   ├── plugins/                # Plugin host and UI slots
│   │   ├── vision/                 # Vision engine UI
│   │   ├── fleet/                  # Fleet sidebar and drone cards
│   │   ├── dashboard/              # Dashboard panels and drone-detail tab descriptors
│   │   ├── shared/                 # Shared components
│   │   └── ui/                     # Shared UI primitives
│   │
│   ├── stores/                     # Zustand state stores (more than 70 files)
│   │   ├── telemetry-store.ts
│   │   ├── drone-manager.ts
│   │   ├── video-store.ts
│   │   ├── ground-station-store.ts
│   │   ├── settings-store.ts
│   │   ├── parameter-store.ts
│   │   └── ...
│   │
│   ├── lib/                        # Core libraries
│   │   ├── protocol/               # MAVLink + MSP protocol layer
│   │   │   ├── mavlink-parser.ts   # Streaming v1/v2 parser
│   │   │   ├── mavlink-adapter.ts  # MAVLinkAdapter (83 decoders)
│   │   │   ├── msp-adapter.ts      # MSPAdapter (34 decoders, 21 encoders)
│   │   │   ├── drone-protocol.ts   # DroneProtocol interface
│   │   │   ├── mavlink-constants.ts # Sensor-status maps and parsing
│   │   │   ├── mavlink-crc-extra.ts # CRC_EXTRA, payload lengths
│   │   │   └── encoders/           # 8 encoder modules
│   │   ├── video/
│   │   │   ├── webrtc-client.ts    # WHEP + P2P MQTT WebRTC
│   │   │   └── mse-player.ts       # MediaSource fallback
│   │   ├── agent/                  # Local-first pairing client + capability inference
│   │   ├── plugins/                # GCS plugin capabilities and slot registry
│   │   └── utils/
│   │
│   ├── hooks/                      # Custom React hooks
│   │   ├── use-panel-params.ts     # Parameter read/write for panels
│   │   ├── use-visible-tabs.ts     # Capability-driven tab visibility
│   │   └── use-ground-station-subscriptions.ts
│   │
│   ├── mock/                       # Demo-mode mock engine + 7 simulated drones
│   │
│   └── ... (locales live at the repo root)
│
├── locales/                        # i18n translations (16 languages)
│   ├── en.json
│   ├── hi.json
│   ├── ja.json
│   └── ...
│
├── convex/                         # Convex backend (OSS standalone)
│   ├── schema.ts                   # auth tables plus custom application tables
│   ├── profiles.ts
│   ├── communityChangelog.ts
│   ├── cmdDroneStatus.ts           # Cloud relay drone status
│   ├── cmdDroneCommands.ts         # Cloud relay command queue
│   └── ...
│
├── tools/
│   ├── sitl/                       # ArduPilot SITL launcher + TCP-to-WS bridge
│   ├── mqtt-bridge/                # Mosquitto + MQTT-to-Convex bridge (Docker)
│   └── video-relay/                # RTSP-to-fMP4 relay (Docker)
│
├── public/                         # Static assets
├── electron/                       # Electron wrapper for desktop builds
├── package.json
├── next.config.ts
├── tailwind.config.ts
└── tsconfig.json
```

### Key files to know

| File                                  | What it does                                                                |
| ------------------------------------- | --------------------------------------------------------------------------- |
| `src/lib/protocol/drone-protocol.ts`  | The interface every protocol adapter implements                             |
| `src/lib/protocol/mavlink-adapter.ts` | MAVLink v2 adapter with 83 decoders and 33 command handlers                 |
| `src/lib/protocol/msp-adapter.ts`     | MSP adapter for Betaflight with 34 decoders and 105 virtual params          |
| `src/stores/drone-manager.ts`         | Central coordinator between protocol and stores                             |
| `src/stores/telemetry-store.ts`       | Ring-buffered telemetry with attitude, GPS, battery history                 |
| `src/lib/video/webrtc-client.ts`      | WHEP and P2P MQTT WebRTC client                                             |
| `src/hooks/use-panel-params.ts`       | Universal parameter hook used by every flight controller config panel (60+) |
| `src/stores/settings-store.ts`        | Persisted user settings                                                     |
| `convex/schema.ts`                    | Convex database schema for the OSS standalone backend                       |

## ADOS Drone Agent

**Repository:** [github.com/altnautica/ADOSDroneAgent](https://github.com/altnautica/ADOSDroneAgent)

**Stack:** Rust (Cargo workspace, tokio, axum) plus Python 3.11+ (FastAPI, structlog), systemd-managed. The long-running and safety-critical services are Rust binaries in `crates/`; Python handles AI and vision, the plugin runtime, setup, HAL detection, and the residual web API.

```
ADOSDroneAgent/
├── crates/                         # Rust services and shared libraries (Cargo workspace lives here)
│   ├── ados-supervisor/            # Process orchestrator: gates and supervises the systemd units
│   ├── ados-mavlink-router/        # FC serial link, MAVLink IPC fan-out, vehicle-state snapshot
│   ├── ados-control/               # Native HTTP front on :8080 (status/pairing/command API)
│   ├── ados-cloud/                 # Cloud relay: heartbeat push, command poll, MQTT + WebRTC signaling
│   ├── ados-video/                 # Video pipeline: ffmpeg / MediaMTX / wfb_tee supervisor
│   ├── ados-radio/                 # WFB-ng TX manager: monitor mode, FHSS hop, watchdogs (drone)
│   ├── ados-groundlink/            # WFB receive, channel acquisition, video fan-out, mesh (ground)
│   ├── ados-net/                   # Ground-station uplink matrix: priority failover + health probe
│   ├── ados-display/               # OLED / SPI-LCD render engine, drivers, boot-time probe
│   ├── ados-hid/                   # Touch calibration, PIC arbiter, button + gamepad daemons
│   ├── ados-gpio/                  # GPIO output substrate (buzzer / LED, software PWM)
│   ├── ados-vision/                # Vision host: frame rings, model registry, plugin bridge
│   ├── ados-plugin-host/           # Plugin RPC host: per-plugin socket + capability-token gating
│   ├── ados-logd/                  # Durable SQLite log + telemetry store, queryable on :8090
│   ├── ados-macpin/                # Stable-MAC pinning for adapters that randomize each boot
│   ├── ados-hal-probe/             # Probe-first hardware-capability detection
│   ├── ados-protocol/              # IPC wire contracts: framing, plugin RPC, vehicle-state codec
│   ├── ados-capabilities-codegen/  # Generates the capability catalog (Python/Rust/TS) from capabilities.toml
│   ├── ados-sdk/                   # Rust plugin-author SDK (IPC client, driver traits, runner)
│   ├── ados-installer/             # Step-graph installer that turns a fresh SBC into a paired agent
│   └── ados-tui/                   # Terminal dashboard launched by `ados` with no subcommand
│
├── src/
│   └── ados/                       # Python: AI/vision, plugin runtime, setup, HAL, residual API
│       ├── __init__.py             # Version (single source of truth)
│       ├── core/                   # IPC helpers, config models, identity, pairing, health probe
│       ├── services/               # Python-backed units and driver/manager glue
│       │   ├── api/                # Residual FastAPI (internal socket, behind ados-control)
│       │   ├── health/             # CPU / RAM / temperature monitor
│       │   ├── peripherals/        # USB and sensor manager
│       │   ├── discovery/          # mDNS advertisement
│       │   ├── ground_station/     # Ethernet, WiFi-client, modem managers
│       │   ├── setup_webapp/       # First-boot setup and captive portal
│       │   └── ...
│       ├── api/
│       │   ├── runtime.py          # API runtime facade
│       │   └── routes/             # FastAPI route modules (config, pairing, plugins, ...)
│       ├── hal/
│       │   └── boards/             # Board profile YAMLs (17 profiles)
│       ├── plugins/                # Plugin manifest, signing, IPC (Python plugin runtime)
│       ├── sdk/                    # Python plugin-author SDK (driver, vision, testing)
│       ├── setup/                  # Universal setup facade and models
│       ├── cli/                    # Click CLI (ados, status, update, ...)
│       └── bootstrap/
│           └── profile_detect.py   # Hardware fingerprint scoring
│
├── data/
│   └── systemd/                    # All systemd unit files (~39 units)
│       ├── ados-supervisor.service
│       ├── ados-mavlink.service
│       ├── ados-control.service
│       ├── ados-api.service
│       ├── ados-cloud.service
│       ├── ados-logd.service
│       ├── ados-video.service
│       ├── ados-wfb.service
│       ├── ados-hostapd.service
│       ├── ados-oled.service
│       └── ...
│
├── scripts/
│   ├── install.sh                  # One-line installer bootstrap (fetches the Rust installer)
│   ├── drivers/                    # Out-of-tree driver build helpers
│   └── ...
│
├── docs/
│   ├── oem/                        # Integrator deployment and provisioning notes
│   └── ground-station/             # Ground station reference
│
├── pyproject.toml
├── README.md
└── CONTRIBUTING.md
```

### Key files to know

| File                                     | What it does                                                                     |
| ---------------------------------------- | -------------------------------------------------------------------------------- |
| `src/ados/__init__.py`                   | Version string used by package metadata, API status, and setup status            |
| `crates/ados-supervisor/src/registry.rs` | The service catalog: profile gates, role gates, and the circuit breaker          |
| `crates/ados-mavlink-router/`            | Reads FC serial, fans MAVLink to `/run/ados/mavlink.sock`, serves the `:8765` WS |
| `crates/ados-control/`                   | The native HTTP front on `:8080`                                                 |
| `crates/ados-video/`                     | Camera encode and MediaMTX supervision (drone)                                   |
| `src/ados/api/runtime.py`                | Residual FastAPI runtime facade, reached behind the Rust front                   |
| `src/ados/bootstrap/profile_detect.py`   | Score-based hardware fingerprint for air vs ground                               |
| `src/ados/hal/boards/*.yaml`             | Board-specific GPIO, UART, video, and navigation config                          |
| `scripts/install.sh`                     | The one-line installer bootstrap                                                 |

## Config files on a deployed system

| Path                          | Purpose                                                   |
| ----------------------------- | --------------------------------------------------------- |
| `/etc/ados/config.yaml`       | Main agent configuration (profile, cloud, network, video) |
| `/etc/ados/profile.conf`      | Detected profile with fingerprint snapshot                |
| `/opt/ados/bin/`              | Installed Rust service binaries                           |
| `/opt/ados/venv/`             | Installed Python virtual environment                      |
| `/run/ados/mavlink.sock`      | Runtime MAVLink IPC socket                                |
| `/run/ados/state.sock`        | Runtime JSON telemetry socket                             |
| `/run/ados/api-internal.sock` | Internal FastAPI socket behind the Rust front             |
| `/var/ados/logd/logs.db`      | Durable log and telemetry store (`ados logs query`)       |

## What is next

* [Contributing Guide](/architecture/contributing-guide) for how to add features to both repos
* [Agent Services](/architecture/agent-services) for the systemd architecture
* [MAVLink Protocol](/architecture/mavlink-protocol) for the protocol layer
