Tandem is a runtime layer that sits between AI agents and the tools, data, memory, and actions they use. The model proposes work; Tandem decides which tools are visible at each workflow step, which actions pause for human approval, which memory and context a run can retrieve, and what evidence is recorded. Enforcement happens outside the model, so a system prompt is not the security boundary.
Runs execute with durable state rather than transcript-only history: checkpoints, replayable event history, and materialized run state survive API timeouts and connector failures. Tool calls that fall outside runtime policy are blocked before execution, consequential actions halt at approval gates that collect approve, rework, or cancel decisions, and artifacts, tool-ledger events, and audit records are kept outside the model context window.
Memory and company knowledge are runtime-owned and partitioned by tenant, so an agent acting for one team or project retrieves only the slice it is allowed to use. Sessions, automation runs, context runs, event streams, provider credentials, and MCP secret references all carry tenant context in hosted and shared modes, and the enterprise contract models resources, principals, grants, data classes, and data boundaries.
The engine is written in Rust and can run as a local desktop application, a headless service, a hosted deployment, or inside customer infrastructure. A web control panel, terminal UI, chat channels, and TypeScript and Python SDK clients all talk to the same engine over an HTTP and SSE API. Model traffic is routed to providers you configure, and provider keys are stored encrypted with AES-256-GCM.
Workspace access is scoped to folders you explicitly grant, write and delete operations require approval through a supervised tool flow, and sensitive paths such as .env, .ssh/, .pem, and *.key are denied by default. Current capabilities include the local_single_tenant, hosted_single_tenant, and enterprise_required auth modes; full RBAC, OIDC, SCIM, SIEM export, signed approval receipts, and complete tool-discovery masking before model invocation are listed as roadmap work.
Features
- Runtime policy enforcement: tool calls outside policy are blocked before execution, not discouraged by prompt
- Approval gates: runs pause for approve, rework, or cancel decisions and resume with recorded gate history
- Durable execution: checkpoints, replayable event history, and materialized run state survive timeouts and connector failures
- Step-scoped tools: built-in tools and MCP connector tools can be scoped per workflow node
- Permissioned memory: vector-backed session, project, global, and file-import memory paths carry tenant scope
- Tenant isolation: sessions, runs, events, provider credentials, MCP secrets, and memory are partitioned by tenant
- Audit trail: tool ledger events, gate history, artifacts, and protected audit records live outside the model context
- Provider choice: OpenRouter, Anthropic, OpenAI, OpenCode Zen, Ollama, or any OpenAI-compatible endpoint
- Web search backends: Brave, Exa, or SearXNG, with an auto mode that falls through between configured providers
- Entry points: desktop app, web control panel, terminal UI, chat channels, and TypeScript and Python SDKs
- Deployment modes: local desktop, headless engine, hosted, or inside customer infrastructure
- Local safeguards: granted-folder scoping, denied sensitive paths, encrypted credential storage, and no call-home telemetry




