Choose a harness
A harness is the agent framework your code runs inside. Tanomis supports two Python harnesses, and they share everything that is not your code: the manifest, the build, versions, tenant enablement, the session runtime, governed tools, and evidence. Pick by how you want to express the agent.
The choice
Section titled “The choice”claude-agents-sdk |
deepagents |
|
|---|---|---|
| Best fit | A system prompt plus tools, or an existing Claude Agent SDK agent | Tool-heavy or graph-shaped work, or existing LangGraph code |
| Entrypoint returns | (prompt, options) |
A graph from create_deep_agent |
| Tools | Claude Agent SDK tools, hooks, subagents | Typed LangChain tools and middleware |
| State between turns | Claude SDK session continuity | LangGraph checkpoints in the session workspace |
| Approvals and questions | permission_mode: "default" plus the manifest’s list |
Manifest list composed with author interrupt_on |
Choose Claude Agent SDK when the behaviour is naturally a prompt with options and you want the least code. Choose Deep Agents when the agent is a graph of typed tools, needs structured output or middleware, or already exists as LangGraph code.
What does not change
Section titled “What does not change”The runtime owns tenant isolation, the working directory, the resolved model and provider credentials, session identifiers, governed connectors, and persistence. You own the instructions, the tool implementations, and the behaviour the manifest permits. The entrypoint contract is the same shape for both.
List the harnesses your installed CLI supports rather than copying a value from memory:
tanomis agent harnessesWhere to go next
Section titled “Where to go next”- Claude Agent SDK: the entrypoint, the ownership boundary, approvals.
- Deep Agents: the graph entrypoint, dependencies, tool interrupts.
- Write your agent: what comes in and what you return.