Three lines of JavaScript. Demo key works on localhost.
Drop the SDK into any web app that gates a high-risk action behind verified human consent. The demo mode accepts mnav_test_demo so you can ship the integration without provisioning a key first.
1 · Install
<script src="sdk/manav-sdk.js"></script>
2 · Initialize
const manav = Manav.init({
apiKey: 'mnav_test_demo', // demo mode; works on localhost
orgSlug: 'acme'
});
3 · Require a fresh signature
const { proofSlug, proofUrl, status } = await manav.sign({
actionType: 'approve_wire_transfer',
actionTitle: 'Approve $42,000 vendor wire',
externalReference: 'wire_9281',
});
// proofSlug: 'mnav_proof_a83f9c2b...'
// proofUrl: 'https://manav.id/proof/?slug=...'
// status: 'verified' | 'declined' | 'expired'
4 · Verify a receipt offline
Any party that fetches Manav's published Ed25519 key once can verify any receipt independently, no callback to Manav required. A Manav outage does not break verification.
import { verifyReceipt } from '@manav/verify';
const jwks = await fetch('https://manav.id/.well-known/manav-keys');
const result = await verifyReceipt(receipt, jwks);
// { ok: true, actor: 'pk_acme_4f81...', action: 'approve_wire_transfer' }
5 · Issue a delegation to an AI agent
For autonomous agents that act on a user's behalf across many actions, the human issues one scoped delegation; the agent then signs each action under that delegation. The chain verifies to the originating human passkey.
const delegation = await manav.delegate({
delegateKey: agentPublicKey,
scope: {
actions: ['approve_wire_transfer'],
constraints: { amount: { currency: 'USD', max: 50000 } }
},
notAfter: '2026-05-23T23:59:59Z',
maxChainDepth: 1
});
// Pass `delegation` to your agent. Each agent action emits
// a receipt traceable to the authorizing human.
Provisioning a production key
The demo key is rate-limited and clearly marked as test traffic on the proof page. For production deployment:
Tell us your shape
Email [email protected] with your org name, expected receipt volume, and the application domains you'll integrate from.
We provision
You receive a scoped API key, your org's per-context signing key in HSM custody, and a dashboard URL.
You go live
Same SDK. The only change is the apiKey in Manav.init(). Standard SLA is 99.95% on issuance.