Govern every agent. Change zero code.

Three integration paths, one governance layer - regardless of model, framework, or where your agents run.

3

Integration methods

12+

Frameworks

45µs

Added latency

Pick Your Integration

All three methods produce the same signed audit records. Choose based on your stack and how much control you want.

One start flag governs every client in the process. No monkey patching, so your APM and tracing keep working. Or wrap explicitly for per-request context.

setup.ts
// Zero-code: node --import @obsvr/sdk/register app.js
import OpenAI from 'openai'
import { obsvr } from '@obsvr/sdk'
obsvr.init({ environment: 'production' })
const client = new OpenAI() // already governed
// Or wrap explicitly for user-facing apps
const guardedClient = obsvr.wrap(client, {
user_id: req.user.id,
})

One Governance Layer, Any Framework

Swap your agent framework without re-implementing governance. obsvr evaluates actions, not architectures.

#Framework

Chain-based LLM orchestration with tool use, retrieval, and multi-step reasoning pipelines.

+ obsvr Policy evaluation at every chain step. Orchestration logic stays in LangChain; admissibility lives in obsvr.

Stateful graph-based workflows with conditional branching, cycles, and persistent agent state.

+ obsvr Gate enforcement at every graph node. State transitions are signed and lineage-tracked across branches.

Data connectors, indexes, and query engines for connecting private data sources to language models.

+ obsvr Data access policies enforced at query time. Every retrieval-action pair is audited with full provenance.

OpenAI's agent runtime with hosted tools, handoffs, and multi-step tool-calling loops.

+ obsvr Every tool call and handoff is policy-checked and signed. Runs and spans are captured with full lineage.

Role-based multi-agent coordination with delegated tasks, shared memory, and goal decomposition.

+ obsvr Per-agent tool permissions and cross-agent action auditing. Each role gets its own policy boundary.

Microsoft's conversational multi-agent framework with message-passing and collaborative problem solving.

+ obsvr Policy checks on agent-to-agent proposals before they become real-world actions. Conversations are free; execution is governed.

TypeScript toolkit for streaming chat, tool calls, and generative UI in web applications.

+ obsvr Governance wraps generateText / streamText and every tool invocation, without breaking streaming.

Integration Questions

No. obsvr doesn't orchestrate agents, manage memory, or route tool calls. It evaluates whether an action should be permitted, signs the decision, and commits it to a tamper-evident audit trail. You keep your framework; obsvr adds the governance layer.

Use the SDK if you're building in Python or TypeScript and want automatic interception with one line of code. Use the MCP Server if your agent already supports MCP and you want zero code changes. Use the REST API if you're in a different language or want maximum control over when evaluation happens.

The agent receives a DENY response with a structured reason (e.g., 'PII detected in payload', 'tool not in allowlist'). The blocked action is logged with a signed audit record. You configure whether blocks are hard (stop execution) or soft (flag and continue).

Microseconds for typical policies, with no AI classifier in the loop. Audit delivery is async and batched, so the only synchronous work is in-process PII scanning, rule evaluation, and signing: about 14 microseconds per call for base signing in TypeScript and about 45 for full governance, roughly 90 to 310 microseconds in Python. Only very large prompts cost more: a 10KB prompt through full governance adds about 1.3ms in TypeScript and 7ms in Python.

Yes. The REST API works from any environment that can make HTTP calls, and the SDK runs in your process. For data-residency or air-gapped requirements, the data plane ships as a Helm chart you deploy inside your own VPC, so raw prompts and audit evidence never leave your network.

MCP Server: zero code changes, just a config update. SDK: one start flag (node --import @obsvr/sdk/register) for zero-code coverage, or one wrapper call if you prefer it explicit. REST API: one HTTP call before or after your LLM invocation. Your agent logic stays untouched in all cases.