deskd 0.3.0 — the provider seam
The release where a fresh clone can run its own agents, not just the demo.
The provider seam
deskd.providers—ClaudeCodeProviderships as the built-in default (per-role model via argv; the shared reasoning tierslow|medium|high|maxmap to a thinking-token budget in the child env).CommandProviderturns any CLI into a provider from an argv template with placeholders — unset values drop their element (and its dangling flag) cleanly. Register customs viaconfigure(providers=(…,)); a host entry namedclaudereplaces the built-in instead of forking it. SubclassProviderfor custom preflights and sandboxes.- Per-role runtime tuning as engine state —
deskd runtime show | set-provider | set-model | set-reasoning <value|default> --role R, stored on the registry row, validated at set time. Model/thinking differ per role on purpose. deskd agent run | command | session-provider— the driver arm. Enforces the invariants every driver must keep: sessions never resume under a provider that did not create them (owner recorded asharness#provider; the new provider takes over at the next cold spawn); roles with no declared tool grant get the driver's fail-closed default; preflight refusal exits 75 and leaves the demand pending; sessions are parked after a turn, not ended. The reference cron driver now launches through this seam (DESKD_AGENT_CMDremains as the deprecated raw-command path).
Wake-ladder honesty (since 0.2.x)
- An unpaid termination vote names itself: wake labels and human-rung pages say "your vote closes it",
wake_sourcesanswers withvotes_owed, and escalation pages carry a durableRef:that outlives self-healing demands. - Escalations can be answered: asks are demands on someone, not telemetry; a rejection is a demand on the proposer.
- Wake generations, resumable meetings, console static revalidation, vacated-desk rendering, and a host-extensible console nav.
Upgrade: pip install -U "deskd[web]". New public modules only — no breaking changes; existing hosts keep their own drivers until they opt into the seam.