Blazing-fast coding agent
in your terminal.

A drop-in alternative to claude-code, written in C++26. 13.6 MB binary, millisecond cold start, sandboxed by default, SSH air-gap in one command, and runs inside Zed over ACP. Signs in with your existing Claude Pro/Max — or point it at OpenAI, Groq, OpenRouter, Cerebras, or a local Ollama model. No Node, Python, Electron, or npm install.

Install in one line

$

No Node, no Python, no npm install — just a single 13.6 MB static binary.

13.6 MB
Single static binary
~2 ms
Cold start
0
Runtime dependencies
C++26
Native, no GC
★ 
80
Stars on GitHub

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 disk13.6 MB222 MB (+ Node runtime)
Installcurl | chmod +xnpm i -g + Node
GC pauses mid-streamNoneV8 GC

Why agentty

Everything the official client does — and the things it doesn't.

Native speed

C++26, statically linked, posix_spawn everywhere. Spawns in microseconds, no GC pauses mid-stream, no warmup.

📦

One static binary

13.6 MB. curl | chmod +x | run. No Node runtime, no npm install, no version drift between machines.

🔌

Any model

Claude by default via your Pro/Max subscription — or GPT, Groq, OpenRouter, Together, Cerebras, and local Ollama. Switch backends live with ^P. Providers →

🛡️

Sandbox by default

Every shell and build call runs inside bwrap (Linux) / sandbox-exec (macOS). Workspace, system libs, and network stay reachable; ~/.ssh, /etc, and other projects are read-only. An approved bash call still can't cat ~/.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 the bytes over SOCKS5-over-SSH. TLS pins on the real upstreams end-to-end, so the network in between can't MITM you.

🧠

Learns your codebase

Agent Skills teach it your conventions from a SKILL.md; remember/forget give it durable cross-session memory. Teach it once, every thread knows. Skills →

🧵

Threads that persist

Every conversation is a saved thread you can reopen with ^J. Long threads compact automatically so you never blow the context window mid-task.

🤖

Isolated subagents

The task tool spawns a subagent with its own context window to burn through a self-contained job, then returns one condensed report — keeping your main thread focused.

🔍

Adjustable reasoning

Dial thinking effort per model from the picker — fast answers for small edits, deep reasoning for hard refactors, without leaving the thread.

🖼️

Paste images

Drop a PNG, JPEG, GIF, or WebP path (or ^V from the clipboard) straight into the composer — screenshots, diagrams, and mockups go to the model inline.

▶️

Run code blocks

When a reply hands you shell commands, ^G runs one interactively on your real terminal — sudo prompts work, output streams live, ^C kills the command not agentty. Attach the captured output back to the composer with one key. The interface →

📝

Mentions & palette

Type @ to mention a file, # to jump to a symbol, / to open the command palette (also ^K). The composer knows your project.

🔐

Permission profiles

Start in Ask — writes, shell, and network each prompt first. S-Tab cycles to Write (autonomous) or Minimal. Every effect is gated by a compile-time permission matrix. Profiles →

📐

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.

🔌

MCP, both ways

Serve agentty's tools to any MCP client with mcp-serve, or consume other MCP servers from a .agentty/mcp.json — their tools appear indistinguishable from native ones. MCP →

🧩

Runs inside Zed (ACP)

agentty acp speaks the Agent Client Protocol, so agentty becomes a first-class agent panel in Zed — streaming text, inline diffs, native permission prompts, session reload. Same engine as the TUI. Set it up →

Bring your own model

Claude by default. Any model on demand.

Sign in once with your Claude Pro/Max subscription, or point agentty at any OpenAI-compatible backend. Switch live mid-thread with ^P — no restart, no re-auth.

agenttyClaude via OAuth (Pro/Max) or API key — the default
--provider openaiGPT and o-series on api.openai.com
--provider groqLlama/Mixtral on Groq LPUs — very fast
--provider openrouterAny model via openrouter.ai
--provider togetherOpen models on together.ai
--provider cerebrasWafer-scale inference — very fast
--provider ollamaLocal models at localhost:11434 — no key, no cloud
--provider host:portAny raw OpenAI-compatible endpoint

Providers & models reference →

How it compares

The single-binary pick.

agenttyclaude-codeaider
Language / runtimeC++26 — static binaryTypeScript / NodePython
Footprint13.6 MBnpm + Node runtimepip + Python runtime
PlatformsLinux · macOS · WindowsLinux · macOS · WindowsLinux · macOS · Windows
Air-gapped modeYes (SOCKS5/SSH)NoNo
Editor integration (ACP)Yes (Zed)Yes (Zed)No
AuthOAuth (Pro/Max) + API keyOAuth + API keyper-provider env vars
ModelsClaude · GPT · Groq · OpenRouter · OllamaClaude (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 · editFile IO with atomic writes and diff rendering
grep · glob · find_definitionSearch and symbol lookup across the codebase
bash · diagnosticsSandboxed shell and build, with exit codes
git_status · git_diff · git_log · git_commitVersion control, rendered natively
web_fetch · web_searchReach the web for docs and APIs
skill · task · search_docsOn-demand skills, isolated subagents, and RAG over a knowledge corpus
todo · remember · forget · wipe_memoryPlanning and durable cross-session memory

Full tool reference →

“No JIT warmup, no require() graph to walk, no GC ticking while bytes stream in from the API. The redraw loop is a poll(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

The reducer is one std::visit over a closed event sum; the view is a single Model → Element function; the permission matrix is a constexpr with static_asserts. Change a policy cell and the build breaks — not a test nobody runs.

Browse the repo →

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