Features

The runtime is the part
you don't want to build twice.

Three pillars. Each is one thing demos handle and production doesn't. We built the production half so your team can ship the agentic experience instead.

01 Pillar

Reaches your data

Demo

Answers from public docs.

Production

Reads through your backend — PocketBase, Supabase, your own Go. Tavora doesn't own a copy of your data; the agent calls your APIs via MCP, scoped to your project.

session compose · live ● scoped
// one line — Tavora scopes the runtime to the project
const session = await tavora.sessions.create({
agent: "billing-assistant",
});
// runtime resolves from the API key's project:
memory_store_id: "mem_acme"
secret_vault_id: "vlt_acme"
audit slice: project="acme-corp"
✓ scoped
memory + secrets + audit live in the project
your DB stays yours — agent reads it via MCP
Primitives
Per-project runtime state

A project is the isolation unit. Memory, secrets, and audit are scoped to it automatically; you don't pass a customer ref on every call.

MCP integration

Expose your backend as an MCP server; the agent reaches your data through tools you publish, gated by your auth. Reference adapters for PocketBase and Supabase ship from Tavora.

Encrypted secret vaults

Per-project vaults with envelope encryption. The agent reads provider keys / webhook secrets / SaaS tokens via secret(name) in the sandbox. The platform never returns plaintext over the wire.

Per-project working memory

Each project gets an isolated memory store the agent reads and writes with remember() / recall(). Survives session end; isolated from other projects.

02 Pillar

Acts in your project

Demo

Returns a string.

Production

Issues refunds, updates records, opens tickets — through your APIs, with approval flows for high-stakes actions.

approval queue · paused
awaiting human approval

The agent wants to issue a $847 refund to customer_4f2a.

reason: order #38291 never shipped
policy: §4.2 (over $500 → human review)
project: acme · invoked by: agent.refund-flow
Primitives
Tool definitions

Declare your APIs as tools. Tavora handles the calling loop, retries, and structured-output parsing.

Approval gates

Any tool can require human approval over a threshold. The agent pauses; an operator confirms; the run continues.

Idempotency

Every tool call carries a key. Retried calls don't double-charge, double-refund, or double-create.

Sandboxed code execution

When the model writes JavaScript instead of calling tools, it runs in a hardened JS sandbox with no network and a memory cap.

03 Pillar

Judgable, not vibes

Demo

Looks right.

Production

Shows the JS it ran, the tools it called, the data it touched. Replay any turn. Eval-gated before deploy.

replay · turn_19f8e2 ← step → · scrub
0.0s planner classify intent
0.4s tool getCustomer(id: "4f2a")
0.9s tool getOrders(customer: "4f2a", limit: 5)
1.3s code computeRefundEligibility(orders, policy)
1.7s tool requestApproval(amount: 847)
paused awaiting human approval
Primitives
Replay any turn

Click a production turn; see the exact plan, tool calls, model outputs, and data the agent saw. Step through it.

Eval suites

Author eval cases as evals/*.json files in your tavora/ folder. Run them in CI. Track regression scores per deploy.

Drift detection

Sample production traffic, run it through your evals, alert when the live distribution drifts from the eval set.

Audit log per project

Every plan, tool call, and data access is logged per-project. Searchable. Exportable. SOC 2 ready.

Also in the box

Everything else you'd build
before launch.

The boring infrastructure underneath. None of it is interesting on its own. All of it is required to put an agent in front of customers.

LLM gateway

OpenAI-compatible /chat/completions on top of the same provider registry the agents use. One Tavora bill across agent + non-agent LLM calls. Provider abstraction, audit, policy gating.

Streaming + cancellation

Token-by-token streaming with proper cancellation. Stop a 30-second run mid-flight without leaking tool calls.

Multi-model routing

Route fast paths to small models, hard cases to big ones. Per-project provider selection driven by agent_versions.provider.

Structured outputs

Schema-validated JSON responses with retries on parse failure. The model gets the diff and tries again.

Sandbox agentic email

sendEmail() in the agent runtime — Tavora-metered, or BYOK against your Resend / Postmark / SES key in the secret vault.

SDK in Go & TypeScript

First-class clients for both. Same surface area, same primitives, same docs.

Self-host or managed

Run Tavora in our cloud or yours. Same binary. Same app. Bring-your-own-VPC available.

OpenTelemetry traces

Every plan, tool call, and model invocation emits OTel spans. Drop them into your existing observability stack.

CLI + Terraform

Define agents as code. Version them. Diff them. Roll back. The way you ship the rest of your infra.

Read the docs, or just install the CLI.

Three commands — tavora init, tavora dev, tavora deploy — and your first agent is live.