Your new coding bestie, now available in your favourite terminal.
Your tools, your code, and your workflows, wired into your LLM of choice.
终端里的编程新搭档,
无缝接入你的工具、代码与工作流,全面兼容主流 LLM 模型。
http, stdio, and sse)Use a package manager:
# Homebrew
brew install charmbracelet/tap/crush
# NPM (macOS, Linux, and Windows)
npm install -g @charmland/crush
# Arch Linux (btw)
yay -S crush
# Nix
nix run github:numtide/nix-ai-tools#crush
# FreeBSD
pkg install crush
Windows users:
# Winget
winget install charmbracelet.crush
# Scoop
scoop bucket add charm https://github.com/charmbracelet/scoop-bucket.git
scoop install crush
# Add the NUR channel.
nix-channel --add https://github.com/nix-community/NUR/archive/main.tar.gz nur
nix-channel --update
# Get Crush in a Nix shell.
nix-shell -p '(import <nur> { pkgs = import <nixpkgs> {}; }).repos.charmbracelet.crush'
### NixOS & Home Manager Module Usage via NUR
Crush provides NixOS and Home Manager modules via NUR.
You can use these modules directly in your flake by importing them from NUR. Since it auto detects whether it's a home manager or nixos context you can use the import the exact same way :)
{
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
nur.url = "github:nix-community/NUR";
};
outputs = { self, nixpkgs, nur, ... }: {
nixosConfigurations.your-hostname = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
modules = [
nur.modules.nixos.default
nur.repos.charmbracelet.modules.crush
{
programs.crush = {
enable = true;
settings = {
providers = {
openai = {
id = "openai";
name = "OpenAI";
base_url = "https://api.openai.com/v1";
type = "openai";
api_key = "sk-fake123456789abcdef...";
models = [
{
id = "gpt-5.6-sol";
name = "GPT-5.6 Sol";
}
];
};
};
lsp = {
go = { command = "gopls"; enabled = true; };
nix = { command = "nil"; enabled = true; };
};
options = {
context_paths = [ "/etc/nixos/configuration.nix" ];
tui = { compact_mode = true; };
debug = false;
};
};
};
}
];
};
};
}
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://repo.charm.sh/apt/gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/charm.gpg
echo "deb [signed-by=/etc/apt/keyrings/charm.gpg] https://repo.charm.sh/apt/ * *" | sudo tee /etc/apt/sources.list.d/charm.list
sudo apt update && sudo apt install crush
echo '[charm]
name=Charm
baseurl=https://repo.charm.sh/yum/
enabled=1
gpgcheck=1
gpgkey=https://repo.charm.sh/yum/gpg.key' | sudo tee /etc/yum.repos.d/charm.repo
sudo yum install crush
Or, download it:
Or just install it with Go:
go install github.com/charmbracelet/crush@latest
On illumos (OpenIndiana, OmniOS), the command above works as-is. Only native
OS notifications are unavailable there; terminal-based notifications (OSC) and
the terminal bell still work. On Oracle Solaris, add -tags sqlite3_dotlk so
the local database uses dot-file locking:
go install -tags sqlite3_dotlk github.com/charmbracelet/crush@latest
[!WARNING] Productivity may increase when using Crush and you may find yourself nerd sniped when first using the application. If the symptoms persist, join the [Slack][slack] or [Discord][discord] and nerd snipe the rest of us.
The quickest way to get started is to choose a Hyper model from model picker. Follow the steps to authenticate and you'll be good to go.
Hyper, from Charm, is the official Crush provider. It’s subscription-based and optimized for Crush. It’s privacy focused, with zero data retention (ZDR) and is designed to comply with GDPR. More on Hyper.
You can also use Crush with many other providers such as Anthopic, OpenAI, Gemini, OpenRouter and so on. Press ctrl+l to open the model picker, choose the provider of your choice, and paste your API key.
That said, you can also set environment variables for preferred providers:
| Environment Variable | Provider |
|---|---|
HYPER_API_KEY |
Charm Hyper |
ANTHROPIC_API_KEY |
Anthropic |
OPENAI_API_KEY |
OpenAI |
VERCEL_API_KEY |
Vercel AI Gateway |
GEMINI_API_KEY |
Google Gemini |
ZAI_API_KEY |
Z.ai |
MINIMAX_API_KEY |
MiniMax |
SYNTHETIC_API_KEY |
Synthetic |
HF_TOKEN |
Hugging Face Inference |
CEREBRAS_API_KEY |
Cerebras |
OPENROUTER_API_KEY |
OpenRouter |
IONET_API_KEY |
io.net |
ALIBABA_SINGAPORE_API_KEY |
Alibaba (Singapore) |
ALIBABA_US_API_KEY |
Alibaba (United States) |
GROQ_API_KEY |
Groq |
AVIAN_API_KEY |
Avian |
OPENCODE_API_KEY |
OpenCode Zen & Go |
VERTEXAI_PROJECT |
Google Cloud VertexAI (Gemini) |
VERTEXAI_LOCATION |
Google Cloud VertexAI (Gemini) |
AWS_ACCESS_KEY_ID |
Amazon Bedrock (Claude) |
AWS_SECRET_ACCESS_KEY |
Amazon Bedrock (Claude) |
AWS_REGION |
Amazon Bedrock (Claude) |
AWS_PROFILE |
Amazon Bedrock (Custom Profile) |
AWS_BEARER_TOKEN_BEDROCK |
Amazon Bedrock |
AZURE_OPENAI_API_ENDPOINT |
Azure OpenAI models |
AZURE_OPENAI_API_KEY |
Azure OpenAI models (optional when using Entra ID) |
AZURE_OPENAI_API_VERSION |
Azure OpenAI models |
MOONSHOT_API_KEY |
Moonshot |
XAI_API_KEY |
xAI |
Also note that Crush can support nearly any provider, including Local Models. For more info see Custom Providers below.
Is there a provider you’d like to see in Crush? Is there an existing model that needs an update?
Crush’s default model listing is managed in Catwalk, a community-supported, open source repository of Crush-compatible models, and you’re welcome to contribute.
[!TIP] Crush ships with a builtin skill for configuring itself. Most of the time you can just tell what you want it to configure and it will get the job done.
Crush runs great with no configuration. That said, if you do need or want to
customize Crush, you can, with a crushrc.
A crushrc is just Bash with some Crush-specific builtins. It’s a lot like
a .bashrc, just for your Crush. Because Crush has a native, built-in Bash
interpreter, Bash-based config works identically across all platforms, including
Windows.
For example:
```bash
provider add ollama --type ollama --base-url "http://localhost:11434/v1"
model add ollama/llama3.3 --name "Llama 3.3" --context-window 128000
permissions allow view e
| 日期 | 榜单 | 排名 | 周期新增 | 总 STAR |
|---|