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

Contents

  1. Full Architecture Diagram
  2. Model Responsibilities
  3. Honcho — Dialectic Inference Memory
  4. Full Memory Stack
  5. Exact Barrier/Motivator/Entity Values
  6. Expert Archetype RAG — Reality vs Target
  7. BCT + NLP — 1800 Row Lookup
  8. Goals · Barriers · Motivators Pipeline
  9. Rhythm Engine
  10. Complete End-to-End Example
  11. Full Deep Inferred Profile (Multi-Hop)
  12. Hermes SOUL.md
  13. Status: Live vs Next

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 categoryforgetfulness
value: "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

SOUL.md · ~/.hermes/SOUL.md · OiMy Hermes Orchestration Layer

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

ComponentStatusNotes
Hermes gateway (Hetzner)✅ LiveKimi K2.6 · crash-watchdog cron · PID 3214655
GPT-5.4 Mini triage + classification✅ Live17KB prompt cached · ~2ms after first call
Kimi K2.6 archetype responses✅ LiveAll 6 archetypes
Opus 4.8 deep inference✅ LiveMAX_RUNS=1 · async background · triggers on threshold
Barrier category detection (real-time)✅ Livesignal_detector.py · keyword + GPT fallback
Motivator EMA (Hughes)✅ Liveprofile_hughes_decision · 6 styles updated per message
BCT + NLP matrix lookup (1800 rows)✅ Livebct_matrix.json · 52 technique files · 15 NLP files
SQLite persistence✅ LiveAll structured data including category signals
Barrier/motivator SPECIFIC values (entity store)⚠️ PartialCategory stored. Specific value extraction not yet batched at session end.
Entity extraction (batched, session end)❌ GapNot yet implemented. One GPT-5.4 Mini call needed at session end.
Honcho memory❌ GapNo HONCHO_API_KEY on Hetzner. Falls back to SQLite recent_messages.
Vector memory (with embeddings)⚠️ PartialActive but embedding degraded — needs OpenAI text-embedding-3-small separately.
Expert archetype — true RAG⚠️ Template onlyCurrent: hardcoded templates. Target: vector KB per domain (OT, speech, symptom).
Pre-Hermes triage (upstream of Kimi)⚠️ PartialGPT triage inside engine. Not yet upstream of Hermes to skip Kimi for scripted.
Skillify scripted short-circuit⚠️ PartialScripts exist. Routing bypass not wired.
Rhythm Engine cron scheduler❌ GapCode committed + tested. Hermes cron wiring not done.
Agenda Manager wiring⚠️ PartialMethods in profile.py. Not wired into api.py coach flow.
Expert RAG knowledge bases🔵 FutureNeed to build OT exercise library, symptom DB, speech activity DB.
Journey (long-term arcs)🔵 FutureArchitecture defined. Pending test validation.
GBrain (OiMy users)✅ Intentional N/AGBrain = 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