Every day, millions of AI agents make decisions — buy, sell, send emails, sign documents — and nobody knows if a real human is actually behind them.
Soulprint solves this. It's an open-source ZK identity protocol that proves a real person controls an AI bot, without uploading anything to a server.
We need developers from every country to add their national ID format. It takes ~30 minutes and a single PR.
The problem with AI identity today
"Is this Claude instance acting on behalf of a real human, or a rogue bot?"
Current options:
- Worldcoin — requires iris scan, centralized, US-only practical
- Stripe Identity — $1.50/verification, closed source, cloud-dependent
- Persona — $0.50–$3.00/check, enterprise-only
Soulprint is different:
- ✅ 100% on-device — nothing leaves your machine
- ✅ Zero-Knowledge Proof — validators learn nothing except "this is a real human"
- ✅ Open source — MIT license, 7 npm packages
- ✅ Free — run your own validator node
How it works in 60 seconds
# 1. Verify once (scan your national ID + face match — all local)
npx soulprint verify-me
# 2. Your AI agent includes the token in every call
# X-Soulprint: eyJ0eXBlIjoic291bHByaW50... (score: 84/100)
# 3. Any MCP server or API validates in 3 lines
import { requireSoulprint } from "soulprint-mcp";
server.tool("premium-tool", requireSoulprint({ minScore: 80 }), handler);
The ZK proof (Circom 2.1.8, Groth16, 844 constraints) proves:
- You have a valid national ID
- Your face matches the ID photo
- You haven't registered twice (nullifier = unique hash per person)
No raw data ever transmitted. Verification runs locally in ~5 seconds.
We need YOUR country
Right now Soulprint has:
| Country | Document | Status |
|---|---|---|
| 🇨🇴 Colombia | Cédula de Ciudadanía | ✅ Full (OCR + MRZ + face) |
| 🇲🇽 Mexico | INE / CURP | ⚡ Partial |
| 🇦🇷 Argentina | DNI | ⚡ Partial |
| 🇧🇷 Brazil | CPF | ⚡ Partial |
| 🇨🇱 Chile | RUN | ⚡ Partial |
| 🇵🇪 Peru | DNI | ⚡ Partial |
| 🇻🇪 Venezuela | Cédula | ⚡ Partial |
| 🌍 Your country | ? | ❌ Missing |
Your country deserves to be on this list.
How to add your country — it really is 30 minutes
The interface is simple. Every verifier has 4 things:
// packages/verify-local/src/document/countries/XX.ts
import { CountryVerifier, DocumentResult } from "../verifier.interface";
const XX: CountryVerifier = {
countryCode: "XX", // ISO 3166-1 alpha-2
countryName: "Your Country",
documentTypes: ["national_id"],
parse(ocrText: string): DocumentResult {
// Extract fields from OCR text of the physical document
// Fields: doc_number, full_name, date_of_birth, sex, expiry_date
const doc_number = ocrText.match(/YOUR_REGEX/)?.[1] ?? "";
return { valid: !!doc_number, doc_number, country: "XX" };
},
validate(docNumber: string): NumberValidation {
// Validate format + check digits (if your ID has them)
return { valid: /^\d{8,12}$/.test(docNumber) };
},
};
export default XX;
Then one line in registry.ts:
import XX from "./countries/XX";
// add to the registry map:
XX.countryCode: XX,
That's literally it. Open a PR and you've added your country to the global AI identity standard.
What you need to know:
- The OCR text format of your national ID
- The document number format (length, check digits if any)
- Optionally: MRZ format if your ID has a machine-readable zone
Why contribute?
- Your country joins the AI age — developers from your country can verify their AI agents
- You're in the git history — permanent credit as the contributor who added your nation
- You build the future you want — decentralized identity, no Big Tech gatekeeping
- It's fast — 30 minutes for a partial implementation, 2-3 hours for full with MRZ
Resources
- 🌀 Website: https://soulprint.digital
- 📦 npm: https://www.npmjs.com/package/soulprint
- 💻 GitHub (fork here): https://github.com/manuelariasfz/soulprint
- 📖 Contributing guide: https://github.com/manuelariasfz/soulprint/blob/main/CONTRIBUTING.md
- 🏗️ Architecture: https://github.com/manuelariasfz/soulprint/blob/main/ARCHITECTURE.md
# Quick start
git clone https://github.com/manuelariasfz/soulprint
cd soulprint && pnpm install
cp packages/verify-local/src/document/countries/AR.ts \
packages/verify-local/src/document/countries/XX.ts
# Edit XX.ts → open PR
Countries we're especially looking for: 🇺🇸 USA, 🇬🇧 UK, 🇩🇪 Germany, 🇫🇷 France, 🇯🇵 Japan, 🇰🇷 Korea, 🇮🇳 India, 🇳🇬 Nigeria, 🇿🇦 South Africa, 🇮🇩 Indonesia, 🇵🇭 Philippines, 🇹🇷 Turkey, 🇵🇱 Poland, 🇺🇦 Ukraine, 🇸🇦 Saudi Arabia, 🇪🇬 Egypt, 🇲🇾 Malaysia, 🇹🇭 Thailand, 🇻🇳 Vietnam, 🇮🇹 Italy, 🇪🇸 Spain, 🇳🇱 Netherlands
One PR. One country. The future of AI identity is open source.
Top comments (0)