Changelog
Rendered from the repository’s own CHANGELOG.md, so this page cannot drift from it. Entries
are written for someone using the package: what changed, and what to do about it.
The current release is v3.1.0. Earlier releases are listed at the bottom.
v3.1.0
Released 2026-08-13.
AgentDeck is on PyPI, under the name agentdeck-sdk.
pip install agentdeck-sdk # was: an install from the repository at a tagThe import does not change. import agentdeck is what it always was, and no code needs
editing. Only the line that installs it moves.
Added
agentdeck.testing, the exported stub-runner test harness (#26):ScriptedModel(text deltas, an optional tool call, mid-stream failure, aholdgate for catching a consumer mid-await, configurable usage counts),patch_model()(swaps the SDK’s model provider for the duration of awithblock), andscripted_model_server()(a local Chat-Completions-compatible HTTP endpoint for a test that must run agentdeck as a real subprocess or a real HTTP client). Every one of this repo’s own hand-rolled scripted models now builds on it.
Changed
-
The distribution is renamed
agentdeck→agentdeck-sdk. Not a preference: PyPI refuses the nameagentdeckas “too similar to an existing project” — an abandonedagent-deckplaceholder (one release, author"Your Name", summary “A placeholder package”) that its similarity check treats as the same name once separators are stripped.agentdeck-sdkalso matches the brand.Install and import names now differ, which puts AgentDeck in company it did not choose but is used to seeing —
openai-agentsimports asagents,beautifulsoup4asbs4,python-dateutilasdateutil. Extras keep their names:agentdeck-sdk[serve],[durability],[observability].A PEP 541 request for the squatted name is open. If it is granted,
agentdeckbecomes the distribution andagentdeck-sdkbecomes a shim that depends on it — no import changes then either. -
Every install line is now a PyPI install, not a pinned
git+https://…@vX.Y.ZURL. The git form still works and is still what a contributor uses for an unreleased commit.
Fixed
agentdeck.__version__would have reported0+unknownafter the rename. It resolves throughimportlib.metadata.version(), which takes the distribution name — renaming the distribution without updating that call makes the lookup miss and fall through to the not-installed fallback, silently. Caught before release; the fallback now only fires when the package genuinely is not installed, which is what it is for.Agent(model=...)now actually runs on the model it names, instead of being silently overridden byOPENAI_MODELon every turn (#247). The host Agents SDK’sRunConfig.modeloverrides every agent’s own model once set, and every run’s config set it fromOPENAI_MODELunconditionally — so a per-agent override was accepted, type-checked, and then discarded one layer later. The default is now resolved onto the compiled agent instead, at build time: an agent that declares its own model keeps it, one that declares none still getsOPENAI_MODEL, and this holds across handoffs andas_tool()since each agent resolves its own model independently of which one is playing.- A checkpoint connection failure now raises
StoreErrornamingAGENTDECK_CHECKPOINT, instead of a bare driver exception (#233). An unwritable sqlite checkpoint path raisedsqlite3.OperationalError: unable to open database file, and a bad Postgres DSN raisedpsycopg.OperationalError— neither said which setting caused it or that agentdeck had resolved the path at all, unlike every other store, which already answers connection failures this way. The sqlite message also names the resolved file path; the Postgres one does not, since a DSN can carry a password. A driver error raised mid-run is unaffected. agentdeck-serve --help(and-h) now prints usage and exits 0 instead of crashing with aFileNotFoundErrorfor a missing./.agentdeckproject.--host/--portflags were added, defaulting to the existingHOST/PORTenv vars, so passing neither behaves exactly as before; an unrecognized argument now exits 2 with usage instead of being silently ignored. (#245)AGENTDECK_RUNNER_WORKFLOW_NAMEno longer defaults tolocal-sandbox-repl. That value named v1’s sandboxed local REPL, deleted in #71 — every untuned run was labeling its tracing (e.g. Langfuse) after a development tool that no longer exists. The default is nowagentdeck.
Earlier releases
| Version | Date | Notes |
|---|---|---|
| v3.0.1 | 2026-08-12 | release notes |
| v3.0.0 | 2026-08-11 | release notes |
| v3.0.0b1 | 2026-08-10 | release notes |
| v2.0.0 | 2026-08-06 | release notes |
| v2.0.0b4 | 2026-08-06 | release notes |
| v2.0.0b3 | 2026-08-05 | release notes |
| v2.0.0b2 | 2026-08-05 | release notes |
| v2.0.0b1 | 2026-08-05 | release notes |
| v1.2.1 | 2026-08-03 | release notes |
| v1.2.0 | 2026-07-28 | release notes |
| v1.1.0 | 2026-07-27 | release notes |
| v1.0.0 | 2026-07-27 | release notes |
| v0.2.0 | 2026-07-26 | release notes |
| v0.1.0 | 2026-07-26 | release notes |