Crush — Overview#
Identity#
- Module path: github.com/charmbracelet/crush
- Go version: 1.26.2
- License: FSL-1.1-MIT (Functional Source License 1.1, converts to MIT after 2 years)
- Repository: https://github.com/charmbracelet/crush
Purpose#
Crush is a terminal-based AI coding assistant built by Charmbracelet, positioning itself as a direct competitor to Claude Code, Aider, and similar tools. It integrates multiple LLM providers — Anthropic, OpenAI, Google Gemini, Groq, Amazon Bedrock, Azure, and more — into a rich TUI interface, allowing developers to chat with AI, run agentic tasks, and wire in their own tools without leaving the terminal. The project targets developers who prefer terminal workflows and want a single assistant that is not locked to any specific model provider.
Significance#
Crush is notable as one of the few AI coding assistant TUIs written in Go, and the most prominent effort to bring the Charmbracelet/Charm ecosystem to the agentic AI space. It leverages the same BubbleTea/Lipgloss/Glamour stack that powers hundreds of popular Go CLI tools, making it a showcase for what the Charm ecosystem can do at the complex, stateful end of the TUI spectrum. Its multi-provider stance and MCP (Model Context Protocol) support signal an emerging design pattern for provider-agnostic AI tooling.
Key metrics#
- Go files: 359
- Top-level directories:
docs/,internal/,scripts/ - Top-level files:
main.go,go.mod,go.sum,AGENTS.md,crush.json,schema.json,sqlc.yaml,Taskfile.yaml,README.md,LICENSE.md - Direct dependencies: 73
- Internal packages: ~45 (agent, app, backend, client, cmd, commands, config, csync, db, diff, diffdetect, env, event, filepathext, filetracker, format, fsext, history, home, hooks, log, lsp, message, oauth, permission, projects, proto, pubsub, server, session, shell, skills, stringext, swagger, ui, update, version, workspace, and more)
- First commit / age: repository cloned at 2026-04-30; project started 2025 per license copyright
Notable characteristics#
- Charm ecosystem showcase: Built entirely on Charm’s own published packages — BubbleTea v2, Lipgloss v2, Glamour v2, Bubbles v2, Fang, Catwalk — making it an architectural exemplar of idiomatic Charm TUI design at scale.
- Unix socket REST API with Swagger: Exposes a full REST API (served over a Unix socket or Windows named pipe) documented with Swaggo annotations in
main.go. This enables programmatic access to workspaces, sessions, agents, LSP, and MCP — unusual for a terminal tool. - MCP and LSP integration: Native support for the Model Context Protocol (
modelcontextprotocol/go-sdk) and Language Server Protocol (sourcegraph/jsonrpc2) gives the AI access to the same IDE-level code intelligence a developer would use. - SQLite-backed persistence with sqlc and goose: Session history, context, and state are persisted in SQLite using
ncruces/go-sqlite3(CGo-free), with schema managed bypressly/goosemigrations and type-safe queries fromsqlc. - Provider-agnostic multi-model architecture: The
internal/backendandinternal/clientpackages abstract over a dozen LLM providers, with a customcharmbracelet/openai-goandcharmbracelet/anthropic-sdk-gorather than using the upstream SDKs directly — suggesting Charmbracelet maintains forked or extended API clients.