You write the agent in Python. Tanomis packages it, runs it for each of your customers in its own
sandbox, and gives every action an identity, a policy check, and a record. Warm starts, approvals,
and audit come with the platform, not with your code.
Your source becomes an immutable version. A tenant is enabled for it. Your application opens
a session and starts runs. Every run leaves evidence. Nothing skips a step, and nothing
routes traffic until you enable it.
SourceYour Python agent, in your repository.
VersionAn immutable build plus the contract you declared.
EnablementWhich version each tenant serves, canary or baseline.
SessionA conversation or unit of work, warm-started in under a second.
RunOne request, streamed, pausable for a person.
EvidenceWho asked, what was allowed, what happened, signed.
Whatever the agent does, the same six things happen around it. The example below follows one
run end to end: a support copilot answering a ticket for the customer bluewater-bank, that needed
a refund approved before it could finish.
Example: one governed runA support copilot answering a ticket for one customer.
Identity
Support team memberThe authenticated principal starts the request.
Context
Northwind / bluewater-bankYour organization and the customer tenant the run serves.
Policy checkpoint
Action allowedPrincipal authority, tenant policy, and the version contract intersect.
Agent action
support-copilot@0.4.0The exact version that acted, attested by the platform.
Human decisionwhen required
Refund approvedWhen supported and required, a durable interaction pauses and resumes the run.
Evidence
succeededA run_completed event can signal completion; the run resource status is authoritative.
Working with a coding agent such as Claude Code, Codex, or Cursor? One command installs skills
that teach it to operate Tanomis and registers a documentation MCP server: see
Build with a coding agent.