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 keysHYPER_API_KEYfor 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.
In a project
Section titled “In a project”Add to .env.schema:
# @sensitive @requiredANTHROPIC_API_KEY=op(op://api-local/anthropic/api-key)
# @sensitiveOPENAI_API_KEY=op(op://api-local/openai/api-key)
# @sensitiveOPENROUTER_API_KEY=op(op://api-local/openrouter/api-key)varlock run -- crushFrom any directory
Section titled “From any directory”Personal schema at ~/.env.crush:
# @sensitive @requiredANTHROPIC_API_KEY=op(op://api-local/anthropic/api-key)
# @sensitiveOPENAI_API_KEY=op(op://api-local/openai/api-key)varlock run -p ~/.env.crush -- crushShell alias (optional)
Section titled “Shell alias (optional)”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.