Skip to content

Crush

Crush is Charm’s terminal coding agent. It supports many model providers and reads API keys from the environment. Use varlock to inject those keys at runtime so they never sit in a plain text .env or shell history.

For install, schema setup, and shared patterns, see the AI Tools overview.

Launch command: crush

Environment variables (from the Crush README):

  • ANTHROPIC_API_KEY, OPENAI_API_KEY, OPENROUTER_API_KEY, GEMINI_API_KEY, and many other provider keys
  • HYPER_API_KEY for Charm Hyper (Crush’s built-in provider)

You can also paste a key in the TUI model picker (ctrl+l). Prefer env injection so the key is not typed into the UI or stored in project config.

Add to .env.schema:

# @sensitive @required
ANTHROPIC_API_KEY=op(op://api-local/anthropic/api-key)
# @sensitive
OPENAI_API_KEY=op(op://api-local/openai/api-key)
# @sensitive
OPENROUTER_API_KEY=op(op://api-local/openrouter/api-key)
Terminal window
varlock run -- crush

Personal schema at ~/.env.crush:

~/.env.crush
# @sensitive @required
ANTHROPIC_API_KEY=op(op://api-local/anthropic/api-key)
# @sensitive
OPENAI_API_KEY=op(op://api-local/openai/api-key)
Terminal window
varlock run -p ~/.env.crush -- crush
Terminal window
alias vcrush='varlock run -p ~/.env.crush --no-redact-stdout -- crush'

--no-redact-stdout keeps Crush’s own terminal output unredacted while secrets stay out of your shell history.