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 by pressly/goose migrations and type-safe queries from sqlc.
  • Provider-agnostic multi-model architecture: The internal/backend and internal/client packages abstract over a dozen LLM providers, with a custom charmbracelet/openai-go and charmbracelet/anthropic-sdk-go rather than using the upstream SDKs directly — suggesting Charmbracelet maintains forked or extended API clients.