Prove you're a trustworthy actor — without revealing who you are.
Identification here means proving you're a distinct, attestable actor — not disclosing who you are. Nothing is trusted up front; each fact is proven fresh, per task, and then forgotten. The whole idea fits on this page, and the proof fits in a five-minute tap.
A database that remembers who you are. Every check is a lookup; the relying party learns and logs your identity.
No store. A short, signed attestation that a fact holds — verified point-of-use, then forgotten.
IAM remembers who you are. ZTIP forgets you the moment it's sure you qualify.
Phone A → claim a .aint → (optional) bind a DEMO passport → role: User (offer) Phone B → role: Terminal (verify) → tap A against B No second phone? → type a .aint, hit Verify online — the same validator, in-band.
⬇ Download the APK (latest release) · Android 12+ · NFC optional (online path works without).
── VERDICT · who/what: human · vandemeent.aint signature VINK set signed & verified ✓ (Ed25519 against key-matched .aint) claim ✅ 18 or older claim ✅ valid passport claim ✅ Dutch national attestation key MATCH · six-rule PASS (6/6) · fresh (54s TTL) · online AINS not received name · document number · date of birth · facial image — only the tick crossed the wire
Find your name in that output. You can't — it never left the phone. That absence is the whole point.
Name resolution is a real, public endpoint. Resolve any .aint and read the live
Ed25519 key the handshake matches against:
curl -s -H "User-Agent: ztip" https://api.ainternet.org/api/ains/resolve/root_idd | jq .record
# → { "public_key": "6aab3fb5…", "status": "active", "entity_type": "idd", … }
Claim your own .aint in the app, then resolve
that. The resolve you watch in the app is the resolve you can run yourself — nothing staged.
Don't read the spec — run it. The conformance kit builds signed VINK test-vectors and checks them with a second, independent implementation. Green means a stranger can re-implement the handshake from the spec alone and interoperate — no shared code, no original team in the loop. (And it answers a fair worry: "is this just AI text?" No — it's runnable, in 30 seconds.)
git clone https://github.com/Jtel-ZTIP-w3c/ztip-conformance cd ztip-conformance && ./run.sh # → YES IT PLAYS — all cases interop. Independent impl agrees, no vendor needed.
Reproducible (fixed seed, deterministic Ed25519) and built one primitive at a time — the roadmap tells you what to run next. → ztip-conformance
| # | step | primitive / crypto | transport | side |
|---|---|---|---|---|
| 1 | offer + VINK set | Ed25519 sign | NFC HCE | offerer |
| 2 | read | SELECT AID | NFC reader | terminal |
| 3 | resolve | AINS /resolve | HTTPS | name server |
| 4 | key-match | pubkey ≟ resolved | local | terminal |
| 5 | six-rule | tibet-iddrop .so | local | terminal |
| 6 | VINK verify | Ed25519 verify | local | terminal |
| 7 | verdict | — | screen | terminal |
→ Full cookbook — what each line means, what crosses the tap, and what stays on the device. Honest about proven vs scaffolded.
verify age ≥ 18 · context: online shopping · jurisdiction: NL
→ a 13-year-old's passport answers ❌ NOPE — the gate never sees the birth date, only "no".
Rules live with the verifier (the industry); identity lives with you. The attestation is the thin bridge — verified on basic facts, sharing none of the characteristics that identify you as a person.
The same seven steps carry a human, an AI, or an IoT device — only the proof-of-trust vocabulary differs:
human → fresh biometric + state credential (continuity) AI → mandate chain + causal step (not persistence — it's stateless between calls) IoT → unbroken substrate / behaviour pattern
This is why ZTIP isn't an age-gate. It's a way for any actor to say "I'm trustworthy for this" — and for an AI, that's the honest model: it re-derives its right to act each time, carrying nothing.
jis: scheme, with VC-shape interop. The function DID aimed at,
working today.(DEMO) end-to-end — the
technique is identical with or without; the flag only marks a test fixture, never fakes a real one.Primitive atlas · INTEROP.md SDK · tibet-iddrop (crate) IETF · draft-vandemeent-iddrop humotica.com
computo et comprobo, ergo fui — attestor, ergo nunc sum.
I compute and verify, therefore I was; I attest, therefore now I am.