Metadata-Version: 2.4
Name: mavio
Version: 0.9.1
Summary: async python mavlink
Author: Jeff Mattson
Author-email: Jeff Mattson <jam@jaggedmountain.com>
License-Expression: MIT
License-File: LICENSE
Requires-Dist: fastcrc>=0.3.6
Requires-Dist: pyserial-asyncio>=0.6
Requires-Dist: pyserial>=3.5
Requires-Dist: mavio[params,foxglove] ; extra == 'all'
Requires-Dist: foxglove-sdk>=0.26 ; python_full_version >= '3.10' and extra == 'foxglove'
Requires-Dist: mavio-params ; extra == 'params'
Requires-Python: >=3.8
Project-URL: Homepage, https://github.com/jaggedmountain/mavio
Project-URL: Repository, https://github.com/jaggedmountain/mavio
Project-URL: Documentation, https://github.com/jaggedmountain/mavio/tree/main/docs
Project-URL: Issues, https://github.com/jaggedmountain/mavio/issues
Provides-Extra: all
Provides-Extra: foxglove
Provides-Extra: params
Description-Content-Type: text/markdown

![mavio logo](https://raw.githubusercontent.com/jaggedmountain/mavio/main/docs/images/mavio-lockup-light.svg)

# mavio

> A modern, async, Python MAVLink package

`mavio` is a MAVLink client for talking to autopilots — ArduPilot, PX4 or anything
else that speaks the protocol. It is two things at once: a **diagnostics CLI** for
bringing up hardware and inspecting a link, and an **embeddable async library** for
companion-compute and ground-station applications.


## Quick start

No install needed — `uvx` builds an ephemeral environment:

```bash
uvx mavio /dev/ttyACM0               # interactive console
uvx "mavio[all]" /dev/ttyACM0        # with extras
```

To keep the CLI on PATH, and the optional extras — quote them, since most shells
treat bare brackets as a glob:

```bash
uv tool install mavio                # or: pipx install mavio
uv tool install "mavio[params]"      # offline ArduPilot param metadata (~2.6 MB)
uv tool install "mavio[foxglove]"    # the convert and bridge verbs (Python 3.10+)
uv tool install "mavio[all]"         # both
```

The extras are genuinely optional. Without `params`, param reads still work — they
just come back without descriptions and value labels. 

## The CLI

Seven verbs over one link. `mavio <url>` with no verb opens the console.

```bash
mavio console <url>              # interactive REPL (the default)
mavio stream  <url>              # decoded frames to stdout, then exit
mavio probe   <url>              # what is this board?
mavio ftp     <url> ls|get|put   # read/write the vehicle's filesystem
mavio convert <capture> [out]    # capture -> MCAP for Foxglove
mavio bridge  <url>              # live link -> Foxglove websocket
mavio flash   info|upload <port> # identify a board, or write firmware to it
```


## The library

```bash
uv add mavio            # or: pip install mavio
```

MavNode encapsulates io, serialization, state, filtering, rates, recording, and command/ack handling.
Integrate or extend this class for a companion-compute and ground control station application.


## License

MIT — see [LICENSE](https://github.com/jaggedmountain/mavio/blob/main/LICENSE).
