What is Tapioca?
Tapioca is an agentic coding TUI in the spirit of Claude Code, Crush and OpenCode, built with Bubble Tea.
Chat fills two thirds of the screen; the right third is a stack of configurable dashboards (agents, tokens/context/cost, the agent's plan, tool calls, MCP servers, session, editable settings). Agents can read, write and edit files and run shell commands — every mutating call goes through a permission prompt.

Highlights
- Built-in coding tools —
bash,read_file,write_file,edit_file,grep,glob, plus keylessweb_searchandweb_fetch. See Tools. - Permission modes and per-tool rules — from read-only
planmode to fully unattendedbypass, withallow/ask/denyrules for the exceptions. See Permissions. - Sandboxed bash — run shell commands under bubblewrap with the worktree writable and
$HOMEreplaced by an empty tmpfs. See Sandboxing & Security. - Any provider — Ollama, Anthropic, Bedrock, Vertex AI, Azure OpenAI, Gemini, and any OpenAI-compatible server. See Providers.
- Multi-agent — independent agents streaming concurrently, conversation forking, and subagents for delegated tasks. See Agents & Sessions.
- MCP and LSP — stdio and remote HTTP MCP servers; language servers that check every file the agent writes. See MCP & LSP.
- Editor mode — drive Tapioca from Zed or any Agent Client Protocol client. See Editor Integration.
For how these choices differ from other agentic coding TUIs, see Why Tapioca?.
Architecture
main.go flags, config, executor cwd, session resume
internal/config TOML config: load, defaults, Save (written by the app)
internal/provider Provider interface; ollama (NDJSON), anthropic (SSE),
openai-compatible (SSE)
internal/tools built-in bash/read/write/edit tools + permission gate
internal/mcp stdio JSON-RPC 2.0 MCP client + tool registry
internal/agent agent runtime (stream → tool loop → events), manager,
fork, permission events
internal/session workspace snapshots as JSON + full-text search blobs
internal/stats token / request / tool-call accounting
internal/ui Bubble Tea app: chat, dashboards, slash commands,
pickers, permission & diff overlays, vim integration
internal/acp Agent Client Protocol server (--acp) for editors
internal/lsp language servers: diagnostics after each editEach agent streams in its own goroutine and reports through a channel; the UI consumes events so several agents can generate at once. Permission requests travel the same channel and block the agent until answered.