# Sakshi Documentation ## Docs - [Introduction](https://docs.rotavision.com/introduction.md): Sakshi is the governance layer for AI agents in Indian enterprises: register every agent, witness every decision on a tamper-evident chain, bound autonomy, and produce regulator-mapped evidence. - [Evaluate Sakshi](https://docs.rotavision.com/evaluate.md): A practical path for a BFSI team evaluating Sakshi: get a writable instance, govern your first agent, verify the chain yourself, and export a regulator-mapped evidence pack, in about half an hour. - [Quickstart](https://docs.rotavision.com/quickstart.md): Install the SDK, register an agent, witness a decision, and recompute the chain. - [Authentication](https://docs.rotavision.com/authentication.md): Authenticate to Sakshi with a Bearer token: an ingest API key for register and witness, or an OIDC JWT for governance and admin actions. - [Errors](https://docs.rotavision.com/errors.md): How Sakshi fails on purpose: fail-open capture, fail-closed enforcement, the SDK exception model, HTTP status codes, and idempotency. - [Self-hosting](https://docs.rotavision.com/self-hosting.md): Run Sakshi single-tenant in your own environment: one host, one install, evidence that never leaves your VPC, and a chain anyone can recompute. What a bank's security team wants to see. - [Agent governance](https://docs.rotavision.com/concepts/agent-governance.md): The mental model behind Sakshi: as models become agents, the unit of governance shifts from the model to the decision. The five capabilities, and the three ways to connect. - [Know Your Agent](https://docs.rotavision.com/concepts/know-your-agent.md): A live registry of every agent: owner, autonomy tier, blast radius, and provenance. Sakshi verifies external signed agent identities rather than inventing its own, and nothing runs unregistered. - [The decision chain](https://docs.rotavision.com/concepts/decision-chain.md): Every decision is a record hashed together with the hash of the record before it. Recomputing re-derives every hash, so tampering is detectable and the chain says exactly where it happened. No trust in the vendor required. - [Autonomy envelopes](https://docs.rotavision.com/concepts/autonomy-envelopes.md): Rules that route each action to auto, async review, sync review, or block based on stakes, confidence, and novelty. Envelopes are formally verified with Z3 before publish, versioned, and chain-attested. - [Evidence packs](https://docs.rotavision.com/concepts/evidence-packs.md): Vidhi: regulator instruments encoded as data, scored against your live evidence to produce a readiness score and a signed, exportable pack you could hand an examiner. - [PII tokenization](https://docs.rotavision.com/concepts/pii-tokenization.md): Identifiers are tokenized at ingest, before anything is stored, so raw personal data never enters the chain. Sakshi governs the act and holds the proof; it never becomes the store for raw sensitive data. - [The kill switch](https://docs.rotavision.com/concepts/kill-switch.md): A per-agent halt or safe mode. safe_mode swaps evaluation to a conservative envelope and parks actions in review instead of blocking. Drilled on a schedule with signed attestations, and checked on every enforcement call. - [Certification](https://docs.rotavision.com/concepts/certification.md): A signed, RBI-mapped fit-for-production certificate for an agent, produced by running a battery over the evidence Sakshi already holds — red-team, fairness, evaluation gates, formally-verified autonomy policy, verified identity. Optionally required before an agent can be activated. - [Silent-change detection](https://docs.rotavision.com/concepts/silent-change.md): Sakshi fingerprints each agent's behaviour from the witnessed decision stream and tells you the day it started behaving differently — and whether the change was declared or silent. Maps to the RBI unauthorised-change obligation. - [The Guardian](https://docs.rotavision.com/concepts/guardian.md): Real-time fleet monitoring and intervention. The Guardian watches every agent through evidence-only watches and, when a hard watch trips, halts, escalates or steers it using the same drilled kill switch a human would — every intervention on the tamper-evident record. - [Register an agent](https://docs.rotavision.com/guides/register-an-agent.md): Put an agent under governance: register it, set its owner and autonomy tier, activate it, and optionally verify its identity. - [Witness a decision](https://docs.rotavision.com/guides/witness-a-decision.md): Record a decision on the tamper-evident chain: open a session, capture the reasoning and outcome, then recompute the chain to verify it. - [Bound autonomy](https://docs.rotavision.com/guides/bound-autonomy.md): Publish an autonomy envelope, enforce it before an agent acts, arm circuit breakers, and drill the kill switch. - [Generate an evidence pack](https://docs.rotavision.com/guides/evidence-packs.md): Map your live records to an RBI, DPDP, SEBI, or IRDAI instrument, check the readiness score, and export a signed evidence pack. - [Fairness screening](https://docs.rotavision.com/guides/fairness-screening.md): Run Vishwas declared-first fairness screens: how declared attributes flow in, the significance gate that stops false alarms, and running a pre-deploy run. - [Govern an MCP agent](https://docs.rotavision.com/guides/mcp-governance.md): Two ways to bring an agent that speaks the Model Context Protocol under governance: run Sakshi's MCP server, or drop the interception proxy in front of the agent's real MCP server. - [SDK Overview](https://docs.rotavision.com/sdk/overview.md): The Sakshi Python SDK: register agents, witness decisions on the tamper-evident chain, and bound autonomy, in a few lines or with a one-line middleware. - [Python SDK](https://docs.rotavision.com/sdk/python.md): Full reference for the Sakshi Python SDK: SakshiClient, the witness session, enforcement outcomes, and the exception model. - [MCP Governance](https://docs.rotavision.com/sdk/mcp.md): Govern any agent that speaks the Model Context Protocol: Sakshi as an MCP server, or a transparent proxy that witnesses and enforces every tool call. - [Integrations Overview](https://docs.rotavision.com/integrations/overview.md): Wrap your provider client with a Sakshi middleware, add one line, and every model call your agent makes lands on the same tamper-evident chain. - [OpenAI and OpenAI-compatible](https://docs.rotavision.com/integrations/openai.md): Witness OpenAI and any OpenAI-compatible runtime, including self-hosted Ollama, vLLM, TGI, and LM Studio, with one line. - [Anthropic](https://docs.rotavision.com/integrations/anthropic.md): Witness Anthropic Messages API calls with one line, with no dependency on the Anthropic SDK. - [Google Gemini](https://docs.rotavision.com/integrations/gemini.md): Witness Google Gemini generate_content calls with one line, with no dependency on the google-genai SDK. - [AWS Bedrock](https://docs.rotavision.com/integrations/bedrock.md): Witness AWS Bedrock Converse calls with one line. Residency-compliant in AWS Mumbai for Indian regulated entities. - [LangChain](https://docs.rotavision.com/integrations/langchain.md): Witness LangChain apps through the provider middleware underneath, and the LangGraph path for graph-structured agents. - [LangGraph](https://docs.rotavision.com/integrations/langgraph.md): Witness graph-structured agents: bracket a compiled LangGraph and record individual nodes, with no dependency on LangGraph. - [Google ADK](https://docs.rotavision.com/integrations/adk.md): Govern agents built with Google's Agent Development Kit: one plugin witnesses every model and tool call in the agent tree, and can enforce autonomy in the tool path, with no hard dependency on google-adk. - [CrewAI](https://docs.rotavision.com/integrations/crewai.md): Witness a CrewAI crew: register one event listener and every model call and tool call in the crew lands on the chain, with no hard dependency on crewai. - [AWS Strands](https://docs.rotavision.com/integrations/strands.md): Govern agents built with the AWS Strands Agents SDK: one hook provider witnesses every tool and model call, and can cancel a tool through the autonomy envelope, with no hard dependency on strands. - [AutoGen](https://docs.rotavision.com/integrations/autogen.md): Govern AutoGen agents at the tool boundary and the model client. There is no dedicated one-line middleware, because AutoGen does not expose a single tool-and-model hook, so Sakshi is honest about the two paths that do work. - [MCP](https://docs.rotavision.com/integrations/mcp.md): Witness an agent's Model Context Protocol tool calls, and make tool-manifest poisoning chain-visible, with one line. - [API Reference](https://docs.rotavision.com/api-reference/introduction.md): Orient to the Sakshi HTTP API: base URL, the /api/v1 version prefix, Bearer authentication, and the module tags the endpoints are grouped under. - [Healthz](https://docs.rotavision.com/api-reference/healthz.md) - [Status](https://docs.rotavision.com/api-reference/status.md): Public status: liveness + version only — never data, never chain state (those need a principal). - [Meta](https://docs.rotavision.com/api-reference/register/meta.md) - [List Agents](https://docs.rotavision.com/api-reference/register/list-agents.md) - [Create Agent](https://docs.rotavision.com/api-reference/register/create-agent.md) - [Attach Identity](https://docs.rotavision.com/api-reference/register/attach-identity.md): Attach an external identity (#68): verify an A2A Signed Agent Card (Ed25519 over the card bytes) or record a declared identity (Entra Agent ID / workload identity — a claim, not proof). The verdict is attested; the agent carries its verification status. - [List Orphans](https://docs.rotavision.com/api-reference/register/list-orphans.md): Agents with no accountable owner. Design doc 2.1: no orphans — these get an owner within a week or get suspended. - [Get Agent](https://docs.rotavision.com/api-reference/register/get-agent.md) - [Update Agent](https://docs.rotavision.com/api-reference/register/update-agent.md) - [Transfer Ownership](https://docs.rotavision.com/api-reference/register/transfer-ownership.md) - [Suspend Agent](https://docs.rotavision.com/api-reference/register/suspend-agent.md) - [List Provenance](https://docs.rotavision.com/api-reference/register/list-provenance.md) - [Add Provenance](https://docs.rotavision.com/api-reference/register/add-provenance.md) - [List Models](https://docs.rotavision.com/api-reference/register/list-models.md) - [Create Model](https://docs.rotavision.com/api-reference/register/create-model.md) - [List Attestations](https://docs.rotavision.com/api-reference/register/list-attestations.md) - [Create Attestation](https://docs.rotavision.com/api-reference/register/create-attestation.md) - [List Api Keys](https://docs.rotavision.com/api-reference/register/list-api-keys.md) - [Mint Api Key](https://docs.rotavision.com/api-reference/register/mint-api-key.md): Mint a managed ingest key. The raw value appears in THIS response and never again — only its SHA-256 is stored. Minting is itself evidence. - [Revoke Api Key](https://docs.rotavision.com/api-reference/register/revoke-api-key.md): Revocation takes effect on the next request — the auth layer reads the row, there is no cache to flush. Also evidence. - [List Webhooks](https://docs.rotavision.com/api-reference/register/list-webhooks.md) - [Create Webhook](https://docs.rotavision.com/api-reference/register/create-webhook.md): Register a webhook endpoint. The signing secret appears in THIS response; receivers verify X-Sakshi-Signature with it. Registration is itself evidence (attested), like ingest keys. - [Test Webhook](https://docs.rotavision.com/api-reference/register/test-webhook.md): Send a signed test event to a webhook so the receiver can verify wiring + signature before a real governance event fires. - [Revoke Webhook](https://docs.rotavision.com/api-reference/register/revoke-webhook.md) - [Meta](https://docs.rotavision.com/api-reference/witness/meta.md) - [List Decisions](https://docs.rotavision.com/api-reference/witness/list-decisions.md) - [Capture Decision](https://docs.rotavision.com/api-reference/witness/capture-decision.md) - [Get Decision](https://docs.rotavision.com/api-reference/witness/get-decision.md) - [Chain Head](https://docs.rotavision.com/api-reference/witness/chain-head.md) - [Verify Chain](https://docs.rotavision.com/api-reference/witness/verify-chain.md): Recompute every hash in the range and check linkage. A regulator, an auditor, or the customer can run this without trusting us. - [Meta](https://docs.rotavision.com/api-reference/bound/meta.md) - [Lint Envelope Spec](https://docs.rotavision.com/api-reference/bound/lint-envelope-spec.md): Formally lint an envelope spec WITHOUT publishing (#72) — check for dead rules, escalation-monotonicity violations, and default reach before it governs anything. - [Get Active Envelope](https://docs.rotavision.com/api-reference/bound/get-active-envelope.md) - [Create Envelope](https://docs.rotavision.com/api-reference/bound/create-envelope.md): New envelope version; prior versions deactivate but are never deleted — the envelope in force at any past decision stays reconstructable. - [Get Active Envelope Lint](https://docs.rotavision.com/api-reference/bound/get-active-envelope-lint.md): Formal-lint verdict for the agent's ACTIVE envelope (#72). - [List Envelope Versions](https://docs.rotavision.com/api-reference/bound/list-envelope-versions.md) - [Evaluate Action](https://docs.rotavision.com/api-reference/bound/evaluate-action.md): Route one intended action through the agent's active envelope. Every call is persisted — routing itself is evidence (paras 60–63). - [Request Handoff](https://docs.rotavision.com/api-reference/bound/request-handoff.md): Customer-triggered human handoff (#65, RBI draft 59(iii)): the agent runtime calls this when a customer asks for a human. Creates a HANDOFF queue item in the agent's org unit — a review a customer requested is still a review, worked in the same queues, and its existence is the disclosure-control evi… - [Telemetry Usage](https://docs.rotavision.com/api-reference/bound/telemetry-usage.md): Per-agent token usage + cost (when priced) + incident MTTR (#57). - [Telemetry](https://docs.rotavision.com/api-reference/bound/telemetry.md): Override rates, time-on-task, escalation and deep-review disagreement per reviewer and per agent — the anti-rubber-stamp evidence (paras 61-63). - [Activate Kill Switch](https://docs.rotavision.com/api-reference/bound/activate-kill-switch.md) - [Release Kill Switch](https://docs.rotavision.com/api-reference/bound/release-kill-switch.md) - [Kill Status](https://docs.rotavision.com/api-reference/bound/kill-status.md): The SDK's polling endpoint (#25): cheap, cacheable, no side effects. - [List Kill Events](https://docs.rotavision.com/api-reference/bound/list-kill-events.md) - [Attest Drill](https://docs.rotavision.com/api-reference/bound/attest-drill.md): Assemble the drill attestation from the event timeline: activation, what was blocked while halted, release. Para 43/60(ii) evidence — an untested kill switch is a compliance claim, not a control. - [Get Response Policy](https://docs.rotavision.com/api-reference/bound/get-response-policy.md): The configured policy (if any) plus the effective response — absent a policy, blast radius decides, and the caller should see that too. - [Set Response Policy](https://docs.rotavision.com/api-reference/bound/set-response-policy.md): Append-only like envelopes: a change is a new version. Provenance pin is deliberately absent — that is a human recovery decision made during the investigation, never a standing automatic response. - [List Breakers](https://docs.rotavision.com/api-reference/bound/list-breakers.md) - [Create Breaker](https://docs.rotavision.com/api-reference/bound/create-breaker.md) - [Toggle Breaker](https://docs.rotavision.com/api-reference/bound/toggle-breaker.md) - [Run Breaker Check](https://docs.rotavision.com/api-reference/bound/run-breaker-check.md): Evaluate enabled breakers now; any that trip fire the SAME kill path with actor 'breaker:'. Also run periodically in-process — this endpoint exists for drills, tests, and external schedulers. - [List Reviews](https://docs.rotavision.com/api-reference/bound/list-reviews.md) - [Get Review](https://docs.rotavision.com/api-reference/bound/get-review.md) - [Claim Review](https://docs.rotavision.com/api-reference/bound/claim-review.md): Marks when a reviewer actually started looking — time-on-task telemetry (#20) measures claim->resolve, not create->resolve. - [Resolve Review](https://docs.rotavision.com/api-reference/bound/resolve-review.md) - [Get Evaluation](https://docs.rotavision.com/api-reference/bound/get-evaluation.md) - [List Evaluations](https://docs.rotavision.com/api-reference/bound/list-evaluations.md) - [Fleet Safety](https://docs.rotavision.com/api-reference/bound/fleet-safety.md): Fleet-wide safety posture in one view: every agent's halt state + its armed circuit breakers (per-agent detail lives on the agent page). The kill/drill LOG is /kill/events. - [Meta](https://docs.rotavision.com/api-reference/vidhi/meta.md) - [Get Readiness](https://docs.rotavision.com/api-reference/vidhi/get-readiness.md): Regulatory Readiness Score (#52): this deployment scored live against each clause map. Adoption moves the score; assertions do not. - [List Clause Maps](https://docs.rotavision.com/api-reference/vidhi/list-clause-maps.md) - [Get Clause Map](https://docs.rotavision.com/api-reference/vidhi/get-clause-map.md) - [Build Pack](https://docs.rotavision.com/api-reference/vidhi/build-pack.md): Generate the evidence pack for a clause map, live: chain verification runs, telemetry computes, counts query — never a cached document. - [Export Pack](https://docs.rotavision.com/api-reference/vidhi/export-pack.md): The evidence bundle: a freshly generated pack, Ed25519-signed with this deployment's key — verifiable offline by anyone with the public key. - [List Incidents](https://docs.rotavision.com/api-reference/vidhi/list-incidents.md) - [Create Incident](https://docs.rotavision.com/api-reference/vidhi/create-incident.md): Declaring an incident is a human act (reviewer and above); the report assembles itself from the flight recorder. - [Rti Decision](https://docs.rotavision.com/api-reference/vidhi/rti-decision.md): RTI-shaped disclosure pack for one decision (#59): point-wise query/reply/source answers assembled from the flight recorder. - [Incident Report](https://docs.rotavision.com/api-reference/vidhi/incident-report.md) - [Incident Export](https://docs.rotavision.com/api-reference/vidhi/incident-export.md): Signed incident bundle — same Ed25519 envelope as evidence packs. - [Resolve Incident](https://docs.rotavision.com/api-reference/vidhi/resolve-incident.md) - [List Eval Runs](https://docs.rotavision.com/api-reference/vidhi/list-eval-runs.md) - [Create Eval Run](https://docs.rotavision.com/api-reference/vidhi/create-eval-run.md): Store a citable eval run. Metrics are supplied (scored offline by exact-match, the Indic judge, or humans — recorded in `scorer`); the platform computes the GATE VERDICT against Wilson confidence intervals and stores the exact artifact. Packs cite it by id as validation evidence. - [Get Eval Run](https://docs.rotavision.com/api-reference/vidhi/get-eval-run.md) - [Dpia Support](https://docs.rotavision.com/api-reference/vidhi/dpia-support.md): The algorithmic-processing sections of a DPDP Rule-13 DPIA, pre-filled from live evidence. - [Audit Bundle](https://docs.rotavision.com/api-reference/vidhi/audit-bundle.md): Independent-audit bundle (DPDP Rule 13(2)): DPIA substrate + every regulator pack + readiness snapshot, in one signed artifact for the auditor. Auditor-role principals (read-only) can pull this without being able to change anything — the 'hand the auditor a login' story extended to a portable, verif… - [Meta](https://docs.rotavision.com/api-reference/vishwas/meta.md) - [Get Locality Screen](https://docs.rotavision.com/api-reference/vishwas/get-locality-screen.md): Inference-free disparity screen: decision outcomes by locality against census SC/ST population shares (ETHICS.md §1a). Flags, never proves — the caveats travel inside the payload. - [Get Declared Screen](https://docs.rotavision.com/api-reference/vishwas/get-declared-screen.md): Declared-attribute fairness screen (#30) computed live off the flight recorder — production-grounded monitoring, no inference. - [List Predeploy Runs](https://docs.rotavision.com/api-reference/vishwas/list-predeploy-runs.md) - [Create Predeploy Run](https://docs.rotavision.com/api-reference/vishwas/create-predeploy-run.md): Pre-deploy bias testing: screen a batch of candidate decisions with declared attributes BEFORE the agent goes live. The stored result is the citable artifact; packs reference it by id. - [Verify Disposition Endpoint](https://docs.rotavision.com/api-reference/vishwas/verify-disposition-endpoint.md): Verify a storage disposition (#80 D2) — a signed vault receipt or a reference key against the configured vault — without ever seeing the raw value. - [Get Extraction Screen](https://docs.rotavision.com/api-reference/vishwas/get-extraction-screen.md): Document/KYC extraction governance (#80): data-minimization + storage-disposition findings computed live off the flight recorder. - [Get Mcp Screen](https://docs.rotavision.com/api-reference/vishwas/get-mcp-screen.md): MCP governance (#58): tool calls + manifests witnessed off the flight recorder, and the tool-poisoning findings (mcp_manifest_changed). - [Get Predeploy Run](https://docs.rotavision.com/api-reference/vishwas/get-predeploy-run.md) - [Get Briefing](https://docs.rotavision.com/api-reference/me/get-briefing.md): A scoped, grounded digest of what changed since this user was last here and what needs them now — plus, when enabled, a sovereign-LLM narration over ONLY those facts. The digest is authoritative. - [My Entitlements](https://docs.rotavision.com/api-reference/me/my-entitlements.md): The caller's EFFECTIVE Sakshi entitlements after the access mapping is applied (ADR-021) — the console reads this at sign-in so nav matches what the API authorizes. Any authenticated user; reflects the resolved principal, not the raw IdP claims. - [List Rules](https://docs.rotavision.com/api-reference/access/list-rules.md) - [Create Rule](https://docs.rotavision.com/api-reference/access/create-rule.md) - [Delete Rule](https://docs.rotavision.com/api-reference/access/delete-rule.md) - [Update Rule](https://docs.rotavision.com/api-reference/access/update-rule.md) - [Resolve Preview](https://docs.rotavision.com/api-reference/access/resolve-preview.md): Dry-run: given a sample user's raw claims, show the entitlements the current ruleset would grant — the wizard's preview (Slice C uses this). - [Resolve Draft](https://docs.rotavision.com/api-reference/access/resolve-draft.md): Dry-run against DRAFT (unsaved) rules — the wizard previews a sample user before anything is written. No DB read; resolves the provided rules only. - [Observed Claims](https://docs.rotavision.com/api-reference/access/observed-claims.md): Distinct IdP role/group names seen from real logins — seeds the wizard so an admin maps what their IdP actually sends, not a blank form. Names only. - [Get Access Config](https://docs.rotavision.com/api-reference/access/get-access-config.md) - [Update Access Config](https://docs.rotavision.com/api-reference/access/update-access-config.md) - [Platform Posture](https://docs.rotavision.com/api-reference/access/platform-posture.md): Read-only view of the deployment's effective, NON-SECRET configuration — so an admin can verify posture without shell access, and cite it as evidence. Secret VALUES are never returned (only 'configured' / 'not'); these settings are deploy-time env (SAKSHI_*), not runtime-editable here. - [Access Activity](https://docs.rotavision.com/api-reference/access/access-activity.md): The attested log of access-control changes — every rule and toggle edit, who made it and when. 'Who can approve' is change-controlled and evidenced. - [List Certifications](https://docs.rotavision.com/api-reference/certify/list-certifications.md) - [Create Certification](https://docs.rotavision.com/api-reference/certify/create-certification.md): Run the certification battery over a candidate agent and issue a signed certificate. A governance act (officer and above): certifying an agent as fit for production is a sign-off, not a read. - [Latest For Agent](https://docs.rotavision.com/api-reference/certify/latest-for-agent.md): The most recent certification for an agent — the one the C2 gate and the console badge read. - [Get Certification](https://docs.rotavision.com/api-reference/certify/get-certification.md) - [Export Certification](https://docs.rotavision.com/api-reference/certify/export-certification.md): The downloadable, independently verifiable certificate: the Ed25519-signed bundle whose signature covers the exact payload bytes. - [Fleet Change](https://docs.rotavision.com/api-reference/behavior/fleet-change.md): Behavioural-change summary across the fleet — changed agents first. - [Agent Change](https://docs.rotavision.com/api-reference/behavior/agent-change.md): Per-dimension behavioural drift for one agent: the last `window` decisions vs the `window` before them. - [Create Report](https://docs.rotavision.com/api-reference/behavior/create-report.md): Persist a signed behavioural-change report. A SILENT change (a flagged dimension no governance event explains) is the unauthorised-change finding: it flags the agent for re-certification and emits an agent_behavior_changed webhook. A governance act — producing the signed artifact is a sign-off. - [List Reports](https://docs.rotavision.com/api-reference/behavior/list-reports.md) - [Get Report](https://docs.rotavision.com/api-reference/behavior/get-report.md) - [Export Report](https://docs.rotavision.com/api-reference/behavior/export-report.md): The Ed25519-signed change report — the tamper-evident unauthorised-change artifact (signature covers the exact payload bytes). - [Overview](https://docs.rotavision.com/api-reference/guardian/overview.md): What the Guardian is watching across the fleet, and the interventions it has fired (each on the chain, via the kill path). - [Run Watches](https://docs.rotavision.com/api-reference/guardian/run-watches.md): Evaluate the agent's armed watches now. Any hard watch that trips fires the kill path (actor breaker:) — real-time intervention on demand, for a drill or an operator. (Watches also run on the 60s in-process sweep.) ## OpenAPI Specs - [openapi](https://docs.rotavision.com/api-reference/openapi.json) ## Optional - [GitHub](https://github.com/rotavision-ai) - [PyPI](https://pypi.org/project/sakshi-sdk/) - [Blog](https://rotavision.com/blog)