Roadmap
AgentDeck ships in themed releases. Each one has a single sentence it has to satisfy, and an issue that does not satisfy it waits for the release that fits — which is why the list below is short and the milestones are not a dumping ground.
The authoritative list is GitHub Milestones — this page explains the shape, GitHub holds the contents. If the two disagree, GitHub is right and this page is stale.
v3.0.0 — one way to work · released
Deck is the one composition root: Deck(agents=…) and Deck.from_project(), two front doors
onto one catalog. Multimodal input, a versioned event envelope, Context[T] injection carried
over both engines’ native channels, observability declared where the deck is declared, and the
v1 HTTP/SSE wire frozen byte-for-byte.
See the changelog.
v3.1 — hardening · next
Make what exists more correct, more robust, more trustworthy. Ship no new user-facing capability.
Nearly forty issues, most of them findings from people using the SDK rather than reading it. The line for inclusion is what happens when nothing is added: a durable workflow that dies on a transient failure is a defect and belongs here; an agent that receives more tools than it needs still works, and that belongs in v3.2.
What is in it:
- Silent wrong answers first. A tool that raises completes the run with no error recorded; a
tool returning something unserializable has its
repr()written into both the log and the model’s context. Those are worse than crashes and go first. - Things accepted then discarded.
Agent(model=…)is honoured by nothing. A cancel against a run waiting on a human returns success and changes nothing. - Defaults that trap you. A default install cannot run a durable workflow; the default event store empties the approval inbox on restart.
- A test harness. An exported stub-runner, so scripting a model costs a line instead of sixty — the reason several of the above went unnoticed.
- Simplification. Undoing over-engineering is on-theme for this release rather than a distraction from it.
The consequences you can hit today are on Known Issues, with workarounds.
v3.2 — batteries
Additive on the frozen API — what you reach for on your second day, once the surface underneath is trustworthy.
Declarative MCP tool filters and read-only profiles. Reusable approval and external-action nodes.
Presets for the SDK’s hosted tools. A zero-config Preset for the infrastructure a deck opens.
A CLI that can read — list the approval inbox, show a run, answer from a terminal.
v3.3 — rooms & reach
More than one caller.
Standard agent protocols (A2A, an MCP server surface, OpenAI-compatible) as adapters over the event stream. Per-user MCP credentials. Steering — injecting input into a run already in flight. Two decks side by side in one process. Inbox pagination and parallel interrupts.
These are deliberately one release rather than five: they are the same identity question wearing different hats, and answering it five times separately produces five incompatible answers.
v3.4 — agents that work together
One agent reaching another and getting something back.
Subagents — delegate a bounded task and receive the result, as a child run with its own place in the event log, its cost rolled up into the parent, and cancel cascading to it. Advisors — consult a peer about the conversation you are already having, read-only, and resume with the answer without handing the conversation over.
Not planned
Sandboxing. AgentDeck runs your tools, skills and workflow nodes as ordinary Python in your process, and a model-chosen tool call is trusted by design. This is not an oversight and it is not on a milestone — read SECURITY.md before you give an agent something destructive.
Also deliberately absent, and unlikely to change: a YAML agent format, an execution engine of AgentDeck’s own, authentication and multi-tenancy beyond a shared token, model routing, and a prompt-management or evaluation product. The README explains why each one is somebody else’s job.
How something gets onto this page
Findings come from people using the SDK — a first-time user’s session, an outside review, or the documentation assistant’s own failures — and every one gets a disposition: fixed, rejected with a reason, or scheduled against a named issue. Nothing sits in a document with no answer.
If you hit something that is not on Known Issues, open an issue — a reproduction is worth more than a diagnosis.