IzzU is a self-hosted, open-source Face ID authentication platform that you deploy on YOUR servers.
Apple has Face ID. Google has whatever Google has. Startups pay $0.10 per verification to Auth0.
You? You get IzzU. Zero vendor lock-in. Zero monthly bills. Zero face data leaving your infrastructure.
| Layer | Tech | Purpose |
|---|---|---|
| Dashboard | Next.js 16 + TailwindCSS | Client dashboard for managing projects, API keys, end-users |
| Backend API | Next.js API Routes + Drizzle ORM | REST API, auth flows, session management |
| Face Engine | Python 3.11 + dlib + OpenCV | The brain. 99.38% accuracy. Liveness detection. AES-256 encrypted templates. |
| Database | PostgreSQL | Users, projects, identities, sessions |
| Cache | Redis | OTP storage, rate limiting, sessions |
This isn't your grandma's face recognition.
- AES-256-GCM Encrypted Face Vectors β Your face data is locked. Even if someone steals the DB, it's useless without the master key.
- Liveness Detection β Blinking eyes, head pose, texture analysis. No photos. No videos. No masks.
- Attention Awareness β Eyes must be open. Must be looking at the camera. Prevents unlock while sleeping.
- Anti-Spoofing β Laplacian variance checks reject flat sources (printed photos, screens).
- Local Storage β Face data never leaves your server. Ever.
- No Reversible Templates β You can't reconstruct a face from the stored vector. It's a one-way trip.
- Store raw images for recognition (only profile photos for YOUR dashboard)
- Send anything to external servers
- Require internet for face matching (works offline after setup)
- Charge you per verification
- Node.js 18+
- Python 3.11 (not 3.14, dlib hates it)
- PostgreSQL (or use Supabase/Neon)
- Redis (or use Upstash)
- pnpm (we use Turborepo)
git clone https://github.com/YOUR_USERNAME/izzu.git
cd izzu
pnpm installcp .env.example .env.localEdit .env.local:
DATABASE_URL="postgres://user:pass@localhost:5432/izzu"
REDIS_URL="redis://localhost:6379"pnpm db:pushcd apps/face-service
python3.11 -m venv venv
source venv/bin/activate
pip install -r requirements.txt# Terminal 1: Node apps
pnpm dev
# Terminal 2: Face Engine
cd apps/face-service
venv/bin/python3 -m uvicorn main:app --reload --port 8000- Dashboard:
http://localhost:3000 - API:
http://localhost:3001 - Face Service:
http://localhost:8000
izzu/
βββ apps/
β βββ dashboard/ # Next.js Dashboard
β βββ backend/ # Next.js API
β βββ face-service/ # Python Face ID Engine
βββ packages/
β βββ db/ # Drizzle ORM schema + client
β βββ ui/ # Shared UI components
βββ .env.local # Your secrets (git-ignored)
βββ turbo.json # Turborepo config
Drop this into any website:
<div id="izzu-auth"></div>
<script>
const IZZU = {
apiKey: "izzu_pk_live_YOUR_KEY",
projectId: "YOUR_PROJECT_ID",
apiUrl: "https://your-api.com/api",
mode: "signup" // or "signin"
};
// ... SDK code from Dashboard > Integration
</script>The SDK handles:
- Camera access
- Multi-angle face scanning
- Liveness verification
- User creation/login
- Callbacks on success/failure
- Capture β SDK sends a JPEG frame from the user's camera.
- Liveness Check β Engine runs:
- Texture variance (Laplacian) β rejects printed photos
- 68-point landmark detection β verifies actual face structure
- Eye Aspect Ratio (EAR) β confirms eyes are open
- Head pose estimation β confirms looking at camera
- Encoding β dlib's ResNet generates a 128-dimensional face vector.
- Encryption β Vector is encrypted with AES-256-GCM before storage.
- Matching β On login, new vector is compared against encrypted DB using Euclidean distance.
- Threshold β Match if
distance < 0.48(stricter than dlib's default 0.6).
All thresholds are in apps/face-service/main.py:
MATCH_THRESHOLD = 0.48 # Lower = stricter (0.6 is default)
ANTI_SPOOF_VARIANCE_MIN = 35.0 # Higher = stricter spoof detection
EAR_THRESHOLD = 0.21 # Eye openness thresholdPRs welcome. Issues welcome. Stars welcome.
If you find a vulnerability, email me before you tweet about it. Be cool.
MIT. Do whatever you want. Just don't sue me if someone unlocks your phone with a photo.
(That won't happen though. We have liveness detection. Pay attention.)
Built with rage against monthly auth bills.