OiMy — Complete Architecture v4
Expert RAG · Exact barrier/motivator values + entity specifics · Deep multi-hop Opus profile · Honcho inference model · Batched entity extraction — end-to-end, nothing omitted
v4 · May 30, 2026
Hermes v0.15.2
GPT-5.4 Mini
Kimi K2.6
Opus 4.8
BCT 1800 rows + NLP
Honcho dialectic inference
1 — Full Architecture Diagram
📱 User — Telegram @chittiemma1_bot
Any family member's message. Received via Telegram polling.
"I keep meaning to cook more at home but I always forget. My daughter loves it when we cook together on Sundays though."
↓
🛡 Pre-Filter Deterministic · Zero LLM
Emergency keywordschest pain · gas leak · self-harm → emergency skill, immediate response
Prompt injection guarddetect + block before any model call
Active thread TTLmid-conversation → continue same skill, skip re-classify
Onboarding gateno profile yet → onboarding flow
↓
⚡ Intent Triage GPT-5.4 Mini · 17KB cached prompt · ~2ms cached
One call. Two buckets: scripted (no further LLM) or conversational (→ Hermes).
🔧 SCRIPTED Stop here
weather · reminder · calendar · list · note · chore → deterministic script → return
🎼 CONVERSATIONAL → Hermes
coaching · meal · stories · elder · emotional · planning → full pipeline
↓ conversational path
🎼 Hermes Gateway Kimi K2.6
SOUL.mdOiMy orchestration persona (Opus 4.8). Identity, routing rules, Telegram behavior.
Honcho get_insight()"What do we know about this user?" → synthesized inference string injected into context
Tool Search (5% threshold)Selects oimy-engine skill. Max 5 tools loaded.
GPT-5.4 Mini fast-pathSimple acks, confirmations → inline response, no engine call
↓ POST /chat {message, user_id, honcho_context, jwt}
🧠 Context Preparation — before archetype, every message
USER.mdName · timezone · family members · stated facts
DEEP_PROFILE.mdDISC · Enneagram · core wound · hooks · childhood era · music · hobbies · relationships
Entity storeNamed people + EXACT barrier/motivator values extracted from prior sessions
Signal profilegoals_inferred · stage_of_change · barrier_category + specific value · motivator EMA + specific value
Honcho insightSynthesized: "user likely prefers X since they mentioned Y across 3 sessions"
Vector memorytop_k=3 semantically similar past exchanges for this query
↓
🗺 BCT + NLP Selection Zero LLM · Pure Dictionary Lookup
Active for coaching, habits, wellness, parenting paths. 4 inputs → exact row from 1800-row matrix.
Barrier categoryforgetfulnessvalue: "forgets school lunches on busy mornings"
×
Stagecontemplation
×
Hughes needimportance
×
Decision stylesecurity
→
1800-row lookup → technique
BCT 7.1 Prompts/cues
NLP: anchoring + exact opener
+ specific value passed to Kimi
↓ full context + BCT + specific values → Kimi K2.6 prompt
⚙️ Archetype Execution Kimi K2.6
CoachArchetypeBCT injection · barrier/motivator specific values · agenda tracking
PlannerArchetypeMeal · travel · study · family events — structured + personalized
ExpertArchetypeSymptom triage · speech/OT · elder care · RAG knowledge retrieval (target: vector KB per domain)
ActionArchetypeReminders · lists · notes — deterministic first, LLM for complex params
MonitorArchetypeElder check-ins · weather · habit streaks — cron-triggered
ProfileArchetypeOnboarding · profile CRUD · preference learning
↓
🧠 Memory Write-Back + Entity Extraction batched at session end
Honcho record_turn()user + assistant message stored. Honcho synthesizes incrementally.
Inference signals updateEMA update: barrier confidence · motivator scores · goals · stage_of_change
Vector memory storeconversation pair embedded + stored for semantic retrieval
Entity extraction — batch at session end30min idle → one GPT-5.4 Mini call: extract specific values (names, facts, exact barrier/motivator phrases) → SQLite entity store
Opus 4.8 deep inference (async background, once)After 20 msgs + 3 sessions + 2 pain points: multi-hop synthesis → DEEP_PROFILE.md. MAX_RUNS=1.
↓ response → Hermes → Telegram
📅 Rhythm Engine scheduled · not per-message · SignalCollector + DailyState (no LLM) → BriefComposer (Kimi K2.6)
SignalCollectorCalendar · meds · school · meals · elder care · habits · open loops — zero LLM
DailyState compiler12 typed fact types · VisibleScope privacy — zero LLM
OpportunityDetector5 positive × 3 penalty · NudgeBudget: max 2/day · quiet hours 22:00–07:00
BriefComposer → Kimi K2.6Morning (07:00) + Evening (19:30) · prose polish only · delivery via Hermes
2 — Model Responsibilities
🛡 Pre-Filter $0 · <1ms
Emergency regex · injection guard · active thread TTL · onboarding gate. Runs before any model.
⚡ GPT-5.4 Mini cached ~2ms
Intent triage (scripted vs conversational) · 83-skill classification (JSON, cached) · Hermes fast-path inline · Entity extraction (batched at session end). Not per-turn — batched.
🌙 Kimi K2.6 131K context
Hermes orchestration · all archetype responses · emotional support · multi-step planning · Rhythm Engine brief prose. Replaces Sonnet + Opus-3.5 everywhere.
🔮 Opus 4.8 once per user
Deep Inferred Profile — multi-hop synthesis of DISC, Enneagram, childhood era, music, relationships, hobbies, formative events. Async background. MAX_RUNS=1.
🔧 Skillify Scripts $0 · <120ms
Weather · reminder · calendar · list · note. GPT triage routes here. Zero further model calls.
🗺 BCT Matrix $0 · dict lookup
1800-row lookup: barrier × stage × need × style → technique + NLP + opener. 52 technique files. Zero LLM needed for selection.
3 — Honcho: Dialectic Inference Memory
Why Honcho is different from a memory store: Honcho doesn't just record ("user said X"). It builds a probabilistic user model and answers questions about the user using its own LLM synthesis — returning inferences like "user likely prefers concise instructions since they consistently use terse messages and ask for bullet points." You never explicitly state that preference — Honcho infers it.
How Honcho Works with Hermes
archetypes/honcho_memory.py — the two key operations
# After every turn: store it (honcho builds its user model incrementally)
honcho.record_turn(user_id, user_message, assistant_response, skill_id="habits")
# Before every archetype response: get synthesized inference
insight = honcho.get_insight(user_id, query="what do we know about this user's
habits, preferences, and what motivates them?")
# → Honcho calls its own LLM on all stored turns and returns:
# "User has mentioned wanting to cook 3× but hasn't followed through.
# They consistently bring up their daughter as a source of motivation.
# Prefer practical, step-by-step guidance. Respond positively to
# being told they've done well. Likely have limited time in mornings."
# This string is injected directly into the Kimi K2.6 prompt.
Honcho get_insight() — Live Examples
Query: "What does this user prefer for meal suggestions?"
User consistently asks for quick dinners (under 30 min). Has mentioned celiac diagnosis for their daughter. Tends to avoid elaborate recipes — likely time-constrained. South Indian cuisine references suggest comfort food preferences. Prefers specific ingredient lists over vague suggestions.
Query: "What motivates this user and what are their barriers?"
Primary motivator: daughter's positive reaction — mentioned cooking together on Sundays as something that "lights her up." Recurring barrier: forgetfulness during busy weekday mornings. Has expressed guilt about not doing enough for the family, suggesting high internal standards.
Query: "How should I communicate with this user?"
Responds well to numbered steps and concrete plans. Avoids vague encouragement ("you've got this"). Prefers validation before solution. Uses short, direct messages herself — match that register. Don't overwhelm with options: give one default recommendation.
Why Honcho with Hermes specifically: Hermes is an orchestration agent — on each turn it needs to understand the user quickly without loading all conversation history (expensive, slow). Honcho solves this: one API call returns a synthesized user model. Hermes can inject this into the Kimi K2.6 context window efficiently. The combination is: Hermes orchestrates intelligently, Honcho provides the user understanding.
Honcho vs Raw Conversation History
Without Honcho (naive approach)
Pass last 20 messages to Kimi every time. Context tokens: ~3,000–8,000. Kimi must extract user patterns while also generating response. Inconsistent results. Expensive at scale.
With Honcho (dialectic inference)
One Honcho API call returns ~200 tokens of synthesized user insight. Honcho's LLM does the pattern extraction. Kimi gets clean context. Consistent, getting better with each turn. Cost-effective.
4 — Full Memory Stack
🧠 Honcho — Dialectic Inference
Per-user workspace + peer. Stores turns, infers preferences and patterns, returns synthesized insight strings on query. Not just storage — probabilistic user modeling.
📝 Entity Extraction (Batched)
When: Session end (30min idle). How: GPT-5.4 Mini processes full session transcript. What: named people · explicit preferences · specific barrier/motivator phrases · events · dates. Stored: SQLite entity table with type, value, confidence, source_turn.
🔍 Vector Memory
Conversation pair embeddings (text-embedding-3-small). Semantic retrieval: find past exchanges similar to current query. top_k=3. Enriches archetype context.
🗄 SQLite — Structured State
All structured data: profiles · inference_signals · goals (with stage) · barriers (category + value) · motivators (EMA) · entities · reminders · plans · nudge_log · rhythm_briefs
Entity Extraction — Batched at Session End
Session-end entity extraction — one GPT-5.4 Mini call per session, not per turn
# Trigger: user idle 30+ min OR explicit goodbye signal
# One GPT-5.4 Mini call processes the whole session transcript
prompt = """Extract structured facts from this conversation. Return JSON.
{
"people": [{"name": "...", "relationship": "...", "facts": ["..."]}],
"preferences": [{"category": "...", "value": "...", "confidence": 0.0-1.0}],
"barriers": [{"category": "...", "specific_value": "...", "context": "..."}],
"motivators": [{"category": "...", "specific_value": "...", "context": "..."}],
"events": [{"description": "...", "date": "..."}],
"skip_if_already_known": true
}
Only extract NEW information not already in the entity store."""
# Example output from session about cooking habits:
{
"people": [{"name": "Priya", "relationship": "daughter", "facts": ["loves cooking together on Sundays", "celiac diagnosis May 2026"]}],
"barriers": [{"category": "forgetfulness", "specific_value": "forgets to pack school lunches during busy weekday mornings", "context": "repeated across 3 turns"}],
"motivators": [{"category": "belonging", "specific_value": "daughter lights up when they cook together on Sundays", "context": "mentioned unprompted as bright spot"}],
"preferences": [{"category": "cooking", "value": "quick weeknight meals under 30 min preferred", "confidence": 0.85}]
}
Why batch, not per-turn: No added latency during conversation. Full session context available (better extraction). Deduplication against existing store (don't re-extract known facts). One model call instead of many. Perfectly appropriate — facts don't expire in a session.
5 — Exact Barrier / Motivator / Entity Values
Categories alone ("forgetfulness", "belonging") are not enough. Kimi K2.6 needs the specific, user-personalized value to actually personalize the response. The category tells it WHICH technique to use. The specific value tells it WHAT to reference.
The difference: Without specific value: "I know you struggle with forgetfulness, so try setting a reminder." With specific value: "Since you tend to forget school lunches during busy weekday mornings, let's set a Sunday-night pack-ahead routine — that's when you're already in cooking mode with Priya."
Storage Schema
SQLite — enriched signal storage
# Barrier: category + specific value + context
{
"user_id": "sarah-8040",
"signal_type": "barrier",
"category": "forgetfulness", ← BCT lookup dimension
"specific_value": "forgets school lunches ← passed to Kimi
during busy weekday mornings",
"confidence": 0.82,
"evidence_count": 4,
"source": "entity_extraction_session_12"
}
# Motivator: category + specific value
{
"signal_type": "motivator",
"category": "belonging", ← EMA dimension
"specific_value": "daughter lights up when ← passed to Kimi
they cook together on Sundays",
"confidence": 0.88
}
# Entity: person with facts
{
"signal_type": "person",
"name": "Priya",
"relationship": "daughter",
"facts": ["celiac diagnosis May 2026", "loves Sunday cooking together",
"8 years old", "picky about textures"]
}
How Specific Values Flow into Kimi K2.6
Context injected into Kimi K2.6 archetype prompt
# BCT selection result + specific values assembled into prompt block
BCT_CONTEXT = """
Behavior Change context for this response:
• Technique: BCT 7.1 — Prompts/cues (anchoring NLP pattern)
• Apply: Help user identify a specific environmental cue that will trigger
the cooking behavior. Keep to one concrete cue.
• Barrier to address: FORGETFULNESS
Specific: "forgets school lunches during busy weekday mornings"
→ Design the cue around this exact trigger point, not generic forgetfulness.
• Motivator to leverage: BELONGING
Specific: "daughter lights up when they cook together on Sundays"
→ Reference this explicitly — it's their strongest lever.
• Entity context: Priya (daughter, 8, celiac, loves Sunday cooking)
• Don't say: "you struggle with forgetfulness" — never label the user
• Do: tie the cue to Sunday cooking (already happening) as foundation
"""
6 — Expert Archetype RAG: Reality vs Target
Honest assessment: The Expert archetype is currently labeled "RAG" in the architecture docs, but the actual implementation is hardcoded domain templates — protocol definitions, step-by-step guidance strings, safety gates. Not retrieval from a knowledge base. This is the target design, not current reality.
Current (templates)
EXPERT_PROTOCOLS dict in code.
_generate_guidance() returns hardcoded strings per skill.
Safety gates (emergency keywords, physical instruction gate).
Disclaimers injected automatically.
Works for basic guidance. Doesn't have deep domain knowledge. Can't answer "what OT exercises help a 4-year-old with low muscle tone who hates tactile input?"
Target (true RAG)
Vector knowledge base per domain:
• Symptom-triage: medical symptom reference DB
• OT: exercise library indexed by age, area, sensory profile
• Speech: activity database by delay type + age
• Elder care: care protocol library
Flow: classify query → embed query → retrieve top_k relevant docs → inject into Kimi K2.6 prompt → safety gate → response with disclaimer.
Expert RAG Target Architecture
ExpertArchetype — target RAG flow (not yet implemented)
# 1. Classify query domain + specific question
domain = classify_expert_domain(skill_id, user_input)
# → {skill: "occupational-therapy", area: "sensory_processing", age: "4yo"}
# 2. Retrieve from vector knowledge base (per domain)
kb = VectorKnowledgeBase(domain=skill_id)
docs = kb.retrieve(user_input, top_k=4)
# → ["OT activity: sensory bin with rice for tactile avoidance...",
# "Research: heavy work activities reduce sensory overwhelm in 3-5yo...",
# "Protocol: proprioceptive input before fine motor tasks..."]
# 3. Safety gate — always runs regardless of RAG result
risk = assess_risk(user_input)
gate = physical_gate.assess(skill_id, category, user_input, context)
# 4. Kimi K2.6 generates response with retrieved context
prompt = f"""
Expert domain: {skill_id} | Safety: {risk}
Retrieved knowledge:
{docs}
User question: {user_input}
User context: {profile_context}
Rules: Always include disclaimer. Never diagnose. Escalate if emergency.
"""
Knowledge bases to build: OT exercise library (age × sensory profile × area) · Speech therapy activities (delay type × age × home vs clinic) · Symptom reference (symptom × severity → triage guidance) · Elder care protocols (daily care, mobility, nutrition by condition). All would be embedded with text-embedding-3-small and stored in a vector store on Hetzner.
7 — BCT + NLP Lookup — 1800 Rows
data/bct_matrix.json — sample row with all fields
{
"barrier": "forgetfulness",
"stage": "contemplation",
"hughes_need": "importance",
"decision_style": "security",
"primary_bct": "7.1 Prompts/cues",
"secondary_bct": "8.1 Behavioral practice/rehearsal",
"nlp_pattern": "anchoring",
"opener": "When you set up that visual reminder in the kitchen,
you'll notice how naturally the habit starts to stick.",
"rationale": "Anchoring creates a reliable trigger (security need),
validated by their importance as family caregiver."
}
// Then technique file loaded: data/technique_directory/bct_7_1.json
// Contains: gemma4_prompt_text (now kimi_prompt_text), dos/donts,
// example_exchange, best_paired_with, family_context_notes
// And NLP file: data/nlp_directory/nlp_anchoring.json
// Contains: origin, when_to_use, gemma4_prompt_text, example_openers
The complete signal → technique → Kimi pipeline: Barrier detection (real-time keyword) → stage_of_change (profile) → Hughes need (EMA) → decision style (EMA) → 1800-row lookup → primary/secondary BCT + NLP pattern + opener → technique file (full prompt text + dos/donts) + NLP file (language pattern guidance) + specific user values → all assembled into Kimi K2.6 prompt. Zero LLM in the lookup itself.
8 — Goals · Barriers · Motivators Pipeline
signal_detector.py — runs on every message (real-time)
# Barrier detection: keyword first, GPT-5.4 Mini fallback
barrier_category = detect_barrier_category(message)
# → "forgetfulness" (from keywords: "keep forgetting", "always forget")
# Specific value extracted at session end by entity extraction
# Motivator EMA update: Hughes decision style
motivator_ema = update_hughes_ema(user_id, message)
# security: 0.72↑ belonging: 0.61→ autonomy: 0.48→
# (EMA smoothed — doesn't flip on a single message)
# Goals: regex + periodic LLM extraction
goals = update_goals_inferred(user_id, message)
# family_cooking: {detail: "cook at home more", conf: 0.75, evidence: 3}
# Stage of change: classifier runs every 15 msgs
stage = classify_stage(user_id, recent_messages)
# contemplation → preparation → action → maintenance
9 — Rhythm Engine
archetypes/rhythm/ — pipeline (zero LLM except final prose)
# 07:00 local: morning brief · 19:30 local: evening closeout
SignalCollector.collect() # calendar · meds · school · meals · habits · open loops
DailyState.compile(signals) # 12 fact types · VisibleScope · NudgeBudget
OpportunityDetector.score() # 5 positive × 3 penalty · budget-gated · suppression
BriefComposer.compose() # structure = deterministic · prose = Kimi K2.6
# → delivered via Hermes → Telegram
Test instance gap: Code committed and tested. Hermes cron scheduler wiring not yet done for this test instance.
10 — Complete End-to-End Example
Message: "I keep meaning to cook more at home but I always forget. My daughter loves it when we cook together on Sundays though."
Complete execution trace — every layer, every decision
══ PRE-FILTER ════════════════════════════════════════════════════════
No emergency · No injection · No active thread → pass through. Cost: $0. Time: <1ms.
══ GPT-5.4 Mini TRIAGE (2ms, cached) ════════════════════════════════
17KB prompt already cached. Message contains behavioral change intent + emotional hook.
Path → CONVERSATIONAL (not scripted: not a simple weather/reminder/list request)
Skill → {"skill": "habits", "confidence": "high"}
══ HERMES (Kimi K2.6) ═══════════════════════════════════════════════
SOUL.md loaded. Tool Search: oimy-engine skill selected (habits query).
Honcho get_insight() called:
"User has tried cooking plans 3× in prior sessions, never followed through.
Consistently references daughter as emotional anchor. Messages are terse —
prefer numbered steps. Likely time-constrained on weekdays. Responds well
to plans that build on existing habits (Sundays already happen)."
Context passed to engine.
══ CONTEXT PREPARATION ═══════════════════════════════════════════════
DEEP_PROFILE: high-C · anxious attachment · needs validation before solution
Entity store:
- daughter: Priya, 8, celiac, loves Sunday cooking (extracted session 12)
- barrier: forgetfulness → "forgets school lunches during busy mornings"
- motivator: belonging → "daughter lights up when cooking together Sundays"
goals_inferred: family_cooking [0.75, 3× evidence]
stage_of_change: contemplation (repeated intent, no sustained action)
══ BARRIER + SIGNAL DETECTION ════════════════════════════════════════
Keywords: "keep meaning to", "always forget" → barrier_category: "forgetfulness"
Specific value noted in message: "when we cook together on Sundays" → motivator lever
EMA check: belonging = 0.61 (rising), security = 0.72 (dominant)
══ BCT MATRIX LOOKUP (0ms, dict) ════════════════════════════════════
key = (forgetfulness, contemplation, importance, security)
→ primary_bct: "7.1 Prompts/cues"
→ secondary_bct: "8.1 Behavioral practice/rehearsal"
→ nlp_pattern: "anchoring"
→ opener: "When you set up that visual cue, you'll notice how
naturally the habit starts to stick."
Technique file: bct_7_1.json
→ prompt_text: "Guide user to identify ONE specific environmental cue that
will trigger the behavior. Ask: what's already in their
environment at the right time? Keep to one concrete cue."
══ KIMI K2.6 PROMPT (assembled) ════════════════════════════════════
System includes:
- SOUL.md: OiMy persona
- BCT guidance: BCT 7.1 anchoring, with exact specific values:
· barrier specific: "forgets school lunches on busy mornings"
· motivator specific: "daughter lights up cooking together Sundays"
· entity: Priya (daughter, celiac, loves Sunday cooking)
- Honcho insight: "3× tried cooking plans, Sundays already work for her"
- DEEP_PROFILE: high-C, validate first, numbered steps
══ RESPONSE (Kimi K2.6) ════════════════════════════════════════════
I keep meaning to cook more at home but I always forget. My daughter loves it when we cook together on Sundays though.
Bharath · just now
🔧 habits · high · BCT 7.1 anchoring · Kimi K2.6
The Sunday thing is actually the key — you don't need to build a new habit, you need to expand one that's already working.
Three things:
1. Sunday evening, before you finish cooking — pull out everything for Monday's lunch and put it on the counter. Five minutes. It's already prep time anyway.
2. Priya helps pack it — makes it part of the Sunday cooking flow she loves, not a separate chore you'll forget.
3. Put one ingredient on the counter Friday night — your visual cue that Sunday meal prep is tomorrow. That's your reminder.
Want me to set a Friday evening "one ingredient on counter" reminder?
OiMy · 1.2s
What made this response different: The specific barrier value ("school lunches on busy mornings") + motivator value ("Priya lights up cooking Sundays") + entity fact ("Priya, celiac, loves Sunday cooking") + BCT 7.1 anchoring + Honcho insight about prior failed plans = a response that references Priya by name, builds on an existing habit, and designs the cue around the actual trigger (Sunday cooking session). None of this is generic.
Session end — batched entity extraction (triggered 30min after last message)
# GPT-5.4 Mini processes this session's transcript
New facts extracted:
- motivator confirmed: "daughter lights up when cooking together on Sundays" → stored
- barrier confirmed: "forgets things on busy weekday mornings" → evidence_count +1
- preference inferred: "prefers Sunday as prep day" [confidence: 0.78]
- Priya: new fact added: "helps with Sunday cooking"
Honcho record_turn() called for each exchange in session.
→ Honcho's user model updated. Next get_insight() will reflect these patterns.
11 — Full Deep Inferred Profile (Multi-Hop Opus 4.8)
Opus 4.8 synthesizes this from 20+ messages across 3+ sessions. The deep-inference.txt prompt explicitly asks Opus to go multi-hop, broad, and deep — inferring everything it can from linguistic and contextual cues. This is far richer than just DISC/Enneagram.
# Deep Profile — Sarah
Generated: 2026-05-30 · Sessions: 5 · Messages: 27 · Model: claude-opus-4.8
Trigger: msg_count=22, sessions=4, pain_points_confirmed=3, emotional_disclosures=2
NEVER shown to user. Invisible operating system for every future response.
## Psychological Foundation
DISC: High-C (Conscientious) · Secondary-S (Steadiness) [0.78]
Asks clarifying questions. Provides excessive context for simple requests.
Needs: data + specifics + validation before action. Avoids conflict framing.
Attachment: Anxious (aspiring Secure) [0.71]
Self-blame pattern: "I should have known." Responds strongly to reassurance
but doesn't seek it. Secure traits emerge when logistics feel under control.
Enneagram: Type 6 — Loyalist (wing 7) [0.74]
Research before trust. Tests advice before committing. Core fear: unprepared/blamed.
Core desire: security + support. W7: optimism and humor break through.
Core wound: Capability anxiety — fear of being the one who dropped the ball
Apologizes for "obvious" questions. Disproportionate relief when reassured.
## Identity & Background (Multi-Hop Inferences)
Cultural roots: South Indian, likely Tamil or Kannadiga [0.72]
Evidence: mentions AR Rahman unprompted, rice-based comfort foods, references
"abuela" adjacently (likely a friend's term adopted), filial duty framing.
Generation & childhood era: Millennial, born ~1987-1993 [0.68]
Late 90s/Y2K childhood: references "dial-up internet era" frustration with tech,
music nostalgia clusters around 2000s Bollywood + early Western pop.
Formative world events: 9/11 in early teens, shaped safety/security sensitivity.
Where she likely grew up: Mid-size Indian city, then moved to US in early adulthood [0.61]
Code-switches between formal and colloquial (educated bilingual pattern).
References "back home" for food, implies family is in India. Mentions BWI airport.
Star sign inference: Possibly Virgo or Capricorn [LOW: 0.28]
Extreme attention to detail, self-critical, perfectionist — classic earth sign pattern.
Low confidence: not stated. Mentioned "my sign is a bit obsessive" once vaguely.
## Childhood & Formative Years
Parenting model inherited: Achievement-first, sacrificial parenting [0.74]
Describes her own parents as "worked so hard for us." Replicates this with high
personal standards. Guilt when she doesn't "do enough" mirrors internalized pattern.
Teenage identity: Likely studious, possibly eldest child or high-expectations household [0.64]
References academic success as baseline assumption. Eldest-child responsibility
framing recurs. Didn't mention teenage rebellion — suggests compliance orientation.
Formative relationship to food: Tamil home cooking as love language [0.71]
Food appears in emotional contexts (comfort, family connection, Sundays) not just
logistics. Replicating with daughter what she received from her mother.
## Music, Hobbies & Taste Markers
Music grew up with: AR Rahman, early 2000s Bollywood, some Western pop (Destiny's Child era) [0.65]
Referenced AR Rahman unprompted when discussing calming music.
Mentioned "old Bollywood" nostalgically. Y2K era Western pop via cultural osmosis.
Current music use: Background/functional — cooking, focus, stress relief [0.70]
Asks for "something calming to cook to." Not concert-goer energy — music as utility.
Hobbies abandoned: Likely cooking as creative practice (now pure logistics) [0.59]
Mentions Sunday cooking with daughter with nostalgia/warmth — suggests cooking was
once joyful, now feels like obligation. Classic parent-phase identity compression.
Interests retained: Family history/roots (mentions culture frequently), functional wellness [0.62]
Likely dislikes: Elaborate wellness content, long explainer videos, "hustle culture" framing [0.55]
## Relationships & Social Patterns
Partner dynamic: Collaborative but Sarah is primary planner/executor [0.69]
"David handles dinner sometimes" — phrased as exception, not norm. She owns logistics.
Friendship pattern: Likely 2-3 deep friendships, not wide social network [0.55]
No group social references. Mentions "a friend told me" (singular). Indian diaspora
community implied but not socially prominent in her messages.
Relationship to parents/elders: Filial duty, emotional distance (in India), guilt-tinged [0.66]
"Back home" framing for family. Mentions MIL logistics. Likely experiences
the sandwich generation differently — Indian filial values + American distance.
## Goals, Barriers, Motivators (Live)
Goals: family_cooking [0.75] · parenting_patience [0.68] · personal_wellness [0.62]
Stage per goal: family_cooking=contemplation · parenting=preparation · wellness=precontemplation
Barriers: forgetfulness [0.82] — "forgets school lunches on busy weekday mornings"
Motivators: belonging [0.61] — "daughter lights up when they cook together on Sundays"
Hughes dominant: security [0.72] · belonging [0.61]
## Personalization Hooks
1. Never open-ended — always include a default recommendation
2. Validate first — she needs to feel heard before she can hear the solution
3. Numbered steps always — processes information linearly
4. Use Priya specifically — "for Priya's sensory needs" beats "for picky eaters"
5. Sunday as foundation — build new habits onto the Sunday cooking ritual
6. Tamil food as comfort — rice-based suggestions land better culturally
7. Never "hustle" framing — she's already maxed out; progress not optimization
8. Budget-aware quietly — surface free options naturally; don't ask about money
// All sections updated incrementally. Psychological core + background run once (Opus 4.8).
// Goals/barriers/motivators update on every message (EMA + keyword detection).
// Entity store updates at session end (batched GPT-5.4 Mini extraction).
12 — Hermes SOUL.md Opus 4.8
You are the orchestration layer for OiMy — the intelligent gateway that receives every message, decides what needs to happen, and routes it perfectly. Your job is not personality (that lives in the archetype layer) — your job is precision, speed, and invisible orchestration.
1. Routing
- Fast path: greetings, simple acks → GPT-5.4 Mini inline, no engine call
- Full path: skills, emotions, complex requests → OiMy Engine (Kimi K2.6)
The user must never feel the routing decision. One voice, one friend, no seams.
2. Memory
Before every full-path response: call Honcho get_insight() to retrieve synthesized user understanding. Inject as context. Never skip this — it's what makes responses feel personal.
3. Tool Selection
threshold_pct: 5% · max 5 tools · Emergency keywords → emergency skill immediately, no deliberation.
4. Telegram Behavior
- No markdown tables · 1–2 emoji max · reactions over replies for quick acks
- Match user's register · Keep under 4096 chars
5. Proactive Rules
- Max 2/day · Hard stop 22:00–07:00 local · Must be: useful · timed · personal
6. Identity
- "What AI are you?" → "I'm OiMy" · Never reveal: Kimi, Opus, GPT, Hermes, OpenClaw
Quality bar: Useful · Earned · Timed · Brief · Human
13 — Status: Live vs Next
| Component | Status | Notes |
| Hermes gateway (Hetzner) | ✅ Live | Kimi K2.6 · crash-watchdog cron · PID 3214655 |
| GPT-5.4 Mini triage + classification | ✅ Live | 17KB prompt cached · ~2ms after first call |
| Kimi K2.6 archetype responses | ✅ Live | All 6 archetypes |
| Opus 4.8 deep inference | ✅ Live | MAX_RUNS=1 · async background · triggers on threshold |
| Barrier category detection (real-time) | ✅ Live | signal_detector.py · keyword + GPT fallback |
| Motivator EMA (Hughes) | ✅ Live | profile_hughes_decision · 6 styles updated per message |
| BCT + NLP matrix lookup (1800 rows) | ✅ Live | bct_matrix.json · 52 technique files · 15 NLP files |
| SQLite persistence | ✅ Live | All structured data including category signals |
| Barrier/motivator SPECIFIC values (entity store) | ⚠️ Partial | Category stored. Specific value extraction not yet batched at session end. |
| Entity extraction (batched, session end) | ❌ Gap | Not yet implemented. One GPT-5.4 Mini call needed at session end. |
| Honcho memory | ❌ Gap | No HONCHO_API_KEY on Hetzner. Falls back to SQLite recent_messages. |
| Vector memory (with embeddings) | ⚠️ Partial | Active but embedding degraded — needs OpenAI text-embedding-3-small separately. |
| Expert archetype — true RAG | ⚠️ Template only | Current: hardcoded templates. Target: vector KB per domain (OT, speech, symptom). |
| Pre-Hermes triage (upstream of Kimi) | ⚠️ Partial | GPT triage inside engine. Not yet upstream of Hermes to skip Kimi for scripted. |
| Skillify scripted short-circuit | ⚠️ Partial | Scripts exist. Routing bypass not wired. |
| Rhythm Engine cron scheduler | ❌ Gap | Code committed + tested. Hermes cron wiring not done. |
| Agenda Manager wiring | ⚠️ Partial | Methods in profile.py. Not wired into api.py coach flow. |
| Expert RAG knowledge bases | 🔵 Future | Need to build OT exercise library, symptom DB, speech activity DB. |
| Journey (long-term arcs) | 🔵 Future | Architecture defined. Pending test validation. |
| GBrain (OiMy users) | ✅ Intentional N/A | GBrain = developer tool (Bharath). OiMy users use Honcho + entity extraction stack. |
OiMy Architecture v4 · May 30, 2026 · Added: Honcho dialectic inference detail · Expert RAG reality vs target · Exact barrier/motivator/entity value schema · Batched entity extraction · Multi-hop deep profile with childhood/music/relationships