- ›Where an AI agent runs and how its actions are governed are separate decisions on Naïve.
- ›
Governance— caps, approvals, audit, revoke — applies at the tool-call boundary, not inside the runtime. - ›Bring-your-own runtime (BYO) is the lead path: inject governed tools into LangGraph, Eve, or your loop.
- ›Naïve-hosted runtime (optional): declare a pool, start agents on microVMs, credentials injected at boot.
- ›Same governance gateway either way; self-hosting does not bypass policy.
- ›Pick BYO for fastest adoption; add hosted when you want Naïve to operate the compute.
Where an AI agent runs and how its actions are governed are separate questions. Naïve is runtime-agnostic: inject governed tools into your existing loop (bring your own) or optionally let Naïve operate microVMs (hosted). Either way, the governance gateway enforces spend caps, approvals, audit, and revoke at the tool-call boundary — self-hosting does not bypass policy.
This post compares both paths so you can choose without re-architecting the governed agent profile.
Why runtime-agnostic matters
Teams stall on agent infrastructure because they're asked to migrate the entire harness — swap LangGraph for a vendor runtime, rewrite tool calling, re-test every edge case. Naïve's lead path is the opposite: keep your loop, add real-world capabilities (identity, money, comms) as governed tools.
Governance lives in the gateway, not the runtime. That means Eve on Vercel, AgentCore on AWS, and a Naïve-hosted microVM all hit the same caps and approval gates when they call cards.charge.
Path A — Bring your own runtime (lead path)
Lowest friction if you already ship agents:
import { Naive } from "@usenaive-sdk/server";
const naive = new Naive({ apiKey: process.env.NAIVE_SECRET_KEY! });
const op = await naive.forUser(agentId).provision("support", { idempotencyKey: `op:${agentId}` });
const naiveTools = await op.tools();
await theirAgent.run({
tools: [...theirInternalTools, ...naiveTools],
task: "Resolve ticket #492. Refund if policy allows.",
});A refund still routes through the gateway — capped, approval-routed above threshold, audited, instantly revocable. See introducing the Naïve SDK and launching the developer platform.
Authenticate the connection safely: mint a short-lived MCP session per tenant instead of embedding your workspace key in the runtime.
When BYO fits
- You already run LangGraph, CrewAI, custom Python, or a vendor agent framework.
- You want governed real-world actions this quarter, not a runtime migration.
- Your customers host agents in their own cloud and you provide the policy layer.
Path B — Naïve-hosted runtime (optional)
Declare a pool, start agents on isolated containers:
await naive.runtime("pool").start(op.id, { goal: "Triage support email." });Inside a hosted agent, use @usenaive-sdk/runtime:
import { agentProfile } from "@usenaive-sdk/runtime";
const tools = agentProfile.tools();
await runAgentLoop({ tools, goal: "Resolve tickets. Refunds over $50 route to a human." });Credentials are injected at boot — never on the agent's filesystem. The container is sealed to a per-agent-profile scoped key, not your company key.
Hosted runtime is enabled per deployment. When not configured, start() returns a clear error directing you to BYO — governance is identical either way.
Hosted billing note
A claimed hosted-runtime container is duration-metered: 2 credits per vCPU-hour plus 0.25 credits per GB-hour (per published docs). Default sizing is 1 vCPU / 2 GB. BYO incurs no Naïve runtime metering — you pay your own compute; Naïve meters the governed actions.
When hosted fits
- You want Naïve to operate agent compute without building a Firecracker fleet yourself.
- Multi-agent systems with a declared topology (
startSystem) and shared budget. - You prefer credentials injected by the platform over managing runtime env vars.
Comparison
| BYO runtime | Naïve-hosted | |
|---|---|---|
| Adoption friction | Lowest — add tools to existing loop | Requires pool setup + deployment config |
| Governance | Gateway on every tool call | Same gateway |
| Credentials | Session or scoped tools from SDK | Injected at boot via @usenaive-sdk/runtime |
| Compute billing | Your infra | Naïve runtime_usage credits |
| Revoke | agentProfile.revoke() | Same — tears down hosted slot |
Two planes, one policy
Naïve separates business-action governance (budgets, approvals, audit, revoke — the differentiated layer) from system governance (microVM network/filesystem isolation on hosted paths). BYO adopters get the business layer immediately; hosted adds the system layer when you opt in.
The governance gateway docs explain how policy maps to Account Kits, approvals, and revoke.
A practical adoption sequence
- BYO + one primitive — provision a profile, inject
op.tools(), gate card issue on approval. - Sessions — replace workspace keys in MCP clients with per-user sessions.
- Hosted (if needed) — declare a pool when you want Naïve to run the loop, not just govern it.
If you're building into multi-tenant SaaS, BYO per customer runtime + Naïve governance is usually the first production shape.
Where to go next
Pick BYO unless you have a concrete reason for hosted compute now. The runtime docs cover pools, startSystem, and BYO examples. The governed agent profile shows how runtime choice fits the full lifecycle.
What is bring-your-own runtime for AI agents?+
What is Naïve-hosted runtime?+
Does self-hosting bypass governance?+
Which runtime path should I choose?+
How do governed tools integrate with my agent loop?+
How does hosted runtime billing work?+
Building the agent-native backend.
A governed agent profile is an AI agent with identity, spend limits, approvals, audit, and instant revoke — enforced on every action. Here's the full lifecycle.
Naïve as the governed tool layer under any agent framework — keep your orchestrator; add identity, connections, caps, and approvals via agentTools() or MCP.
The new @usenaive-sdk/server is a single, Stripe-style TypeScript client for every Naïve primitive — email, cards, apps, LLM, vault, and more — with first-class multi-tenancy and a drop-in agent toolset. A getting-started guide.
Per-user MCP sessions give AI agents delegated, revocable access — short-lived, kit-scoped credentials instead of your workspace key. Here's the pattern.
Building multi-tenant AI agents into your SaaS means giving each customer an isolated, governed agent. Here's the full architecture and how to ship it.
The Naïve Developer Platform turns every Naïve primitive into a multi-tenant building block for your own products. 38 primitives across 8 groups, four surfaces (SDK, CLI, MCP, REST), per-customer isolation, governance, and metered billing — so you can give every AI agent a real existence.