Blazing-fast Claude
in your terminal.
A drop-in alternative to claude-code, written in C++26. 9.4 MB binary, millisecond cold start, sandboxed by default, SSH air-gap in one command. Signs in with your existing Claude Pro/Max — no Node, Python, Electron, or npm install.
Install in one line
No Node, no Python, no npm install — just a single 9.4 MB static binary.
Size & cold-start are the Linux x86_64 build, measured on each deploy; other platforms vary — see the per-platform download sizes.
Speed
Native, not interpreted.
Measured on the same Arch box, same shell, same day. No JIT warmup, no require() graph to walk, no GC ticking while bytes stream in. Figures are the Linux x86_64 build — other platforms here.
| agentty (C++26) | claude-code (Node) | |
|---|---|---|
Cold-start --help | ~2 ms | ~150 ms |
--version | ~2 ms | ~60 ms |
| Binary on disk | 9.4 MB | 222 MB (+ Node runtime) |
| Install | curl | chmod +x | npm i -g + Node |
| GC pauses mid-stream | None | V8 GC |
Why agentty
Four things the official client doesn't try to do.
Native speed
C++26, statically linked, posix_spawn everywhere. Spawns in microseconds, no GC pauses mid-stream, no warmup.
One static binary
9.4 MB. curl | chmod +x | run. No Node runtime, no npm install, no version drift between machines.
Sandbox by default
Every shell and build call runs inside bwrap (Linux) / sandbox-exec (macOS) / job objects (Windows). An approved bash call still can't read ~/.ssh/id_rsa.
One-command SSH air-gap
agentty airgap user@host runs the agent on a box with no direct internet — your laptop relays bytes over SOCKS5-over-SSH.
Workspace boundary
Filesystem tools refuse paths outside the launch directory. Opt out explicitly with --workspace /.
Inline render
Lives at the bottom of your terminal, preserves scrollback, never takes over the screen.
How it compares
The single-binary pick.
| agentty | claude-code | aider | |
|---|---|---|---|
| Language / runtime | C++26 — static binary | TypeScript / Node | Python |
| Footprint | ~9 MB | npm + Node runtime | pip + Python runtime |
| Platforms | Linux · macOS · Windows | Linux · macOS · Windows | Linux · macOS · Windows |
| Air-gapped mode | Yes (SOCKS5/SSH) | No | No |
| Auth | OAuth (Pro/Max) + API key | OAuth + API key | per-provider env vars |
| Models | Claude (Anthropic) | Claude (Anthropic) | many providers |
Tools
A purpose-built widget for everything.
Diffs render as diffs, search groups by file, bash shows exit codes, todos become checklists. Every tool effect is gated by a compile-time permission matrix.
read · write · edit | File IO with atomic writes and diff rendering |
grep · glob · find_definition | Search and symbol lookup across the codebase |
bash · diagnostics | Sandboxed shell and build, with exit codes |
git_status · git_diff · git_log · git_commit | Version control, rendered natively |
web_fetch · web_search | Reach the web for docs and APIs |
todo · remember · forget | Planning and durable cross-session memory |
“No JIT warmup, norequire()graph to walk, no GC ticking while bytes stream in from the API. The redraw loop is apoll(2)over the model stream and your input fd — every keystroke lands on the next frame.”— from the design notes
Open source
Built in the open, MIT licensed.
Read the source
One std::visit reducer, a single render function, and a permission matrix you can audit. It reads like a single function.
Get involved
Bug reports, fixes, and well-scoped features are all welcome. Start with the contributing guide.
How to contribute →Ready in one line.
Linux, macOS & Windows · x86_64 & aarch64. The same line updates it.
curl -fsSL https://agentty.org/install.sh | sh