Framework adapters
The sectr SDK adapts supported frameworks to the platform’s invoke
contract — your agent code stays 100% framework code. One line per project:
app.add_route("/chat", openai_agents(agent, model=model))What an adapter does
Section titled “What an adapter does”Frameworks already have streaming and HITL machinery. The adapter maps them onto the platform contract (and back):
| Framework concept | Platform contract |
|---|---|
| framework’s stream events | RunnerEvents journaled in order |
| native approval/interruption machinery | ToolApprovalRequired final frame → turn suspended |
| resume after interruption | fresh invocation, reason.kind = "approval_decision", transcript rebuilt from the journal |
| framework memory/summarization | journaled TranscriptCompacted (see compaction) |
The platform never sees framework internals — the journal stores the canonical event vocabulary only, which is what makes the session inspector, the SSE tail, and cross-framework tooling uniform. Full details per page:
openai_agents— complete: streaming, native interruptions, transcript-rebuild resume.langgraph— in progress (built-in memory management maps to compaction).claude_code— deferred; renders the canonical transcript as text.
Which to pick
Section titled “Which to pick”- openai-agents — production-ready today; the first-agent guide is built on it.
- No framework —
sectr.tools+SessionContexthand you the whole agentic loop: the raw example (examples/raw/) is the reference, and the clearest way to learn what the journal captures in every case. - Anything else that streams text and tool calls over an async generator — write a small adapter yourself (the contract is four rules, listed in the adapters reference).