Sakshi meets your code where it is: a few lines with the SDK, framework middleware for the stack you already use, or zero code through the MCP server and interception proxy. It never sees a raw identifier: PII is tokenized at ingest.
Register an agent, then witness a decision. Every call rides your deployment's tamper-evident chain; the raw Aadhaar below is tokenized before it is stored.
The SDK talks to your Sakshi deployment. Mint an ingest key in the console
(Admin → Ingest keys, shown once, stored only as a SHA-256, optionally scoped to an
org-unit) and pass it as api_key,
or set SAKSHI_API_KEY.
No deployment yet? Request a sandbox for a private, synthetic-data instance you can sign into and mint a key in, no install required.
Delivery semantics: witness is
idempotent by client_ref and
retried; register is idempotent by name; enforce is
fail-closed and never auto-retried.
One client, a handful of primitives. Everything produces evidence on the chain.
| Call | What it does |
|---|---|
register(name, owner_name, owner_email, …) | Put an agent in the inventory (KYA). Idempotent by name; returns the agent id. |
witness(agent_id, …) | Context manager for one decision. Inside it: w.disclosure(…), w.action(outcome=…), w.step(…). |
enforce(agent_id, action, stakes, …) | Check the autonomy envelope before a consequential action → auto / async_review / sync_review / block. Fail-closed. |
request_human_handoff(…) | Synchronously park a decision for a human. A lost handoff is a compliance failure, so it raises. |
record.extraction(…) / record.access(…) | Govern document/KYC extraction and reads of stored values, by category and reference key, never the value (DPDP). |
Wrap the client you already call. Inside an active witness
block, every LLM or tool call becomes a step automatically. Duck-typed; no provider SDK is imported.
Covers OpenAI-compatible, Anthropic, Gemini, Bedrock, LangGraph (per-node + per-run), Google ADK (one Runner plugin), and MCP client sessions.
Add Sakshi to any MCP host (Claude Desktop, Cursor, an agent framework) and gain three governance tools with no SDK integration. It is a client of your Sakshi API, so calls ride the same auth, tokenization and chain path.
The zero-code enforcement path: put the proxy between an un-instrumentable agent and its real MCP server. It relays every message verbatim and taps the ones it governs.
| Mode | Behaviour |
|---|---|
P1 transparent | Observe + witness every tool call and manifest; no blocking. |
P2 enforce | SAKSHI_MCP_ENFORCE=on, route each call through the envelope before it runs; non-auto is parked, never reaches the tool. |
P3 poison-detect | Block a tool whose description/schema changes mid-session (tool poisoning, OWASP MCP Top 10). |
Everything the SDK does is a plain HTTP call to your deployment. Every
/api/v1 route enforces auth
(Authorization: Bearer <key>).
The interactive reference lives on your own instance:
| Endpoint | What |
|---|---|
/api/docs | Swagger UI, every route, try-it-out against your deployment. |
/api/redoc | ReDoc, the same spec, offline-friendly reading view. |
/api/openapi.json | The machine-readable contract, generate a typed client in any language. |
/status | Public liveness + version (no chain state without a principal). |
The full reference, generated from the OpenAPI spec, is also published at docs.rotavision.com, alongside the concepts and step-by-step guides.
Five modules over one tamper-evident spine:
| Module | Role |
|---|---|
Register | Know Your Agent, inventory, ownership, provenance, verified identity. |
Witness | The flight recorder, a per-tenant hash chain, independently verifiable. |
Bound | Autonomy envelopes, review/escalation queues, oversight telemetry, kill switch. |
Vidhi | Regulator-mapped evidence packs (RBI MRM, DPDP, SEBI, IRDAI) + readiness score. |
Vishwas | India-calibrated, declared-first fairness screens. |
Sakshi tokenizes PII (Aadhaar, PAN, IFSC, mobile, and more, plus an NER layer) before anything is hashed or stored, it never holds a raw identifier. It is single-tenant and installs in your environment, so evidence never leaves it. The chain recomputes every hash: an auditor can verify your records without trusting Rotavision at all.