v0.13.0
A smarter, stronger Crush
Hi everyone! 👋
This new release includes a significant refactor on Crush internals:
- Crush is now much more resilient on the provider level and is now powered by a new library we've developed to normalize agentic workflows across providers.
- System prompts, tool calls and other important pieces were also tweaked to generally improve Crush’s behavior.
As a result, Crush should now to perform better on the provider-model and system prompt levels for better speeds, lower token usage, and better output across the board.
Config update for OpenAI-compatible providers
If you have any custom providers that use an OpenAI-compatible API, we highly recommend updating its type on the config from openai to openai-compat. With this, Crush will now behave better with these providers, with extra features that were previously unavailable.
Note
If you have a custom provider that is just a proxy or router through the actual OpenAI API, please keep the type as just openai.
Do not hesitate to reach out on our Slack and Discord servers if you have any feedback! ✨
Changelog
New!
- bc3858f feat: refactor providers and improve system prompt (#1171) (@kujtimiihoxha and @andreynering)
Fixed
- 139749a: fix(tests): remove embedded providers, regenerate fixtures (@kujtimiihoxha)
Docs
- 85c57a4: docs(readme): add note section about
openaivs.openai-compat(@andreynering)
Other stuff
- 14ca920: chore: change providers url in the log (@kujtimiihoxha)
- f1b0dbb: chore: clone headers (@kujtimiihoxha)
- a314610: chore: do not override old headers (@kujtimiihoxha)
- 847cbbe: chore: do not prompt for init when empty (@kujtimiihoxha)
- ca09597: chore: do not respond with error (@kujtimiihoxha)
- 13d75fe: chore: improve edit instructions (@kujtimiihoxha)
- ec9f94f: chore: improve initialize (@kujtimiihoxha)
- 2aedcb7: chore: improve summarize logic (@kujtimiihoxha)
- 780459f: chore: make thinking mode persistent (@kujtimiihoxha)
- 5d42049: chore: more prompt improvements (@kujtimiihoxha)
- 042725f: chore: small fix (@kujtimiihoxha)
- a3e699d: chore: small fixes and catwalk update (@kujtimiihoxha)
- 342bc9e: chore: update docs (@kujtimiihoxha)
- f172aaa: perf: init coder agent in a goroutine (#1289) (@caarlos0)
Verifying the artifacts
First, download the checksums.txt file, for example, with wget:
wget 'https://github.com/charmbracelet/crush/releases/download/v0.13.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.13.0/checksums.txt.pem' \
--signature 'https://github.com/charmbracelet/crush/releases/download/v0.13.0/checksums.txt.sig' \
./checksums.txtIf 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.txtDone! You artifacts are now verified!
Thoughts? Questions? We love hearing from you. Feel free to reach out on X, Discord, Slack, The Fediverse, Bluesky.

{ "$schema": "https://charm.land/crush.json", "providers": { "my-custom-provider": { "type": "openai-compat", // ... } } }