Tsugite

A system-oriented dashboard for Cyphal (CAN + UDP) & DroneCAN. Render live panels from a YAML manifest - so you watch the system, not just the bus.
🪵 “Tsugite” (継ぎ手) - a Japanese word for traditional wood joinery - symbolizes how separate modules fit together into one solid structure, just like nodes in your robotics system.
Why Tsugite?
Most tools are bus-oriented: they show frames, subjects, and IDs.
But field work needs system-oriented views:
- “Is my VTOL healthy right now?”
- “Which nodes are missing from the network?”
- “Are all critical topics alive?”
- “Can I watch it remotely from my laptop or tablet?”
Tsugite focuses on:
- A YAML system manifest that describes your nodes, panels, and topics.
- A backend that speaks Cyphal (CAN + UDP) and DroneCAN.
- A desktop GUI (PySide6) that renders dashboards dynamically from that manifest.
You describe the system once in YAML – Tsugite builds the UI and wiring for you.
Usage
Latest stable from PyPI:
# Create and activate a venv (Python 3.10+)
python3 -m venv .venv && source ".venv/bin/activate"
# Upgrade pip inside the venv
python -m pip install --upgrade pip
# Install Tsugite
pip install "tsugite[dronecan]"
# (Optionally) Install a tsugite.desktop launcher (Linux only)
tsugite --install-desktop
# Then you can run:
tsugite --help
MVP scope
- ✅ Transports: SocketCAN / SLCAN (Linux, macOS, Windows where supported), UDP (Cyphal).
- ✅ Protocols: Cyphal, DroneCAN.
- ✅ YAML manifest: Define nodes, panels, widgets, and data bindings.
- ✅ Widgets: Dynamic system panels with labels, buttons, GPS, and plotting.
- ✅ Node list: Health, uptime, firmware version, voltages, temperature, and bootloader state.
- ✅ Parameters panel: Inspect and modify node parameters.
- ✅ Component QA (Node-level, active): run automated node-level tests to verify firmware, parameters, and behavior compliance — ensuring each device meets specification before deployment.
- ✅ Bus analysis (System-level, passive): review overall system traffic, measure total and per-node bandwidth, and detect missing frames or termination issues — a non-intrusive pre-flight consistency check.
- ✅ CLI launcher:
tsugiteorpython -m tsugite.clito run the GUI.
Contributing
For development:
git clone git@github.com:PonomarevDA/tsugite.git
pip install -e .[all]
For testing:
pip install -i https://test.pypi.org/simple/ "tsugite[dronecan]"
Metadata
Release files for tsugite 0.7.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| tsugite-0.7.3.tar.gz | 115.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| tsugite-0.7.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 230.8 kB
Release files / tsugite-0.7.3.tar.gz
| Download URL | tsugite-0.7.3.tar.gz |
|---|---|
| Size | 115.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
0b28c6cc8dfcbfa1277a71d65bd62f65f18293d357e96bad4984bb5eedf79931
|
|
BLAKE2b-256 checksum How to use checksums |
52fd195344d234088923f52fafc1910cf6297cbcfa3ac57a988e180184a908cc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.14
|
Release files / tsugite-0.7.3-py3-none-any.whl
| Download URL | tsugite-0.7.3-py3-none-any.whl |
|---|---|
| Size | 115.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
61bf46d16b1e1e77533026de7be88cc197e2f43885270a49d3038f99738270a2
|
|
BLAKE2b-256 checksum How to use checksums |
b69af63816e402f7c1e716e49ecb2e721ca310d679009e6b018a3b9a32be043c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.14
|