Crush

What It Is (confidence: medium)

Crush (charmbracelet/crush) is Charm’s “glamourous” terminal-native, multi-model agentic coding CLI — “your tools, your code, and your workflows, wired into your LLM of choice.” 27k stars at capture. Sits in the agentic-coding-CLI class with Claude Code and Grok Build.

Key Points (confidence: medium)

  • Multi-model + deep extensibility: MCP servers (stdio/http/sse) with built-in OAuth authorization-code flow (RFC 7591 dynamic client registration, fallback to pre-registered GitHub/Slack), LSPs for extra context, and the Agent Skills standard (~/.claude/skills/, ~/.agents/skills/, project paths; user-invocable and disable-model-invocation frontmatter knobs).
  • Bash-as-config + global context files: crushrc (a Bash-with-builtins script, cross-platform); long-lived instructions from auto-loaded CRUSH.md (tool-specific) + AGENTS.md (cross-tool) — “personal additions to the system prompt”; crush init analyzes the codebase and generates AGENTS.md.
  • Provider surface is huge and community-driven: ~30 providers via env var + arbitrary OpenAI-/Anthropic-compatible custom providers (openai vs openai-compat, --price-input/output, --price-cache-*); local models (ollama, llama.cpp, lmstudio, litellm); metadata auto-updates from Catwalk.
  • Permission-by-default safety model: granular allow/deny lists, --yolo bypass, skill disabling; crushrc/crush.json are trusted code (“crushrc runs in a full shell”); metrics pseudonymous with prompts/responses never collected, opt-out via CRUSH_DISABLE_METRICS=1/DO_NOT_TRACK.
  • Shared-workspace multi-client model: crush serve with IsBusy/AttachedClients, --yolo first-wins — its analog of multi-session coordination.

Implications (confidence: medium)

Crush is a catalog data point for agentic coding CLI architecture: its global-context-files pattern (CRUSH.md/AGENTS.md) is a direct analog of the claude-code-memory CLAUDE.md hierarchy, and its permission tiering parallels claude-code-best-practices. The price-parameter surface (--price-cache-*, --default-max-tokens) is a cost-modeling lever in the token-usage-reduction space. License is FSL-1.1-MIT (Functional Source License — not OSI open source despite “open source” positioning).

Open Questions

  • Old JSON config “still supported, but should be considered deprecated” — internal tension between crushrc and crush.json; hooks are “preliminary support.”
  • Provider/model list auto-updates from community Catwalk database — snapshot-only; example configs hardcode version-sensitive model names; repo metrics will rot.

claude-code-best-practices — nearest agentic-coding-CLI peer claude-code-memory — CRUSH.md/AGENTS.md ≈ CLAUDE.md memory system ai-agents-guide — catalog context for agentic tools grok-build — structural analog: AGENTS.md-style project instruction files claude-code-parallel-agents — shared-workspace multi-client coordination

Sources

  • raw/external/github-com-crush-fb00f031.md