A comprehensive biometric verification system that uses genome data for humanity verification and identity confirmation. The system consists of a biometrics server for processing STR profiles and a genome device for generating and uploading genetic profiles.
HumanID provides two main verification modes:
- Humanity Verification - First-time verification using genome data
- Identity Confirmation - Similarity checking against existing records
βββββββββββββββββββ ββββββββββββββββββββ βββββββββββββββββββ
β Frontend β β Biometrics Serverβ β GolemDB β
β (Next.js) βββββΆβ (FastAPI) βββββΆβ (Storage) β
βββββββββββββββββββ ββββββββββββββββββββ βββββββββββββββββββ
β β²
β β
βββββββββββββββββββ β
β Genome Device ββββββββββββββββ
β (device.py) β
βββββββββββββββββββ
- Frontend (
frontend/) - Next.js web application with RainbowKit wallet integration - Genome Device (
genome_device/) - Generates STR profiles from VCF files and uploads to server - Biometrics Server (
biometrics_server/) - FastAPI server for processing and storing biometric data - Humanity SDK (
humanity_sdk/) - Multi-language SDKs for integration
- Python 3.7+
- bcftools (for VCF processing)
- Docker (for server deployment)
- Node.js 18+ (for web app)
Local Development:
cd frontend
npm install
npm run devThe frontend will be available at http://localhost:3000
Features:
- Next.js 14 with App Router
- RainbowKit wallet integration
- Wallet connection modal
- Responsive design
The server is deployed at: https://biometrics-server.biokami.com/
Local Development:
cd biometrics_server
pip install -r requirements.txt
uvicorn main_fastapi:app --host 0.0.0.0 --port 5000Docker Deployment:
cd biometrics_server
./build.shInstallation:
cd genome_device
pip install -r requirements.txt
chmod +x generate_str_profile.shUsage:
Humanity Verification (first-time):
python device.py humanity-verification genome.vcf.gz --user-id user123 --kyc-doc-id doc456Identity Confirmation (similarity check):
python device.py identity-confirmation genome.vcf.gz --user-id user123humanID/
βββ genome_device/ # Genome processing device
β βββ device.py # Main device script
β βββ generate_str_profile.sh # STR profile generation
β βββ requirements.txt # Python dependencies
β βββ README.md # Device documentation
βββ frontend/ # Next.js web application
β βββ src/ # Source code
β βββ package.json # Dependencies
β βββ README-RainbowKit.md # Wallet integration docs
βββ biometrics_server/ # FastAPI server
β βββ main_fastapi.py # Main server application
β βββ similarity_check.sh # Similarity comparison script
β βββ Dockerfile # Container configuration
β βββ build.sh # Build script
β βββ requirements.txt # Python dependencies
βββ humanity_sdk/ # Multi-language SDKs
β βββ python/ # Python SDK
β βββ typescript/ # TypeScript SDK
β βββ rust/ # Rust SDK
βββ src/ # Next.js web application
βββ app/ # App router pages
βββ components/ # React components
βββ lib/ # Utility functions
GET /health- Health checkPOST /first_humanity_verification- First-time verificationPOST /similarity_check- Identity confirmationGET /verification_status/<user_id>- Check verification status
Humanity Verification:
curl -X POST https://biometrics-server.biokami.com/first_humanity_verification \
-F "file=@profile.txt" \
-F "user_id=user123" \
-F "external_kyc_document_id=doc456"Similarity Check:
curl -X POST https://biometrics-server.biokami.com/similarity_check \
-F "file=@profile.txt" \
-F "user_id=user123"The server includes test profiles for development:
# Test humanity verification
python device.py humanity-verification biometrics_server/test_profile.txt --user-id test-user --kyc-doc-id test-doc
# Test identity confirmation
python device.py identity-confirmation biometrics_server/test_profile2.txt --user-id test-user- File Encryption: All uploaded files are encrypted using Fernet encryption
- Secure Storage: Files stored in encrypted format
- Hash Verification: File integrity checking with SHA-256
- Metadata Tracking: Comprehensive audit trail
- VCF Processing: Genome device processes VCF file using bcftools
- STR Generation: Creates STR profile from genetic variants
- File Upload: Uploads profile to biometrics server
- Encryption: Server encrypts and stores the profile
- Verification: Server processes and returns verification results
- Storage: Metadata stored in GolemDB for future reference
- URL: https://biometrics-server.biokami.com/
- Status: Deployed and operational
- Health Check:
GET /health
The biometrics server is deployed on Kubernetes. To deploy manually:
1. Create GolemDB Secret:
kubectl create secret generic golemdb-secret \
--from-literal=GOLEM_APP_TAG="HumanID" \
--from-literal=GOLEM_DB_RPC="https://ethwarsaw.holesky.golemdb.io/rpc" \
--from-literal=GOLEM_DB_WSS="wss://ethwarsaw.holesky.golemdb.io/rpc/ws" \
--from-literal=PRIVATE_KEY="your_private_key_here" \
-n ethwarsaw2. Deploy Application:
cd biometrics_server
kubectl apply -f release.yaml3. Check Deployment Status:
kubectl get pods -n ethwarsaw
kubectl logs -l app=web -n ethwarsaw# Start biometrics server
cd biometrics_server && uvicorn main_fastapi:app --host 0.0.0.0 --port 5000
# Start web application
cd frontend && npm install && npm run devThe frontend application provides a modern web interface for biometric verification:
- Wallet Integration: Connect with MetaMask, WalletConnect, and other wallets via RainbowKit
- Responsive Design: Works on desktop and mobile devices
- Real-time Status: Live updates on verification progress
- Secure Upload: Encrypted file upload with progress indicators
- Verification History: View past verification attempts and results
- Frontend README - Wallet integration and frontend setup
- Genome Device README - Device usage and configuration
- Biometrics Server README - Server API documentation
- Humanity SDK Documentation - SDK integration guides
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
This project is licensed under the MIT License - see the LICENSE file for details.
For issues and questions:
- Check the documentation in each component directory
- Review the API endpoints and examples
- Test with the provided sample data