Installation

Crush ships as a single binary and installs on macOS, Linux, Windows, FreeBSD, and more.

Crush ships as a single binary and installs just about everywhere. Pick your poison:

PlatformJump to
Anywhere with Nodenpm
macOSHomebrew
LinuxArch, Nix, Debian/Ubuntu, Fedora/RHEL
WindowsWinget, Scoop
FreeBSDpkg
Anywhere with GoFrom source

npm

The easiest option, and it works anywhere and everywhere Node runs — macOS, Linux, Windows:

npm install -g @charmland/crush

macOS

brew install charmbracelet/tap/crush

Linux

Arch Linux (btw)

yay -S crush

Nix

nix run github:numtide/nix-ai-tools#crush

Nix (NUR)

Crush is available via the official Charm NUR in nur.repos.charmbracelet.crush, which is the most up-to-date way to get Crush in Nix.

You can also try out Crush via the NUR with nix-shell:

# Add the NUR channel.nix-channel --add https://github.com/nix-community/NUR/archive/main.tar.gz nurnix-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;              };            };          };        }      ];    };  };}

Debian/Ubuntu

sudo mkdir -p /etc/apt/keyringscurl -fsSL https://repo.charm.sh/apt/gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/charm.gpgecho "deb [signed-by=/etc/apt/keyrings/charm.gpg] https://repo.charm.sh/apt/ * *" | sudo tee /etc/apt/sources.list.d/charm.listsudo apt update && sudo apt install crush

Fedora/RHEL

echo '[charm]name=Charmbaseurl=https://repo.charm.sh/yum/enabled=1gpgcheck=1gpgkey=https://repo.charm.sh/yum/gpg.key' | sudo tee /etc/yum.repos.d/charm.reposudo yum install crush

Windows

# Wingetwinget install charmbracelet.crush # Scoopscoop bucket add charm https://github.com/charmbracelet/scoop-bucket.gitscoop install crush

FreeBSD

pkg install crush

From source

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

Binaries

Or, download it:

  • Packages are available in Debian and RPM formats

  • Binaries are available for Linux, macOS, Windows, FreeBSD, OpenBSD, and NetBSD

Read this post in your terminal with glow:glow -p https://crush.charm.land/installation.md

EOF