AgentDeck 6.0 is here: serve one deck over HTTP, AG-UI or the terminal.See what's new
AgentDeckv6.0.6
Integrations

OpenAI Agents SDK

Agent(...) compiles to a real agents.Agent, and the openai-agents executor runs it with agents.Runner underneath. An agents.Agent you already built with the SDK directly - its own tools, its own handoffs - drops into a Deck as a handoff target, unrewritten:

from agents import Agent as SDKAgent

specialist = SDKAgent(name="Specialist", instructions="Handle billing disputes in detail.")
from agentdeck import Agent

triage = Agent(
    name="Triage",
    instructions="Handle simple requests yourself. Hand off billing disputes to Specialist.",
    handoffs=[specialist],
)

handoffs=[...] takes a catalog agent's name, an AgentDeck Agent, or an already-compiled SDK object - specialist above passes straight through, unresolved and unvalidated, because it is already what the executor needs. Only triage has to be in Deck(agents=[...]); specialist never does, and never gets a Run of its own - a handoff takes over the run triage already started, recorded as an agent.changed event, not a new one. See Handoffs.

tools=[...] takes the same shortcut: a plain function is compiled fresh, but an already-built Agents SDK tool object is passed straight through, engine-native.

What the Deck adds

Nothing about the SDK agent's own behavior changes. What wrapping it in a Deck adds is what the SDK does not have on its own: a durable Run (pause, resume, cancel, rehydrate from another process), a session across turns, and one event stream regardless of which agent in the catalog answered. See Runs and Lifecycle & Control.