Odds and Ends, Hugging Face, Metrics and a Star-Studded Cast
This release has a bunch of small quality-of-life features—largely from the community—and a barrel of bug fixes.
Thanks, community!
@caarlos0 went ham and merged a bunch of feature, fix and housekeeping PRs from the community. We’re so floored with your highly-quality contributions and we’re honored you’re spending time in the Crush codebase. Thank you!
Hugging Face
We all love Hugging Face, and their commitment to open source models is very much in line with our ethos. With that, we're happy release adds support for their inference layer.

Metrics
This release adds pseudoanonymous usage metrics (via a device hash) to help us inform development and support priorities. The metrics solely include usage data; prompts and responses are never collected.
For details on what’s collected, and to opt-out, see the README.
Thank you
Thanks, as always, for your contributions, feedback, good jokes, and great vibes. See you next release! 💘
Changelog
New!
- 6b161d2: feat(config): allow custom providers of type gemini (#585) (@kslamph)
- 701e550: feat(config): search
crush.json
recursively up from the working directory (#898) (@bbrodriges) - 0da5e6b: feat(lsp): load defaults by either name or command (#1109) (@caarlos0)
- 9654218: feat(permissions): pretty-print MCP JSON (@Amolith)
- 3b6a375: feat: add alt/option+esc binding to current esc key behavior (@maxjustus)
Fixed!
- 831a95a: fix(deps,lsp): update powernap for zig (@caarlos0)
- 1f46a69: fix(grep): resolve Windows path parsing with null separation (#1095) (@zoete)
- 4926722: fix(lsp): command (@caarlos0)
- 4dd2b17: fix(lsp): improve error messages (@caarlos0)
- 2fd3b43: fix(mcp): improve timeout errors (#1108) (@caarlos0)
- 91b6b31: fix(mcp): pass down mcp name to logger (#1078) (@caarlos0)
- 38bde49: fix(tui): yes/no init selection (#1074) (@aymanbagabas)
- ab96589: fix: disable providers (#1087) (@caarlos0)
- 1f35d54: fix: lsp/mcp command expand ~ (#1105) (@caarlos0)
- 3694768: fix: remove from title (@caarlos0)
- 47a6d02: fix: session summarization dialog hanging indefinitely (#528) (@bold84)
- fa34edc: refactor: put tool descriptions in markdown files (#1077) (@caarlos0)
- 6c990b2: refactor: remove unused prompt (#1083) (@caarlos0)
Docs
- 976425c: docs(readme): add mini Chinese description (thanks @OhJia) (@meowgorithm)
- d55f807: docs: add bit about nixos module (#606) (@taciturnaxolotl)
- c2d85d1: docs: add huggingface inference (@kujtimiihoxha)
- 3ba15bf: docs: aws profile/region envs (#1104) (@caarlos0)
- ee860b9: docs: document more mcp options (@caarlos0)
- 00072cd: docs(readme): fix a typo (#1084) (@msteinert)
Other stuff
- ef6a324: chore: add metrics and error tracking (@andreynering)
- d0edf44: chore: home pkg godoc (@caarlos0)
- feb184d: chore: task fmt (#1098) (@Amolith)
Verifying the artifacts
First, download the checksums.txt
file, for example, with wget
:
wget 'https://github.com/charmbracelet/crush/releases/download/v0.10.0/checksums.txt'
Then, verify it using cosign
:
cosign verify-blob \
--certificate-identity 'https://github.com/charmbracelet/meta/.github/workflows/goreleaser.yml@refs/heads/main' \
--certificate-oidc-issuer 'https://token.actions.githubusercontent.com' \
--cert 'https://github.com/charmbracelet/crush/releases/download/v0.10.0/checksums.txt.pem' \
--signature 'https://github.com/charmbracelet/crush/releases/download/v0.10.0/checksums.txt.sig' \
./checksums.txt
If the output is Verified OK
, you can safely use it to verify the checksums of other artifacts you downloaded from the release using sha256sum
:
sha256sum --ignore-missing -c checksums.txt
Done! You artifacts are now verified!
Thoughts? Questions? We love hearing from you. Feel free to reach out on X, Discord, Slack, The Fediverse, Bluesky.