ensō#
ensō (円相) — the Zen circle, drawn in one breath. Imperfect by design; the irregularities are the point.
A small, single-binary, terminal-first agentic coding agent in Go
(binary: enso).
ensō talks to any OpenAI-compatible chat endpoint and gives it the
tools to read and edit your project, run shell commands, search the
codebase, fetch URLs, and orchestrate sub-agents. Sessions persist to
SQLite and resume across crashes. Opt into [bash] sandbox = "auto"
and bash runs inside a per-project podman or docker container so the
agent can’t escape the project directory.
Why ensō#
- Local-first by design. Built around
llama.cpp’sllama-serverrunning Qwen3.6-35B-A3B on a single RTX 3090. Anything that speaks the OpenAI Chat Completions wire format works. - Single static binary, no CGO. SQLite via
modernc.org/sqlite, pure-Go LSP and JSON-RPC. Builds for Linux, macOS, and Windows without toolchain gymnastics. - Persistent everything. Every user message, assistant reply, tool
call, and event is written to SQLite before the UI renders it.
kill -9mid-tool-call and the session resumes with the interrupted call surfaced as a synthetic tool result. - Container sandbox, opt-in. Set
[bash] sandbox = "auto"and the agent’s shell runs in a per-project alpine container with the cwd bind-mounted. File tools (read/write/edit/grep/glob) refuse paths outside cwd in the same mode. Off by default. - Real LSP. Configure any language server under
[lsp.<name>]and the agent getslsp_hover,lsp_definition,lsp_references, andlsp_diagnosticstools.
Where to start#
- Install — get a binary on your machine.
- Quickstart — first run end-to-end in five minutes.
- User guide — one page per feature.
- Config reference — every
field in
config.toml. - Architecture — what’s inside the binary.
Project status#
v1 is shipped, plus a substantial post-v1 surface (multi-provider,
hooks, session search, and more). The binary is in daily use;
soak-test risks are documented in the architecture page. The non-goals — what’s intentionally
not built and why — live in AGENTS.md at the repo root.