The problem in one query
Every Arkiv entity stores its$owner and $creator, and both are indexed. Anyone can run:
What Arkognito changes
In the original synthetic Tiramisu experiment, the tested observer grouped 50 records from five
synthetic users no better than random guessing. This is evidence for that workload and observer,
not a general anonymity guarantee or a Semaphore benchmark. See the
linkage experiment.
Start here
Quickstart
Run a relayer and write your first private record in about five minutes.
Add it to an app
Replace
createEntity with the private client. Same parameters.Self-host the network
Two relayers, a token issuer and an OHTTP relay with one
docker compose up.Anonymous group permissions
Enroll members, generate proofs and independently verify submissions.
What is in the box
- SDK (
arkognito): derives one-time owners in a Web Worker, seals and pads records, finds and verifies your records privately, issues ownership proofs, handles rate-limit tokens and Oblivious HTTP. Works in browsers and Node. - Relayer: batches records from many users, writes them to Arkiv, hands each to its one-time owner, and pays the gas. Anyone can run one.
- Token issuer: hands out daily blind rate-limit tokens with quotas per issuance identity.
- Optional Semaphore module: group administration, recoverable anonymous membership proofs, proof-gated relaying and history-based duplicate checks. Integration status.
- OHTTP relay: forwards encrypted requests so relayers never see users’ IP addresses.