Appearance
behavioral-identity
FreshSource: BIBLE.md (Phase 12 Phase 4, behavioral-identity 5 routes), ROADMAP.md (Phase 4.4)
Persistent behavioral fingerprint per account. Typing speed, mouse movement patterns, scroll behavior, session duration, time-of-day habits. "This person" always types at 47 WPM, scrolls slowly, browses 8am to 11pm Central.
Consistent across sessions, unique per account. Goes beyond browser fingerprinting into behavioral fingerprinting.
Per-account profile
Each account gets a deterministic behavioral profile generated from its ID seed:
yaml
behavioral_identity:
typing_wpm: 47 # consistent typing speed
typing_typo_rate: 0.04 # how often they typo
mouse_speed_multiplier: 0.85 # slower or faster than baseline
scroll_speed_multiplier: 0.95
scroll_pause_rate: 0.12 # how often re-reading happens
session_duration_avg_min: 23
session_duration_stddev_min: 8
active_hours:
start_local: 8
end_local: 23
reading_pause_multiplier: 1.15Deterministic from account ID
javascript
import crypto from 'crypto';
function generateBehavioralIdentity(accountId) {
const hash = crypto.createHash('sha256').update(accountId).digest();
return {
typing_wpm: 30 + (hash[0] % 50),
typing_typo_rate: (hash[1] % 10) / 100,
mouse_speed_multiplier: 0.7 + (hash[2] % 60) / 100,
// ...
};
}Same account, same identity. Forever.
Routes (5)
| Method | Route | What |
|---|---|---|
| GET | /behavioral-identity/:accountId | Get the identity for one account |
| POST | /behavioral-identity/regenerate | Force regenerate (rare) |
| POST | /behavioral-identity/apply | Apply identity to a browser session |
| GET | /behavioral-identity/list | List all profiles |
| POST | /behavioral-identity/score | Score how distinct an identity is |
How it integrates
The identity is applied to human-mouse, human-keyboard, human-scroll options at session launch:
javascript
const identity = await getBehavioralIdentity(accountId);
humanType(page, text, {
outputMode: 'os',
speedMultiplier: identity.typing_wpm / 60, // chars/sec
typoRate: identity.typing_typo_rate
});Uses existing human-behavior sleeve
Built on top of _sleeves/human-behavior.mjs (Bezier mouse, variable typing, scroll with reading pauses).
Related
- Human Behavior
- anti-coordination: combines with behavioral fingerprint
- geofenced-personas