v0.6.1 - Patch release
Idun Engine v0.6.1 — Password-mode chat fix + per-user scoping
Patch release. Fixes the password-mode chat surface that v0.6.0's security hardening accidentally locked behind /login, and propagates a stable per-session user_id end-to-end so chat history and traces can be scoped per user without a full OIDC ladder.
📋 Full changelog: docs.idun-group.com/changelog
Install
pip install --upgrade idun-agent-engine==0.6.1
idun setup
idun serveOpen http://localhost:8000 — your agent runs at /, admin at /admin, traces at /admin/traces.
Highlights
- Chat works under password auth again. The chat root no longer calls the admin-gated
api.getAgent(), which after #614's bind-all guardrail caused a 401-redirect-to-/logineven on the open chat surface. Onboarding routing now readsagentReady/bootFailedfrom/runtime-config.jssynchronously at hydration. - Per-user scoping end-to-end. The chat SPA mints a stable per-session
user_id(SSO email when present, else fresh UUID, cached in module state) and attachesX-Idun-User-Idon every/agent/*call. The engine reads it, binds it to acurrent_user_idContextVar that adapter code consumes, and falls through touuid4()if absent — so chat history and traces can be scoped per user without OIDC. bootFailedis a boolean now. The raw boot-error string was previously echoed back to anonymous browsers on/runtime-config.jsand could leak DB URIs, file paths, and parse traces. The SPA only needs truthiness — boolean is sufficient and safe.
What's added
Engine
_resolve_user_idon/agent/*: SSO claim (email>sub) >X-Idun-User-Idheader > freshuuid4().hex. Always returns a non-empty string. The header is trusted only when SSO claims are absent (#671)._bind_user_idContextVar wraps adapter calls inlist_sessionsandget_sessionso the LangGraph adapter can readcurrent_user_idto scope checkpoint metadata (#671).
Standalone
/runtime-config.jsnow carriesagentReady(bool) andbootFailed(bool) so the SPA can decide between rendering chat and redirecting to/onboardingsynchronously, with no extra HTTP roundtrip (#671).- Chat SPA mints a stable per-session
user_idand attachesX-Idun-User-Idon every/agent/*call. Active id renders in the History sidebar (#671).
What's changed
Engine
X-Idun-User-Idis validated: capped at 256 chars; control bytes0x00–0x1Fand0x7Fare rejected; on rejection the resolver falls through to theuuid4fallback so the caller still gets a usable id (#671).
Standalone
_is_public_runtime_pathlets/agent/sessionsand/agent/sessions/{id}through the password gate.useChathits these on every chat page load; without this they 401 and the SPA's global handler hard-navigates to/logineven though chat itself is open underauth_mode: password(#671).BrandedLayoutandInspectorLayoutdrop the duplicated brand from their own chat-area headers; brand (logo + app name) and the activeuser_idmove into the sidebar top, above History/New (#671).
Docs
- Idun Engine rebrand finalized on docs.idun-group.com (#663).
- Launch-grade v0.6.0 release notes backfilled in CHANGELOGs (#664).
Fixed
- Password mode no longer hard-redirects to
/loginon the chat surface. The chat root no longer callsapi.getAgent()(admin-gated under password mode, the source of the 401-redirect-to-/loginbug); onboarding routing now readsagentReady/bootFailedfrom/runtime-config.jssynchronously (#671).
Upgrading from 0.6.0
No config changes required. Plain in-place upgrade:
pip install --upgrade idun-agent-engine==0.6.1If you use the [guardrails] extra, upgrade with the extra preserved:
pip install --upgrade 'idun-agent-engine[guardrails]==0.6.1'idun setup is not required for this patch (no migration changes). Existing sessions and traces are preserved.
Standards composed
LangGraph · Google ADK · AG-UI · OpenTelemetry · MCP · OIDC · FastAPI · Pydantic
Source: GitHub · Docs: docs.idun-group.com · Community: Discord · Book a call: calendar.app.google
🤖 Release notes prepared with Claude Code