Marketing pages talk about speed. Engineers ask for a command, a date, and a host. On 28 August 2026 we ran npm test in the AffixIO demo integration repo and a separate 100-proof offline benchmark on this server. The results are below.
Offline throughput
Using affixio on Node 20, circuit simple_yesno, mode offline:
| Metric | Value |
|---|---|
| Proofs in run | 100 |
| Total time | 991 ms |
| Per proof | 9.9 ms |
| Throughput | ~101 proofs/sec |
That is HMAC prove on local Node crypto. No network, no ML-DSA attestation on the path. It is the number you care about when the gate sits on a LAN host or kiosk.
Online round trip
A single mode: "online" prove to api.affix-io.com on the same host measured 78 ms end to end, including server-side attestation. Your latency budget will differ by region and payload size. Treat 78 ms as a same-datacentre reference, not a SLA.
Integration suite (28 August 2026)
npm test in the demo repo executed 19 tests in about 94 seconds:
- 18 passed
- 1 failed: online
proveFromCheckAndVerifyreturnedrate_limited
The failure is honest. The public demo key is capped at 4 requests per second. Earlier tests in the same run had already consumed quota. Offline prove, Merkle batch, data-check across 16 store adapters, and the huge regression batch all passed.
Huge batch regression
The slowest test, huge batch: all databases × codes × pass/fail controls, ran for 93.8 seconds with seed 42:
| Count | Value |
|---|---|
| Total scenarios | 267 |
| Expected pass | 161 |
| Expected fail | 97 |
| Errors | 1 (injected API failure) |
| False positives | 0 |
| Store adapters exercised | 16 |
Zero false positives matters more than the headline throughput figure. A wrong yes is worse than a slow yes.
How to reproduce
Clone the AffixIO demo repo, install dependencies, set AFFIX_API_KEY if you have a non-demo key, then:
npm test
node -e "
import { AffixSDK } from 'affixio';
const sdk = new AffixSDK({ apiKey: process.env.AFFIX_API_KEY, autoFlush: false });
const t0 = performance.now();
for (let i = 0; i < 100; i++) {
await sdk.prove({ mode: 'offline', circuitId: 'simple_yesno',
credential: { claim_value: 'approved' },
context: { secret: '0xbench', context_id: '0x'+i, required_claim_hash: 'approved' } });
}
console.log({ ms: Math.round(performance.now()-t0), perSec: (100/((performance.now()-t0)/1000)).toFixed(1) });
sdk.dispose();
"
Full tables and live API counts sit on the platform metrics page.
On your host
The prove step
Where AffixIO fits in your benchmark path
Throughput numbers only matter on your hardware, your circuit, and your network path. Hub gives you 100 proofs to run the same tests against your stack.
It sits at the moment your system says eligible or not eligible. Offline prove runs on Node crypto. Online prove adds ML-DSA attestation on api.affix-io.com. Measure both before you freeze architecture.
Free proof allocations
Agents get 150 free proofs. Humans get 100. No card required.
AI agents receive 150 free AffixIO SDK proofs on BoundProof Agent provision. Eligible new Hub account holders (humans) can claim one allocation of 100 free SDK proofs to test AffixIO verification, agentic payment checks, transaction intent proof and signed yes, no or review outcomes.
Terms: one allocation per account holder, per person or business owner. No card is required. Proofs expire after 30 days. Duplicate, shared, automated or abusive signups may be refused or removed. Agents: /boundproof/agent/. Humans: Hub onboarding with offer params.