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.
Reaches your data
Answers from public docs.
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.
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.
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.
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.
Each project gets an isolated memory store the agent reads and writes with remember() / recall(). Survives session end; isolated from other projects.
Acts in your project
Returns a string.
Issues refunds, updates records, opens tickets — through your APIs, with approval flows for high-stakes actions.
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
Declare your APIs as tools. Tavora handles the calling loop, retries, and structured-output parsing.
Any tool can require human approval over a threshold. The agent pauses; an operator confirms; the run continues.
Every tool call carries a key. Retried calls don't double-charge, double-refund, or double-create.
When the model writes JavaScript instead of calling tools, it runs in a hardened JS sandbox with no network and a memory cap.
Judgable, not vibes
Looks right.
Shows the JS it ran, the tools it called, the data it touched. Replay any turn. Eval-gated before deploy.
Click a production turn; see the exact plan, tool calls, model outputs, and data the agent saw. Step through it.
Author eval cases as evals/*.json files in your tavora/ folder. Run them in CI. Track regression scores per deploy.
Sample production traffic, run it through your evals, alert when the live distribution drifts from the eval set.
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.
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.
Token-by-token streaming with proper cancellation. Stop a 30-second run mid-flight without leaking tool calls.
Route fast paths to small models, hard cases to big ones. Per-project provider selection driven by agent_versions.provider.
Schema-validated JSON responses with retries on parse failure. The model gets the diff and tries again.
sendEmail() in the agent runtime — Tavora-metered, or BYOK against your Resend / Postmark / SES key in the secret vault.
First-class clients for both. Same surface area, same primitives, same docs.
Run Tavora in our cloud or yours. Same binary. Same app. Bring-your-own-VPC available.
Every plan, tool call, and model invocation emits OTel spans. Drop them into your existing observability stack.
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.