Step 1 · Read
Tap your passport.
The iPhone reads the chip over NFC and checks the issuing state’s signatures. The chip signs a challenge too, so a copy of its files would not pass.
For iPhone and Flipper Zero
Passport turns the chip in your passport into private, verifiable claims. Answer “18 or older?” with a zero-knowledge proof. Your name, photo and document number stay on your phone.
Step 1 · Read
The iPhone reads the chip over NFC and checks the issuing state’s signatures. The chip signs a challenge too, so a copy of its files would not pass.
Step 2 · Ask
A website, an app or an agent sends a request. Passport shows exactly what would be shared before anything leaves.
Step 3 · Prove
After Face ID, the zero-knowledge proof is made on the device. It takes about 0.2 seconds.
Shared
The verifier learns that you are 18 or older. Your birthday, your name and the passport itself stay on the phone.
Illustration with the ICAO specimen passport and sample data. Nothing is read or sent.
A scan of your passport tells a website everything about you. A proof tells it the one thing it asked.
Share the answer. Keep the passport. The verifier gets a yes or a no. Everything else on the chip stays where it is.
Checkable on Solana. Anyone can check a proof off-chain. A program can check one on-chain, so other programs can condition on it.
Groth16BN254Checks the state’s signatures. Before it proves anything, Passport verifies the document the way a border gate does.
iPhone or Flipper Zero. One reader runs on both, speaking ICAO 9303 over NFC.
BACSecure messagingDG1DG2EF.SODActive AuthenticationFor websites, apps and agents. A request is an OpenID4VP link and a few claims.
For verifiers
A website, an app or an agent sends an OpenID4VP request and receives a compact proof of the answers. No document, no photo, nothing to store.
A small claim language covers age, nationality, issuer, expiry and birth date.
A verifier fixes the issuer, the claims it asked for, a fresh timestamp and the roots it accepts.
Verify a proof off-chain, or let a Solana program do it and record the result for others.
The passport CLI ships an MCP server and an agent skill. Setup and scan work today.
Passport reads the NFC chip in an ePassport or ID card with an iPhone or a Flipper Zero and checks the issuing state’s signatures. When a website, an app or an agent asks a question such as “is this person 18 or older?”, it answers with a zero-knowledge proof of that one fact.
The proof and the answers you agreed to share. The app shows exactly what would be shared before you approve. Your name, photo and document number stay on the device.
No. This is experimental research code and nothing here has been audited. The proving keys come from a fixed seed, so anyone can forge proofs. There is no shared registry yet: each phone keeps its own, so a proof today only shows that the claims hold for a document enrolled on that phone, not that a state issued it. Request-object signatures are not checked. Formats, circuits and APIs will change without notice.
ePassports and ID cards that follow ICAO 9303. Reading and checking the signatures works natively. Enrollment in zero knowledge covers RSA-2048 document signers and RSA-1024 chip keys for now.
Proofs are Groth16 over BN254, with circuits written in Rust using xark. Anyone can check one off-chain. A Solana program can check one on-chain; recording it in the Solana Attestation Service is the next step. The registry program runs in a local test validator today.
No. This website is a product preview. It does not read a document, use NFC or the camera, or collect anything. The illustrations use the ICAO specimen passport and sample data.
Experimental research code
Passport is open research. The keys are development keys and the registry is local. Read the design and the security notes before you build on it.
Read the code