Run AI agents from one binary. Tools, subagents, and extensions built in.
Any model, 15MB, 2ms boot.
Synaps is a fast, terminal-native agent harness written in Rust. It runs AI agents with built-in tools, subagents, and extensions, and works with any model, from Claude and ChatGPT to a local Ollama. Run it as a TUI, headless in CI, a server, or a daemon. Extend it with plugins in any language, MCP, and an event bus, and adapt it to your workflow instead of the other way around.
cargo install synaps # crates.ioMore options (brew, AUR, .deb, shell installer, source)
brew install HaseebKhalid1507/tap/synaps # macOS / Linux
yay -S synaps # Arch / EndeavourOS
# Debian/Ubuntu
curl -LO https://github.com/HaseebKhalid1507/SynapsCLI/releases/latest/download/synaps_amd64.deb
sudo dpkg -i synaps_amd64.deb
# Shell installer (any platform)
curl -sSL https://github.com/HaseebKhalid1507/SynapsCLI/releases/latest/download/synaps-installer.sh | sh
# From source
git clone https://github.com/HaseebKhalid1507/SynapsCLI && cd SynapsCLI
cargo build --release && ./target/release/synapsNew to agents? Start with the ELI5. Want the full tour? The Wiki has 36 pages.
synaps login # Claude Pro/Max, or a provider key, or point at local Ollama
synaps # launch the TUIHeadless, same engine, for scripts and CI:
echo "summarize the git diff" | synaps chatsynaps login # pick Claude or ChatGPT (Codex) from the provider menu
# ChatGPT / Codex
synaps # then: /model openai-codex/gpt-5.5
# Ollama or any local model (no account, no key, no cloud)
ollama serve # LM Studio, vLLM, llama.cpp all work too
synaps # then: /model local/llama3.2Synaps auto-targets http://localhost:11434/v1, which is Ollama's default, so a running Ollama just works. Point it anywhere else with provider.local.url in config or the LOCAL_ENDPOINT env var. Your keys, your box, nothing phones home.
- π Named agents. Crew members with roles. Dispatch by name, watch them think in a live panel.
- π Steer them mid-flight. dispatch, poll, steer, collect. Redirect an agent while it's still working. This is the part nobody else does.
- π Build anything on it. Process-isolated extensions in any language, MCP servers, an event bus, custom tools. A small core with enough hooks to bolt on whatever you want and glue it to whatever you've got.
- π Any OpenAI-compatible model, cloud or local. Claude and ChatGPT natively, plus Groq, Cerebras, NVIDIA NIM, OpenRouter, or your own Ollama. Run a different model per agent. Swap mid-session with
/model. - π‘ Event bus. Any script, cron, or service can poke a running session and the agent reacts in real time.
- π§ Context that lasts. 90%+ prompt-cache hit rate.
/compactcheckpoints history. Chain sessions across days. - π€ Autonomous mode.
synaps watcherruns a fleet with heartbeats, crash recovery, cost limits, and session handoff. - β‘ Fast and lean. ~87K lines of Rust, one 15MB binary, ~2ms cold start, zero runtime deps.
- π¨ 18 themes.
catppuccin,gruvbox,nord,rose-pine,dracula,tokyo-night, plus originals likeneon-rainandnight-city. Hot-swap with/theme.
| Command | What it does |
|---|---|
synaps |
Interactive TUI: streaming, markdown, syntax highlighting, subagent panel |
synaps chat |
Headless, same engine, stdin/stdout. Scripts, pipes, CI |
synaps server |
WebSocket API: token auth, origin validation, streaming |
synaps rpc |
Line-JSON IPC for bridges (Slack, Discord) |
synaps watcher |
Supervisor daemon for autonomous agent fleets |
No YAML. No TOML. No JSON. Just key = value in ~/.synaps-cli/config:
model = claude-sonnet-4-6
thinking = high
theme = tokyo-night
identity = You are a senior engineer who writes clean, tested code.
disabled_tools = bash, ls # remove built-ins at boot (read-only profiles)
provider.groq = gsk_...Advanced: shared-credential broker, bridge mirror, all keys
See the Wiki for the full config reference, the multi-machine auth broker (share one OAuth credential across a fleet over WireGuard or TLS), and the bridge heartbeat mirror.
Drop a folder in ~/.synaps-cli/plugins/ and it's live on next boot:
~/.synaps-cli/plugins/my-guard/
βββ .synaps-plugin/plugin.json # manifest: hooks, permissions, keybinds
βββ main.py | index.js | <any> # JSON-RPC 2.0 over stdio, any language
Extensions are separate processes, not linked code, so they're language-agnostic, crash-isolated, and sandboxed. Hook before_tool_call, before_message, on_session_start, and 4 more.
Protocol spec: docs/extensions/.
Synaps is young (started April 2026) and moving fast: 1,300+ commits in its first 3 months, shipped to crates.io, Homebrew, and the AUR, and listed in awesome-ratatui. Good first contributions: a new provider in the catalog, an extension, a theme, docs, or any good first issue.
git clone https://github.com/HaseebKhalid1507/SynapsCLI && cd SynapsCLI
cargo build && cargo testSee CONTRIBUTING.md. Issues and PRs welcome, the maintainer answers fast.
- Agents are not chat. They're autonomous programs that happen to use language models. Treat them like services.
- Multi-agent is the default. Single-agent is just n=1.
- Speed is a feature. A 2-second boot already lost the dev who wanted it in a git hook.
- The terminal is the IDE. If you need Electron to be productive, your tools are wrong.
Architecture
crates/
βββ agent-core/ # identity, models, auth, pricing
βββ agent-engine/ # LLM runtime (Anthropic-native + OpenAI-compat router),
β # tools, extensions, MCP, events, skills, sidecar
βββ agent-tui/ # ratatui terminal UI, themes, settings, plugin modals
βββ (root) # the `synaps` binary crate: CLI dispatch, watcher, broker
Two API paths (Anthropic native and OpenAI-compatible for 17 providers) both emit the same StreamEvent, so the TUI and tool loop are provider-blind.
Apache 2.0. See LICENSE.
Synaps is built with Synaps.
Because every other CLI agent was a 400MB Electron app pretending to be a terminal tool.

