Architecture
The technical stack and the binary layout — useful when filing bugs, reading source, or building a custom packaging.
Stack
| Layer | Tech |
|---|---|
| Language | Rust (stable) |
| TUI framework | Ratatui |
| Terminal backend | crossterm |
| Async runtime | tokio |
| Shell execution | portable-pty (bash / zsh / fish / pwsh) |
| Config | TOML + serde |
| HTTP (kit registry) | reqwest + rustls |
| AI / vixen | local Ollama, optional remote |
| Window (macOS) | Cocoa via winit |
| Window (Linux) | Wayland + X11 via winit |
| Window (Windows) | Win32 via winit |
| Glyph rendering | CPU (default); optional wgpu in v1.5 |
Binary layout
foxora-shell (single static binary, ~15–25 MB stripped)
├─ Terminal emulator core (crossterm + winit)
├─ Ratatui UI layer (chrome, top bar, footer, dashboard)
├─ Shell execution (PTY wrapper)
├─ Embedded fur (package, service, log, doctor)
│ ├─ registry client
│ ├─ platform abstraction (systemd / launchd / Win SCM)
│ ├─ kit installer
│ └─ system doctor
└─ Vixen client (talks to local Ollama)Performance targets
- Startup — <100 ms cold start to interactive prompt.
- Keystroke latency — <5 ms p99.
fur install(small kit) — <3 s end-to-end.fur system doctor— <500 ms.- Dashboard refresh — 2 Hz (every 500 ms).
- Memory — <80 MB idle, <200 MB with dashboard + 4 panes.
Source layout
/foxora-shell/
├─ crates/
│ ├─ foxora/ # main binary
│ ├─ fur/ # fur library (embedded + standalone)
│ ├─ foxora/ # shared Ember tokens
│ ├─ foxora/ # AI client
│ └─ foxora/ # custom widgets
├─ assets/ # icons, fonts, themes
├─ docs/
├─ Cargo.toml
└─ build.rs