Manuel Felipe Arias PinedaEvery day, AI agents make decisions on our behalf โ buying, sending emails, signing documents โ and...
Every day, AI agents make decisions on our behalf โ buying, sending emails, signing documents โ and nobody verifies there's a real human behind them.
Soulprint solves this with Zero-Knowledge Proofs: 100% on-device, open source (MIT), free to run. soulprint.digital
๐ฐ๐ช Kenya's Huduma Namba / National ID is not in Soulprint yet. You can add it in ~30 minutes with one PR.
npx soulprint verify-me # scan ID + face match โ all local
# โ SPT token (score 0-100)
# AI agent includes token in every call
# X-Soulprint: eyJ... (score: 84)
# API verifies in 3 lines:
import { requireSoulprint } from "soulprint-mcp";
server.tool("premium", requireSoulprint({ minScore: 80 }), handler);
ZK proof: Circom 2.1.8 ยท Groth16 ยท 844 constraints ยท 564ms prove ยท 25ms verify.
National ID: 8 digits. Huduma Namba: 8 digits. Passport: 9 alphanumeric chars.
// packages/verify-local/src/document/countries/KE.ts
import { CountryVerifier, DocumentResult, NumberValidation } from "../verifier.interface";
const KE: CountryVerifier = {
countryCode: "KE",
countryName: "Kenya",
documentTypes: ["national_id", "huduma"],
parse(ocrText: string): DocumentResult {
// Huduma Namba / National ID format: National ID 8 digits
const doc_number = ocrText.match(/(\d{8})/)?.[1] ?? "";
return { valid: !!doc_number, doc_number, country: "KE" };
},
validate(docNumber: string): NumberValidation {
// exactly 8 digits
return { valid: /^\d{8}$/.test(docNumber) };
},
};
export default KE;
Then add one line in registry.ts:
import KE from "./countries/KE";
// add to registry map: "KE": KE,
Open a PR โ your country joins the global AI identity standard. ๐
One PR. One country. The future of AI identity is open source.