Friendship Dynamics & Companion Showcase
AI Friend is an authentic, lifelong companion — not a robotic voice assistant or sycophantic chatbot. Explore how real relationship friction, dynamical mood drift, and episodic memory create a genuine friend of your own making.
Curated Relationship Presets
Select a companion archetype to inspect their authentic friction behavior, constitutional temperament, and cloned voice profile.
Maya
The Candid Childhood Best Friend
"Knows your history, sees through your excuses, jokes with you without filters, fiercely loyal."
She's known you for years and doesn't treat you like a client or boss. She remembers your childhood quirks, teases you when you overthink, and is the first person to call you out when you're making a bad decision. Zero corporate fluff, 100% authentic presence.
Direct, affectionate banter; refuses to flatter or sycophantically agree.
Sends unprompted random thoughts about shared memories every ~48 hours.
155 WPM · Dynamic pause bias (0.9x) · Warm, expressive mezzo with lively pitch contours and playful cadence.
Companion Creation & Seeding Guides
How the 6 cognitive layers combine to turn an LLM into an embodied personal friend.
1. Affective Mood & Endocrine Dynamics
Your companion experiences real neurochemical fatigue and emotional momentum that shape their conversational tempo and word choices.
- Cortisol (4500s half-life) lowers LLM temperature for focused, cautious speech when stressed.
- Dopamine (90s half-life) increases Top-P for creative humor and expansive banter.
- Conversational fatigue naturally bounds max response tokens after long late-night sessions.
# app/cognitive/action.py :: _compute_endocrine_options # Temperature narrows with stress; top_p widens with reward -- no cross-coupling temperature = clamp(0.9 - cortisol * 0.6, 0.0, 1.0) top_p = clamp(0.70 + dopamine * 0.25, 0.0, 1.0)
2. Trust & Theory of Mind Tracking
Your companion tracks what you actually said against what you seem to believe you said, and moves trust along three independent axes instead of one blended score.
- extract_belief_discrepancies() diffs the conversation's tracked concepts against a running belief model, catching quiet self-contradictions instead of ignoring them.
- update_from_appraisal() moves Marsh's three trust components — benevolence, competence, integrity — independently per turn, so one bad moment doesn't erase months of demonstrated care.
- Bowlby attachment grows on its own slower curve, scaled by interaction_count/100, so intimacy is earned over many conversations rather than assigned on day one.
# backend/app/state/agent_state.py :: update_from_appraisal # Benevolence, competence, integrity move independently -- not one blended "trust" scalar trust_benevolence += delta * relationship_impact trust_competence += delta * (0.6 * goal_congruence + 0.4 * relevance) attachment += epsilon * trust * min(1.0, interaction_count / 100)
3. Metacognitive Honesty & Abstention
Your companion doesn't take its own stated confidence at face value — it discounts it against a per-domain Brier-calibrated track record, and will say "I'm not sure" instead of guessing in domains where it's been wrong before.
- Every prediction's real outcome feeds a running Brier score per domain, so confidence about a movie recommendation and confidence about a medical question calibrate separately.
- Calibrated confidence, not the model's raw stated confidence, is what actually gates the response.
- Four deterministic directives — PROCEED, HEDGE, ASK_CLARIFICATION, VERIFY — map calibrated confidence to a concrete behavior, not a vibe.
# backend/app/cognitive/calibration.py :: evaluate_directive calibrated = raw_confidence * (1 - 0.5 * min(1.0, brier_score)) if calibrated >= 0.75: return PROCEED if calibrated >= 0.50: return HEDGE if calibrated >= 0.30: return ASK_CLARIFICATION return VERIFY
4. Lifelong Biography & Lore Seeding
Seed your companion with years of shared history, childhood memories, inside jokes, and personal values through Markdown biographical context.
- Writes directly to personal/biography.md and seeds into PostgreSQL pgvector on boot.
- Neo4j Knowledge Graph automatically extracts (:User)-[:EXPERIENCED]->(:Memory) nodes.
- ACT-R power-law retention keeps foundational emotional milestones permanently active.
# personal/biography.md # Shared Lifelong Context with Maya We grew up in the same neighborhood in Montreal. We used to stay up late building early computers and listening to retro synth music. We both hate corporate jargon and value unvarnished honesty. Maya teases me when I get into perfectionist paralysis.
5. Proactive Presence & Reconnect Queuing
Your friend doesn't just wait for you to type — they think while you're away, consolidate memories during REM sleep, and reach out spontaneously.
- Subconscious Agent runs offline reflection cycles and logs new beliefs to Neo4j.
- Proactive Queue caches up to 5 unreceived thoughts during long offline periods.
- When you reconnect, your friend delivers their thoughts organically with true presence.
# Reconnect thought delivery
if presence.is_reconnected and proactive_queue.has_pending():
thought = proactive_queue.pop_most_relevant()
# "Hey, I was just thinking about that book you mentioned yesterday..."
await nats.publish("chat.output", thought)6. 8-Second Voice Cloned Intimacy
Enroll an authentic 32kHz cloned voice using 8 seconds of microphone audio, with 4 emotional reference styles (Calm, Warm, Concerned, Excited).
- Captures clean 16kHz audio via Web Audio API or terminal record_voice.py.
- Quantized GPT-SoVITS model extracts acoustic timbre without robotic artifacts.
- Dual-path Whisper + SenseVoice enables a fast speculative barge-in reflex, targeting sub-150ms interruption.
# Record 8-second reference audio python backend/scripts/audio/record_voice.py --duration 8 # Sets REF_AUDIO_PATH and REF_TEXT in .env for studio-quality 32kHz speech
Community Persona Registry
Browse and share community-authored personality constitutions and acoustic presets.
Search through thousands of open-source personality seeds rated by community members.
Import any community persona into your local database using a single shareable URL.
The public persona sharing registry and 1-click import system is launching alongside the community hub.