This release includes 1 breaking change for platform teams planning a safe upgrade.
✓ No known CVEs patched in this version
Topics
+2 more
Affected surfaces
ReleasePort's take
Light signalStarting with version v0.1.1, every environment variable must be prefixed with ALLUVIA_.
Why it matters: All configuration variables now require the ALLUVIA_ prefix; failure to update existing vars will cause them to be ignored.
Summary
AI summaryUpdates comma-separated, AIMD, and https://pypi.org/project/alluvia/0.1.1/ across a mixed release.
Changes in this release
| Type | Severity | Summary | CVE |
|---|---|---|---|
| Breaking | High |
All environment variables now require the ALLUVIA_ prefix. All environment variables now require the ALLUVIA_ prefix. Source: llm_adapter@2026-07-18 Confidence: low |
— |
| Feature | Medium |
Introduces an LLM governor with cooldown ladders, circuit breakers, and fallthrough chains. Introduces an LLM governor with cooldown ladders, circuit breakers, and fallthrough chains. Source: granite4.1:30b@2026-07-18-audit Confidence: low |
— |
| Feature | Medium |
Fallthrough chains allow distill/label/status/why calls to switch models when a model's daily budget is exhausted on Groq's free tier. Fallthrough chains allow distill/label/status/why calls to switch models when a model's daily budget is exhausted on Groq's free tier. Source: granite4.1:30b@2026-07-18-audit Confidence: low |
— |
| Feature | Medium |
Fallthrough chains are configurable per role via `ALLUVIA_LLM_CHAIN_<ROLE>` environment variables. Fallthrough chains are configurable per role via `ALLUVIA_LLM_CHAIN_<ROLE>` environment variables. Source: granite4.1:30b@2026-07-18-audit Confidence: low |
— |
| Feature | Medium |
`refresh` prints per-stage summaries and warnings with provider retry times when a stage degrades. `refresh` prints per-stage summaries and warnings with provider retry times when a stage degrades. Source: granite4.1:30b@2026-07-18-audit Confidence: low |
— |
| Feature | Medium |
Distillation pauses immediately when every model is cooling and can be resumed later. Distillation pauses immediately when every model is cooling and can be resumed later. Source: granite4.1:30b@2026-07-18-audit Confidence: low |
— |
| Feature | Low |
`propose` never falls through; generation fails loudly instead of silently downgrading. `propose` never falls through; generation fails loudly instead of silently downgrading. Source: granite4.1:30b@2026-07-18-audit Confidence: low |
— |
| Feature | Low |
When the status classifier is unavailable, `unfinished` uses heuristic statuses (open or dormant) instead of unknown. When the status classifier is unavailable, `unfinished` uses heuristic statuses (open or dormant) instead of unknown. Source: granite4.1:30b@2026-07-18-audit Confidence: low |
— |
| Feature | Low |
Heuristics for `unfinished` are not cached and are upgraded when the classifier refreshes. Heuristics for `unfinished` are not cached and are upgraded when the classifier refreshes. Source: granite4.1:30b@2026-07-18-audit Confidence: low |
— |
| Feature | Low |
MCP tools, `themes`, `unfinished`, and the dashboard surface degradation signals. MCP tools, `themes`, `unfinished`, and the dashboard surface degradation signals. Source: granite4.1:30b@2026-07-18-audit Confidence: low |
— |
| Feature | Low |
An all-unknown map now indicates the classifier hasn't completed instead of pretending nothing is unfinished. An all-unknown map now indicates the classifier hasn't completed instead of pretending nothing is unfinished. Source: granite4.1:30b@2026-07-18-audit Confidence: low |
— |
| Feature | Low |
Fallback labels cut at word boundaries during distillation pauses. Fallback labels cut at word boundaries during distillation pauses. Source: granite4.1:30b@2026-07-18-audit Confidence: low |
— |
| Performance | Medium |
Adaptive pacing (AIMD) empirically discovers a provider's sustainable request rate. Adaptive pacing (AIMD) empirically discovers a provider's sustainable request rate. Source: granite4.1:30b@2026-07-18-audit Confidence: low |
— |
Full changelog
Resilience release: provider rate limits no longer darken the map (#1, #2, #3).
- LLM governor — every provider call now runs behind a provider-agnostic
governor: escalating cooldown ladder, per-model circuit breakers, and
role→model fallthrough chains, all driven by abstract call outcomes (HTTP
status and the standardRetry-Afterheader are optional fast-paths, never
dependencies). Breaker state persists in SQLite, so short CLI runs respect
cooldowns learned by earlier runs instead of re-hammering an exhausted model. - Fallthrough chains — on Groq's free tier each model has its own daily
budget; distill/label/status/why calls fall through to sibling models when
the head model hits a wall.proposenever falls through — generation fails
loud rather than silently downgrading. Override per role with
ALLUVIA_LLM_CHAIN_<ROLE>(comma-separated). unfinishednever goes dark — when the status classifier is
unavailable, recurring themes get a heuristic status (recently touched →
open, stale → dormant) instead ofunknown. Heuristics are never cached;
the classifier upgrades them on a later refresh.- Degradation is visible —
refreshprints a per-stage summary and a
warning with the provider retry time when a stage degraded;themes/
unfinished, the MCP tools, and the dashboard surface the same signal. An
all-unknownmap now says "the classifier hasn't completed" instead of
pretending nothing is unfinished. - Distillation pauses immediately (and resumably) when every model is cooling;
fallback labels cut at word boundaries; adaptive pacing (AIMD) discovers a
provider's sustainable request rate empirically. - Breaking: every environment variable now uses the
ALLUVIA_prefix
(ALLUVIA_DB,ALLUVIA_LLM_MODEL_<ROLE>,ALLUVIA_LLM_CHAIN_<ROLE>, …) — 0.1.0
shipped them under an inconsistent prefix. If you exported variables for
0.1.0, re-export them with the new prefix;config.tomlusers are
unaffected.
Install: uv tool install alluvia · PyPI · Closes #1, #2, #3
Breaking Changes
- All environment variables now require the ALLUVIA_ prefix (e.g., ALLUVIA_DB, ALLUVIA_LLM_MODEL_, ALLUVIA_LLM_CHAIN_), replacing inconsistent prefixes used in v0.1.0.
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Share this release
About Alluvia
All releases →Related context
Related tools
Earlier breaking changes
- v0.3.0 MCP writes become opt-in by default.
Beta — feedback welcome: [email protected]