Tools: ๐Ÿ‡ฐ๐Ÿ‡ช Kenya devs: Add Huduma Namba / National ID to the AI identity standard โ€” Soulprint open source (30 min PR)

Tools: ๐Ÿ‡ฐ๐Ÿ‡ช Kenya devs: Add Huduma Namba / National ID to the AI identity standard โ€” Soulprint open source (30 min PR)

Source: Dev.to

What Soulprint does ## ๐Ÿ‡ฐ๐Ÿ‡ช Kenya: Huduma Namba / National ID ## The code โ€” fill in the blanks and open a PR ## Why contribute? ## Resources 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. 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. Then add one line in registry.ts: Open a PR โ†’ your country joins the global AI identity standard. ๐ŸŒ One PR. One country. The future of AI identity is open source. Templates let you quickly answer FAQs or store snippets for re-use. Are you sure you want to hide this comment? It will become hidden in your post, but will still be visible via the comment's permalink. Hide child comments as well For further actions, you may consider blocking this person and/or reporting abuse COMMAND_BLOCK: 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); Enter fullscreen mode Exit fullscreen mode COMMAND_BLOCK: 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); COMMAND_BLOCK: 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); CODE_BLOCK: // 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; Enter fullscreen mode Exit fullscreen mode CODE_BLOCK: // 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; CODE_BLOCK: // 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; CODE_BLOCK: import KE from "./countries/KE"; // add to registry map: "KE": KE, Enter fullscreen mode Exit fullscreen mode CODE_BLOCK: import KE from "./countries/KE"; // add to registry map: "KE": KE, CODE_BLOCK: import KE from "./countries/KE"; // add to registry map: "KE": KE, - Kenya joins the AI age โ€” local developers can verify their AI agents - Permanent git credit โ€” you're in the history forever - Decentralized identity โ€” no Big Tech as gatekeeper - Fast โ€” 30 min partial, 2-3h full with MRZ - ๐ŸŒ€ https://soulprint.digital - ๐Ÿ’ป GitHub โ€” fork here - ๐Ÿ“– Contributing guide