| Crates.io | frame-identity |
| lib.rs | frame-identity |
| version | 0.2.0 |
| created_at | 2025-12-22 22:16:22.853965+00 |
| updated_at | 2026-01-08 05:47:08.752228+00 |
| description | Multi-modal biometric identity verification for AI systems |
| homepage | |
| repository | https://github.com/Blackfall-Labs/frame-identity |
| max_upload_size | |
| id | 2000374 |
| size | 197,844 |
Behavioral and biometric identity verification using voice, typing, and face recognition.
Extracted from the Frame microservices architecture.
[dependencies]
sam-identity = "0.1.0"
frame-identity depends on:
frame-identity
├── frame-catalog (database, embeddings)
└── frame-sentinel (trust scoring)
Used by: Frame core for biometric authentication
Position in Frame ecosystem:
frame-catalog ──┬→ frame-identity
│
frame-sentinel ─┘
use sam_identity::{VoiceStore, TypingPatternStore};
use frame_catalog::Database;
// Initialize stores
let db = Database::new("identity.db")?;
let voice_store = VoiceStore::new(&db)?;
let typing_store = TypingPatternStore::new(&db)?;
// Voice authentication
voice_store.store_voice_sample("user123", &voice_embedding)?;
let similarity = voice_store.verify_voice("user123", &query_embedding)?;
println!("Voice similarity: {:.2}%", similarity * 100.0);
// Typing pattern analysis
let pattern = TypingPattern::from_keystrokes(&keystroke_data);
typing_store.store_pattern("user123", &pattern)?;
let match_score = typing_store.verify_pattern("user123", &pattern)?;
Pattern Features:
Analysis:
Combine multiple biometric modalities:
use sam_identity::{MultiModalIdentifier, Modality, ModalityConfidence};
let identifier = MultiModalIdentifier::new();
// Add modality scores
let confidences = vec![
ModalityConfidence {
modality: Modality::Voice,
user_id: "user123".to_string(),
confidence: 0.92,
},
ModalityConfidence {
modality: Modality::Typing,
user_id: "user123".to_string(),
confidence: 0.85,
},
];
let result = identifier.identify(&confidences)?;
println!("Verified: {} (confidence: {:.2})", result.user_id, result.confidence);
Bridge biometric scores to multi-dimensional trust:
use sam_identity::{VoiceTrustBridge, TypingTrustBridge};
// Voice → Trust
let voice_bridge = VoiceTrustBridge::new(voice_store, trust_manager);
voice_bridge.update_voice_trust("user123", &voice_embedding)?;
// Typing → Trust
let typing_bridge = TypingTrustBridge::new(typing_store, trust_manager);
typing_bridge.update_typing_trust("user123", &keystroke_pattern)?;
frame-catalog - Database, embeddingsframe-sentinel - Multi-dimensional trustrusqlite (0.31) - Persistencebincode (1.3) - Binary serializationregex (1.10) - Pattern matchingMIT - See LICENSE for details.
Magnus Trent magnus@blackfall.dev