Client-side SDK for the IAM Protocol. Captures behavioral biometrics (voice, motion, touch), extracts 134 statistical features, generates a Groth16 zero-knowledge proof, and submits for on-chain verification on Solana. Raw biometric data stays on-device — only derived features and the proof are transmitted.
npm install @iam-protocol/pulse-sdkThe user pays a small protocol fee (~0.005 SOL) and signs the verification transaction. Re-verification is batched into a single transaction (1 wallet prompt).
import { PulseSDK } from '@iam-protocol/pulse-sdk';
const pulse = new PulseSDK({ cluster: 'devnet' });
const result = await pulse.verify(touchElement, walletAdapter, connection);
if (result.success) {
console.log('Verified:', result.txSignature);
}For non-crypto users. No wallet, no SOL required. The integrator optionally funds verifications via the relayer API.
import { PulseSDK } from '@iam-protocol/pulse-sdk';
const pulse = new PulseSDK({
cluster: 'devnet',
relayerUrl: 'https://api.iam-human.io/relay',
wasmUrl: '/circuits/iam_hamming.wasm',
zkeyUrl: '/circuits/iam_hamming_final.zkey',
});
const result = await pulse.verify(touchElement);- Capture: Audio (16kHz), IMU (accelerometer + gyroscope), touch (pressure + area) — event-driven, caller controls duration
- Extract: 134 features — speaker (F0, jitter, shimmer, HNR, formants, LTAS), motion (jerk/jounce), touch (velocity/pressure)
- Validate: Feature summaries sent to IAM validation server for server-side analysis
- Hash: SimHash → 256-bit Temporal Fingerprint → Poseidon commitment
- Prove: Groth16 proof that new fingerprint is within Hamming distance of previous
- Submit: Single batched transaction via wallet (1 prompt) or relayer
npm install
npm test # 60 vitest tests (including 8-phase adversarial pen test)
npm run build # ESM + CJS output
npm run typecheck # TypeScript strict modeMIT