+------------------+ +-----------------+ +----------------+
| cyberdeck-core |<--| cyberdeck-tui | | cyberdeck-web |
| (no TUI/web) | | ratatui front |<->| axum HTTP/WS |
+------------------+ +-----------------+ +----------------+
| cyberdeck-cli | | wifi-radar |
+-----------------+ +----------------+
| cyberdeck-intel| | cyberdeck-daemon|
+-----------------+ +----------------+
cyberdeck-core— async wrappers aroundnmcli,systemctl,apt,pactl,bluetoothctl,xrandr, etc. Singlerun()helper withPrivilege::{User, Root}enum, per-call timeout, uniformCoreError.cyberdeck-tui— ratatui 0.29 front-end. 13+ screens, window manager, live PTY terminals with ANSI colours, modal system.cyberdeck-web— axum 0.7 (JSON API + WebSocket + static HTML). Optional bearer-token auth.wifi-radar— passive 802.11 monitor with web UI.cyberdeck-cli— CLI commands (cyberdeck city locate, etc).cyberdeck-intel— threat intelligence layer snapshots.
- Single source of truth.
Arc<Live>ofRwLocks with background refreshers. Web reads viaTuiLiveReadadapter. - One action channel.
tokio::sync::mpsc::Sender<Action>for UI events and async results. - Window manager. Split tree (
wm/tree.rs), per-pane state, PTY/ANSI stack. Real$SHELLprocesses. - No unsafe. Every crate:
#![forbid(unsafe_code)].
PTY tests can never outlive their child process:
- Pattern A (broadcaster/window):
ChildKillerkill-switch +tokio::time::timeout(2s). - Pattern B (raw pty):
kill()+try_wait()+ thread-spawnedwait()dropped on scope exit.
Detailed docs at docs/wiki/:
Architecture |
Phase 1-5 |
Hardening |
Keymaps |
Hardware