v0.70.0

charmbracelet/crushv0.70.0May 18, 2026by github-actions[bot]

AI Summary

New Alibaba provider added with Singapore region, improved retry logic that now handles network errors, and continued hardening of the experimental client-server architecture.

Key Highlights

  • New Alibaba provider (Singapore region)
  • Retry on network errors (DNS failures, offline scenarios)
  • Client-server mode fixes for OAuth and handler panics
  • Restored TODO pills in client-server mode

New Features

  • Alibaba (Singapore) provider support

Full Release Notes

# Alibaba, Better Retries, and Client-Server

We're starting the week with some good stuff. Let's check them out!

## New Provider: Alibaba

A new provider is available: Alibaba! Just open the model picker with <kbd>ctrl+m</kbd>, search for Alibaba and paste your API key. Alternatively, you can set `$ALIBABA_SINGAPORE_API_KEY`.

Alibaba has a few regions, but we're starting with the main one: Singapore as the hot new models are available there, like the newer Qwens.

<img width="680" height="442" alt="Screenshot 2026-05-18 at 14 52 17" src="https://github.com/user-attachments/assets/96d69d21-0d39-450f-afbe-434d6070a6d7" />

## Better Retries

Thanks to @processtrader, Crush is now a bit smarter on retries. Instead of just retrying on specific error codes (400, 500, etc), Crush will now _also_ retry on network errors (in case you're offline for a second, or a DNS query failed, etc).

## Hardening Client-Server Mode

Crush has an experimental/client server mode which can be used to extend Crush, operate more effectively with multiple sessions, and connect to remote Crush instances.

We’re using client/server more and more internally, so it's time to harden it. This release fixes some bugs that were blocking us from using it day to day.

If you want to try out client/server mode,  Crush has an experimental client-server architecture refactor happening, currently available via:

```bash
export CRUSH_CLIENT_SERVER=1
```

That's it for today. Stay tuned for more soon!
Charm :cupid:

## Changelog
### New!
* 4882cbc015577578d61ac90b4393fa28ae2633c6: feat: add aliababa (singapore) provider (#2949) (@andreynering)
### Fixed
* 0c99e778d9d9fdf05606b33ec5dc666fdb89e06f: fix(auth): support oauth in client-server mode (@meowgorithm)
* 9c35ee0141f5afb99f69cd912797d018d9681c9f: fix(server): recover from handler panics + return 500 (@meowgorithm)
* 0bbc8a87e8695c5224d870df49f613191122c740: fix(ui): restore pills to-do in client/server mode (@meowgorithm)
* a4befc299ab9b69647fd5dc3607b5fa79e67bd11: fix: retry on network errors (#2945) (@andreynering)
### Other stuff
* 45b1e634a5479297d94141ffc603a1d09f9b6326: chore: gofumpt project (@meowgorithm)
* c433fd633a084c52f7efd0155454564135fa5330: perf: remove hot-path slog.Info from SSE event delivery (#2929) (@taigrr)

---

<details>
<summary>Verifying the artifacts</summary>

First, download the [`checksums.txt` file](https://github.com/charmbracelet/crush/releases/download/v0.70.0/checksums.txt) and the [`checksums.txt.sigstore.json` file](https://github.com/charmbracelet/crush/releases/download/v0.70.0/checksums.txt.sigstore.json) files, for example, with `wget`:

```bash
wget 'https://github.com/charmbracelet/crush/releases/download/v0.70.0/checksums.txt'
wget 'https://github.com/charmbracelet/crush/releases/download/v0.70.0/checksums.txt.sigstore.json'
```

Then, verify it using [`cosign`](https://github.com/sigstore/cosign):

```bash
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' \
  --bundle 'checksums.txt.sigstore.json' \
  ./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`:

```bash
sha256sum --ignore-missing -c checksums.txt
```

Done! You artifacts are now verified!

</details>

<a href="https://charm.land/"><img alt="The Charm logo" src="https://stuff.charm.sh/charm-banner-next.jpg" width="400"></a>

Thoughts? Questions? We love hearing from you. Feel free to reach out on [X](https://x.com/charmcli), [Discord](https://charm.land/discord), [Slack](https://charm.land/slack), [The Fediverse](https://mastodon.social/@charmcli), [Bluesky](https://bsky.app/profile/charm.land).