Documentation
Startup performance
How toowl keeps cold start fast and how we benchmark it.
Launch speed is a first-class metric for toowl. The core terminal loads without spawning plugin subprocesses, without loading every bundled font face, and without blocking on tab restore.
Targets
| Metric | Target |
|---|---|
| Cold start (first frame) | <80ms on Apple Silicon |
| Plugin cost at launch | 0ms unless Perch opened |
| Idle RAM | <50MB |
What stays off the critical path
- Feathers — Claude, Nest, MCP Hub, Scout hot-start on Perch open or palette invoke
- Subprocess plugin discovery — background thread after first frame
- Claude FS watcher — deferred until first Perch open
- Font loading — only the configured
font_familyTTF at startup - Tab restore — first tab interactive immediately; remaining tabs restore asynchronously
Benchmark locally
bash scripts/bench-startup.sh
Uses hyperfine when installed, otherwise falls
back to /usr/bin/time. Compare traces with:
TOOWL_PERF=1 RUST_LOG=toowl::perf=info cargo run --release CI gate
The self-hosted runner runs scripts/bench-startup.sh and fails if cold start regresses more than 10% from the pinned baseline in plans/architecture.md.
Profiling
cargo flamegraph --bin toowl High skipped counts in TOOWL_PERF=1 summaries usually mean a redraw path is not latching; high max_render_us points at GPU work.