Ari v0.2.7
Custom endpoints survive a flaky provider
A user's custom endpoint failed constantly under Ari Core while the same endpoint served other harnesses fine. The session journal settled it: four rounds of a turn succeeded, then three 500s landed inside 152 ms and the turn died claiming the model had returned an empty response. An earlier lone 500 in the same turn had been recovered from — so the request was never the problem. The endpoint flakes, and Ari had no HTTP retry anywhere in its request path.
- Retry with backoff. Every streaming transport now retries the connection attempt with exponential backoff and jitter — 5 attempts over roughly 8 seconds. Only congestion and upstream faults qualify (408/425/429/500/502/503/504/529); a status about the request itself, like a 401, fails straight away instead of burning your quota four more times. An endpoint's
Retry-Afterwins when it sends one, capped so a turn is never parked for a minute, and hitting interrupt ends the sequence rather than waiting out a backoff. - The endpoint's own error text is shown. Ari read no response body on a failure, so a gateway's explanation was discarded and every failure printed the same nine words. You now get the status, the attempt count and what the endpoint actually said.
- A broken stream is reported, not swallowed. A connection that died mid-response used to end the round as though the model had simply stopped, or crash the turn with a raw rejection. It now reports the break, keeps the content that arrived, and discards the half-parsed tool call it cut off.
- A transport failure is no longer blamed on the model. The empty-response guard fired instantly with no delay and could not tell a silent model from a dead socket, so it spent its whole budget inside one failure window. Hard endpoint failures now read as themselves, and the turn banner classifies them as Endpoint is failing with somewhere to go next.
- A silent endpoint no longer hangs the turn. A gateway that accepts the connection and then goes away used to leave the turn spinning until you noticed and interrupted by hand. There is now a 120-second silence budget between lines — generous on purpose, since a reasoning model behind a buffering proxy can be slow to its first token.
- An over-long conversation says so. A context overflow arrives as an ordinary
400, so it read as a malformed request. Ari recognises the phrasings endpoints actually use and tells you the transcript outgrew the model's window, with a Conversation too long banner.
Terminal works in packaged builds again
The prebuilt pty binaries now ship with the app on every platform, so the terminal opens to a working shell instead of a blinking cursor in an installed build. Packaging fails loudly if a binary ever goes missing again, rather than shipping a dead terminal — and the universal macOS build now carries both the Apple silicon and Intel addons, which it previously dropped.
Notes for this build
- Installers for Windows, macOS (universal) and Linux are attached below.
- If you point Ari Core at an Anthropic-compatible third-party endpoint rather than Anthropic itself, requests still carry
cache_control. Proxies that reject unknown fields will error; Anthropic's own API and most compatible proxies accept it.