This release fixes issues for SREs watching stability and regressions.
✓ No known CVEs patched in this version
Topics
+14 more
Affected surfaces
Summary
AI summaryFixed bernstein doctor crash due to missing runtime dependency and local dashboard auth lockout.
Changes in this release
| Type | Severity | Summary | CVE |
|---|---|---|---|
| Dependency | Medium |
Adds 'packaging' as a direct runtime dependency. Adds 'packaging' as a direct runtime dependency. Source: llm_adapter@2026-07-20 Confidence: medium |
— |
| Bugfix | Medium |
Fixes local dashboard locking out operators on loopback with auth configured. Fixes local dashboard locking out operators on loopback with auth configured. Source: llm_adapter@2026-07-20 Confidence: medium |
— |
| Bugfix | Low |
Restores ability to rebuild the bundled web UI after Tailwind version mismatch. Restores ability to rebuild the bundled web UI after Tailwind version mismatch. Source: llm_adapter@2026-07-20 Confidence: medium |
— |
Full changelog
v3.8.1
Patch release: two operator-facing fixes to the local dashboard and a missing runtime dependency, both surfaced by an end-to-end run of the released 3.8.0 build.
Fixed
bernstein doctorno longer crashes on a clean install (#2735).doctor(and its adapter last-green, security-floor, and advisory checks) importpackaging.versionat runtime, butpackagingwas only present transitively via dev tooling and was never a declared runtime dependency, so auv tool install bernsteinshipped without it anddoctorraisedModuleNotFoundError: No module named 'packaging'.packagingis now a direct runtime dependency, with a contract test that fails if any runtime module imports it while it is undeclared.- The local dashboard no longer locks the operator out (#2736). Running
bernstein gui serveon loopback with dashboard auth configured loaded the UI shell but returned 401 on every data panel, because the local serve path never handed the browser a credential and the bundled SPA wrote the onboarding token to a different localStorage key than the API layer read. The local serve path now seeds a token for the loopback browser, and the shipped SPA bundle was rebuilt so the write and read keys agree. External unauthenticated access still returns 401; the auth posture is unchanged.
Build
- The bundled web UI could not be rebuilt: an earlier dependency bump moved it to Tailwind v4 while the stylesheet and PostCSS config stayed on the v3 form, so
npm run buildfailed. Tailwind is pinned back to the version the configuration targets, and the regenerated bundle ships with this release.
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 chernistry/bernstein
Deterministic multi-agent orchestrator for 18 CLI coding agents (Claude Code, Codex, Cursor, Aider, Gemini CLI, OpenAI Agents SDK, and more). MCP server mode (stdio + HTTP/SSE) exposes the orchestrator to any MCP client. Git worktree isolation per agent, HMAC-chained audit trail, cost-aware model routing via contextual bandit. ~11K monthly PyPI downloads, Apache 2.0.
Related context
Related tools
Earlier breaking changes
- v3.7.1 `bernstein approve` and `bernstein reject` now enforce identifier regex `[A-Za-z0-9._-]{1,64}`.
- v3.7.1 Tampered mission ledger reports as unverified rather than not-found.
- v3.7.1 `mission define` now refuses phases without gate tasks.
- v3.5.0 MCP client, transport, and gateway become stateless; calls carry content‑derived trace IDs in _meta.
Beta — feedback welcome: [email protected]