C3PO Overview¶
C3PO is the operator tool for Espilon. It is a Qt6 desktop application (PySide6 + qasync) that combines a Management Protocol server with an operator UI: it receives agent connections, sends commands, compiles and injects modules, provisions new devices, and aggregates collected intelligence. There is no separate TUI or web dashboard; everything happens in one app.
What changed
Older documentation described a Textual TUI, a Flask dashboard, and a copland.py provisioning
script. Those are gone. Provisioning is now the built-in Provision view, and the reverse
tunnel is a module capability (mod_network), not a server feature.
(Camera streaming is planned for a future version.)
Feature overview¶
| Feature | Description |
|---|---|
| Encrypted C2 | ChaCha20-Poly1305 AEAD with per-device keys derived via HKDF-SHA256, protobuf framing over TCP :2626 |
| Fleet management | Live grid of connected agents with status, chip, IP, and loaded modules |
| Module injection | Compile a C module, sign it with the device key, and inject it over the wire |
| Data aggregation | WiFi / BLE / Network intelligence tables populated automatically from module output |
| Keystore | Manage per-device keys (keys.json) without editing files by hand |
| Provisioning | Build, key, and flash a new device, then register it |
Architecture¶
flowchart TB
subgraph C3PO["C3PO (Qt6 + asyncio)"]
UI["Six views + global console"]
SRV["C2Server (asyncio TCP :2626)"]
KS["Keystore (keys.json)"]
MC["Module compiler / signer / injector"]
PV["Provisioner (build + NVS + flash)"]
UI <--> SRV
SRV --> KS
UI --> MC
UI --> PV
end
SRV -->|"ChaCha20-Poly1305 + protobuf"| FLEET["ESP32 fleet"]
MC -->|"signed ELF (mod_chunk + mod_load)"| FLEET
PV -->|"esptool flash"| FLEET
The C2 layer (c3po/c2/) is fully decoupled from the UI: it communicates only through Qt signals (C2Events) and never imports the app/ package.
The six views¶
| View | Purpose |
|---|---|
| Fleet | Card grid of all connected agents |
| Device | Operate a single agent: loaded modules, log, command bar |
| Modules | Browse the catalog and inject modules |
| Data | Aggregated WiFi / BLE / Network tables with CSV export |
| Keystore | Manage device keys |
| Provision | Flash and register a new device |
See Operator interface for the full tour.