OiMy — Complete Architecture v3
Pre-filter triage · Skillify short-circuit · Hermes orchestration · Honcho + entity extraction memory · Goals/Barriers/Motivators pipeline · 1800-row BCT+NLP lookup · Archetype execution · Rhythm Engine · Deep personalization
v3 · May 30, 2026
Hermes v0.15.2
GPT-5.4 Mini
Kimi K2.6
Opus 4.8
BCT 1800 rows
Honcho · Mem0 · Vector
1 — Full Architecture Diagram
📱 User — Telegram @chittiemma1_bot
Message received via Telegram polling. Any family member's message.
"my daughter got diagnosed celiac last week. I'm overwhelmed. where do I even start with changing our dinners?"
↓
🛡 Pre-Filter Zero LLM · Deterministic
Emergency keywordschest pain · gas leak · self-harm → emergency skill immediately
Prompt injection guarddetect + block before any model call
Active thread TTLmid-conversation → continue same skill, skip re-classify
Onboarding gateno profile yet → onboarding flow
↓ (no rule fired)
⚡ Intent Triage GPT-5.4 Mini · 17KB cached prompt · ~2ms
One call. Classifies message into TWO buckets. Determines whether any further LLM call is needed.
🔧 SCRIPTED PATH No more LLM
weather · reminder · calendar view · shopping list · note · chores · screen time
→ deterministic script → return instantly
🎼 CONVERSATIONAL PATH → Hermes
coaching · meal planning · stories · elder care · emotional support · planning
→ full pipeline below
↓ conversational path
🎼 Hermes Gateway Kimi K2.6
Orchestrates the full path. Loads SOUL.md + context, queries memory, dispatches to skill engine.
SOUL.mdOiMy Hermes persona (Opus 4.8 crafted). Governs identity, routing, platform behavior.
Honcho session contextSynthesized dialectic context from prior sessions. "Here's what we know about this person."
Tool Searchthreshold 5% · max 5 tools · loads oimy-engine skill
Fast-path inlinesimple acks · confirmations → GPT-5.4 Mini responds without engine call
↓ POST /chat {message, user_id, honcho_context, jwt}
🧠 Context Preparation Layer — runs before archetype
Assembles the full personalization context from all signal sources. No LLM needed for signal detection (keyword-first). LLM only for entity extraction.
User profile (USER.md)Name · timezone · family members · stated facts
DEEP_PROFILE.mdDISC · attachment · Enneagram · core wound · personalization hooks
Inference signalsgoals_inferred · stage_of_change · barriers (real-time) · motivators (EMA)
Honcho insightcross-session memory synthesis
Vector memorysemantic retrieval: past conversations similar to this
Entity store (SQLite)Named people · explicit preferences · stated facts extracted by LLM
↓
🗺 BCT + NLP Selection Zero LLM · Pure Lookup
Fires for coaching, habits, wellness, parenting paths. 1800-row matrix lookup. 4 input dimensions → exact technique + NLP pattern + opener.
Barrier detectedoverwhelmed
×
Stage of changecontemplation
×
Hughes needimportance
×
Decision stylesecurity
→
BCT Matrix → Technique
BCT 5.1 + BCT 15.1
NLP: presupposition
+ exact opener + prompt text
↓ full context + BCT guidance → Kimi K2.6 prompt
⚙️ Archetype Execution Kimi K2.6
Six archetypes. Each shaped by the context + BCT guidance assembled above.
CoachArchetypeBarriers · BCT injection · agenda tracking
PlannerArchetypeMeal plans · travel · study — structured output
ExpertArchetypeSymptom triage · speech/OT · RAG knowledge
ActionArchetypeReminders · lists · notes — deterministic first
MonitorArchetypeElder check-ins · weather · cron-triggered
ProfileArchetypeOnboarding · profile CRUD · preference learning
↓
🧠 Memory Write-Back
Honcho: record turnuser + assistant message logged with session context
Entity extractionGPT-5.4 Mini structured call: extract named people, explicit facts → SQLite
Vector memory storeconversation pair embedded + stored for future retrieval
Inference signals updateEMA update to motivators, goals, barriers from this turn
Opus 4.8 deep inference check (async, background)
After 20 msgs + 3 sessions + 2 pain points: synthesize DEEP_PROFILE.md. MAX_RUNS=1. Never blocks response.
↓ response via Hermes → Telegram
📅 Rhythm Engine scheduled · not per-message · Kimi K2.6 for prose
SignalCollectorCalendar · meds · school · meals · elder care · habits · open loops — no LLM
DailyState compiler12 fact types · VisibleScope privacy · provenance tracking — no LLM
OpportunityDetector5 positive × 3 penalty factors · NudgeBudget (2/day max · quiet hours)
BriefComposer → Kimi K2.6Morning brief (07:00) · Evening closeout (19:30) · prose polish only
2 — Model Responsibilities
🛡 Pre-Filter Rules Zero LLM
Emergency regex · injection guard · active thread TTL · onboarding gate. Cost: $0. Latency: <1ms.
⚡ GPT-5.4 Mini openrouter/openai/gpt-5.4-mini
Intent triage (scripted vs conversational) · 83-skill classification (JSON output, prompt cached) ·
Entity extraction after each turn (named people, explicit facts) · Fast-path Hermes inline responses ·
Latency: ~700ms first / ~2ms cached.
🌙 Kimi K2.6 openrouter/moonshotai/kimi-k2.6
Hermes main agent (orchestration, tool decisions) · All archetype responses (coach, planner, expert, etc.) ·
Emotional support · Multi-step planning · Rhythm Engine brief prose · 131K context.
🔮 Opus 4.8 openrouter/anthropic/claude-opus-4.8
Deep Inferred Profile — once per user. Async background call.
Trigger: 20+ msgs · 3+ sessions · 2+ pain points. Produces DEEP_PROFILE.md.
DEEP_INFERENCE_MAX_RUNS=1.
🔧 Skillify Scripts Zero LLM
Weather API · reminder insert · calendar query · shopping list append · chore mark-done.
GPT triage routes here. No further model calls. Latency: 15–120ms.
🗺 BCT + NLP Matrix Zero LLM · Pure Lookup
1800-row lookup: barrier × stage × hughes_need × decision_style → primary_bct + secondary_bct + nlp_pattern + opener.
52 technique files with full prompt text. No inference needed — pure dict lookup.
3 — Memory Stack
Honest Assessment: Honcho + Entity Extraction + Vector + SQLite vs GBrain
The earlier recommendation (confirmed): GBrain is for you (Bharath) as a developer — knowledge work, long-term project context, semantic search across hundreds of documents. OiMy end-users have a simpler, more relational memory problem. The Honcho-based stack is the right fit — and here's why it's sufficient.
🧠 Honcho — Session Inference
What it does that's different: Doesn't just store — it synthesizes. "Here's what the dialectic between user and assistant reveals about this person." Cross-session, automatically inferred context that the LLM can use directly.
Used for: Before each archetype response. Honcho returns a synthesis of what it knows about the user from all prior turns — not raw history, but an interpreted model.
HONCHO_WORKSPACE=oimy-{user_id} · peers: user + assistant
📝 Entity Extraction (Mem0 approach)
The gap that was identified: Neither Honcho nor vector memory reliably extracts explicit facts ("my daughter is 8", "we're gluten free now", "David hates spicy food").
Solution: After each turn, one GPT-5.4 Mini structured call extracts named entities + explicit preferences → stores in SQLite entity table.
entities: {type, value, confidence, source_turn}
Cost: ~$0.0001/call. Trivial.
🔍 Vector Memory — Semantic Retrieval
Stores (message, response) pairs as embeddings. Retrieval: find past conversations semantically similar to the current request. Used to enrich context before archetype execution.
text-embedding-3-small · top_k=3
🗄 SQLite — Structured State
All structured data: profiles · inference_signals · goals_inferred · stage_of_change · motivators (EMA) · barriers · reminders · plans · nudge_log · rhythm_briefs · entity store
Verdict: Yes, this stack matches GBrain's value for OiMy users. GBrain adds BM25 + graph traversal — powerful for corpus search, overkill for a family with 5–10 recurring people and ~50 preference facts. The four-layer stack here covers every use case, runs on Hetzner without extra install, and the entity extraction call closes the one gap GBrain covers that Honcho doesn't.
Current test instance gaps: Honcho disabled (no API key on Hetzner). Vector memory active but embedding degraded to no-op in cloud mode — needs OpenAI text-embedding-3-small pointed separately. Entity extraction not yet wired.
4 — Goals · Barriers · Motivators Pipeline
These ARE in the codebase (implemented in Phase 1 of cloud architecture). What was missing was their visibility in the architecture diagram. They are the input dimensions to the BCT lookup — they determine which technique gets selected.
Where they live: archetypes/signal_detector.py · archetypes/inference.py · archetypes/bct_engine.py · SQLite tables: profile_hughes_needs · profile_hughes_decision · inferred goals_inferred · stage_of_change
The Personalization Signal Pipeline
signal_detector.py + inference.py — runs on every message
# 1. Real-time barrier detection (keyword first, LLM fallback)
barrier = detect_barrier(message)
# 10 barrier categories: overwhelmed · forgetfulness · guilt_shame ·
# lack_of_confidence · lack_of_planning · social_pressure ·
# low_motivation · environment · knowledge_gap · plateau
# 2. Stage of change (updated per-user as signals accumulate)
stage = profile["stage_of_change"]
# precontemplation → contemplation → preparation → action → maintenance
# 3. Hughes Decision Style (EMA-updated after each message)
decision_style = get_dominant_motivator(profile_hughes_decision)
# security · comfort · status · belonging · autonomy · identity
# Updated by: signal_detector + OpenRouter Gemma31 fallback
# 4. Hughes Needs (parallel EMA table)
hughes_need = get_dominant_need(profile_hughes_needs)
# approval · importance · pity · power · safety · uniqueness
# 5. Goals inferred (regex + LLM extraction)
goals = profile["goals_inferred"]
# domains: health · fitness · parenting · family_connection · career ·
# education · wellness · nutrition · relationships · finances
# Each goal has: detail + confidence + evidence_count
🚧 Barriers
Detected from every message. Keyword regex first, GPT-5.4 Mini fallback. 10 categories mapped to specific BCT selections. Stored per coach session.
coach_sessions.detected_barrier
🎯 Goals
Inferred from language patterns across conversations. 10 domains. Confidence + evidence count tracked. Feed into both Planner and Coach archetypes.
profile.goals_inferred
💡 Motivators (Hughes)
6 decision styles (security, comfort, status, belonging, autonomy, identity). EMA-updated from every substantive message. The dominant style shapes NLP pattern selection.
profile_hughes_decision
🪜 Stage of Change
Transtheoretical model: Precontemplation → Contemplation → Preparation → Action → Maintenance. Updated via signal detection. Determines which BCTs are appropriate.
profile.stage_of_change
5 — BCT + NLP Lookup — 1800 Rows
The mapping already exists. This is a pure lookup table — no LLM needed for BCT selection itself. The 4 input dimensions uniquely select a row from 1800 rows, which contains the exact technique, NLP pattern, and conversation opener to use.
What was built: data/bct_matrix.json — 1800 rows authored by Opus 4.7. data/technique_directory/ — 52 technique files, each with full Kimi-ready prompt text, dos/don'ts, and example exchanges authored by Opus.
Lookup Pipeline
bct_engine.py — BCT selection flow (zero LLM)
# Input: 4 personalization dimensions from user profile
key = (barrier, stage_of_change, hughes_need, decision_style)
# Example: ("overwhelmed", "contemplation", "importance", "security")
# Step 1: Matrix lookup (bct_matrix.json, 1800 rows)
row = BCT_MATRIX[key]
# Returns:
# primary_bct: "5.1 Salience of consequences"
# secondary_bct: "15.1 Verbal persuasion (capability)"
# nlp_pattern: "presupposition"
# opener: "Your family really does count on you to keep things
# running, and when you decide to tackle this, the relief
# you'll feel is already waiting on the other side."
# Step 2: Technique directory lookup (data/technique_directory/)
technique = load_technique("bct_5_1.json")
# Returns:
# gemma4_prompt_text: exact instructions for Kimi K2.6
# example_exchange: {user, oimy} pair showing correct behavior
# dos: [...], donts: [...], family_context_notes: "..."
# Step 3: Inject into Kimi K2.6 archetype prompt
bct_context = f"""
BCT to apply: {technique['one_liner']}
How: {technique['gemma4_prompt_text']}
NLP pattern: {nlp_pattern} — {NLP[nlp_pattern]}
Opening line: {opener}
DON'T: {'; '.join(technique['donts'][:3])}
"""
# → prepended to Kimi K2.6 coaching prompt
The 4 Lookup Dimensions
🚧 Barriers (10)
environment · forgetfulness · guilt_shame · knowledge_gap · lack_of_confidence · lack_of_planning · low_motivation · overwhelmed · plateau · social_pressure
🪜 Stages (5)
precontemplation · contemplation · preparation · action · maintenance
Different BCTs apply at each stage — meeting the user where they are.
💡 Hughes Needs (6)
approval · importance · pity · power · safety · uniqueness
What the user fundamentally needs to feel from this interaction.
🧭 Decision Styles (6)
security · comfort · status · belonging · autonomy · identity
How this person is motivated to make decisions and take action.
Real Row from the Matrix
bct_matrix.json — sample row: barrier=overwhelmed, stage=contemplation, need=importance, style=security
{
"barrier": "overwhelmed",
"stage": "contemplation",
"hughes_need": "importance",
"decision_style": "security",
"primary_bct": "5.1 Salience of consequences",
"secondary_bct": "15.1 Verbal persuasion (capability)",
"nlp_pattern": "presupposition",
"opener": "Your family really does count on you to keep things running,
and when you decide to tackle this, the relief you'll feel is
already waiting on the other side.",
"rationale": "Validates their pivotal role (importance) while presupposing
a safe, positive outcome (security), using salience to highlight
the emotional payoff of change."
}
6 — Rhythm Engine
Scheduled day-level compiler. Runs independently of user messages. Not a skill — orchestrates skills. Code committed and tested against synthetic user profiles.
archetypes/rhythm/ — pipeline summary
# Runs on cron: morning ~07:00 local, evening ~19:30 local
# 1. SignalCollector — zero LLM, pure data gathering
collect(calendar, medications, school, meals, elder_care, habits, open_loops, weather)
# 2. DailyState — typed compilation, zero LLM
# 12 fact types · VisibleScope (private/shared_family/care_team)
# NudgeBudget: 2/day max · per-category caps · quiet hours
# 3. OpportunityDetector — rule scoring, zero LLM
# 5 positive factors × 3 penalty factors per nudge candidate
# Suppression: no repeat of last 3 nudges
# 4. BriefComposer — Kimi K2.6 for PROSE ONLY
# Structure is deterministic; only the final words use LLM
brief = compose(state, candidates, member_scope)
# 5. Delivery via Hermes → Telegram
# Morning: "Good morning — here's today" + nudge
# Evening: "How did X go? — here's tomorrow's prep"
Test instance gap: Rhythm code is committed and tested. Hermes cron scheduler wiring is the remaining step — not yet deployed for the test instance.
7 — End-to-End Example
Message: "I've been meaning to do more home cooking but I keep falling off. Every time I plan it I just forget."
This goes through every layer — classifier, context prep, barrier detection, BCT lookup, coaching archetype.
Step by step
Execution trace — every layer
── PRE-FILTER ──────────────────────────────────────────────────
No emergency · No injection · No active thread → pass through
── GPT-5.4 Mini TRIAGE (2ms, cached) ──────────────────────────
Path: CONVERSATIONAL → Hermes path
Skill: "parent-playbook"... actually: "wellness-daily" or "habits"
→ {"skill": "habits", "confidence": "high"}
── HERMES (Kimi K2.6) ─────────────────────────────────────────
Loads SOUL.md · Honcho returns: "user has mentioned cooking 3× before,
always frames it as something they intend to do but don't follow through"
Tool Search: oimy-engine skill loaded
── CONTEXT PREPARATION ────────────────────────────────────────
DEEP_PROFILE: high-C · anxious attachment · needs numbered steps
goals_inferred: {family_cooking: {detail: "cook at home more", conf: 0.75}}
stage_of_change: "contemplation" ← repeated mention, no action yet
Entity store: David (husband, hates spicy) · Emma (daughter, celiac)
── BARRIER + MOTIVATOR DETECTION ─────────────────────────────
Barrier: "forgetfulness" ← "keep falling off", "just forget" → keyword match
Hughes decision style: "security" ← from EMA (high-C = security-oriented)
Hughes need: "importance" ← "doing more", wanting to be seen as capable
── BCT MATRIX LOOKUP (zero LLM) ──────────────────────────────
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 reminder in the kitchen...
you'll notice how naturally the habit starts to stick."
── TECHNIQUE DIRECTORY LOOKUP ────────────────────────────────
bct_7_1.json → prompt_text for Kimi K2.6:
"Help user identify a specific cue that will trigger the behavior.
Ask: when/where does the habit need to happen? What's already there
that could serve as a reminder? Keep to one concrete cue."
── KIMI K2.6 — CoachArchetype / habits ───────────────────────
Context injected: DEEP_PROFILE + BCT guidance + Honcho insight + entity facts
Response: warm, numbered steps, cue-based, anchors to their kitchen
I've been meaning to do more home cooking but I keep falling off. Every time I plan it I just forget.
Bharath · just now
🔧 habits · high · BCT 7.1+8.1 · Kimi K2.6
Totally fair — intention without a trigger just doesn't stick for most people. The issue isn't discipline, it's missing a cue.
Try this:
1. Pick one meal this week — not a plan, one meal. Sunday dinner works well.
2. Tie it to something that already happens — "when I put the kids' bags by the door on Saturday, I check what we need for Sunday dinner." The existing habit carries the new one.
3. Put the protein out on Sunday morning — visual cue, 2 seconds. That's your reminder.
Want me to set up a Sunday reminder and pick the meal?
OiMy · 1.1s
8 — Full Deep Inferred Profile
Complete DEEP_PROFILE.md as Opus 4.8 generates it — now including goals, barriers, motivators, and stage of change.
# Deep Profile — Sarah
Last Updated: 2026-05-30 · Sessions: 5 · Messages: 27
Generated by: openrouter/anthropic/claude-opus-4.8 · Runs: 1/1
## Primary Social Need
Belonging + Competence [0.82]
Frames requests through family impact. Volunteers extra context (need to be seen as prepared).
"Tell me exactly what to do" — appeared 3× across sessions. Visibly relieved by numbered steps.
## DISC Type
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 Style
Anxious (with Secure aspiration) [0.71]
Self-blame pattern. Responds strongly to reassurance but doesn't seek it directly.
Secure traits emerge when logistics feel managed.
## Enneagram
Type 6 — Loyalist (wing 7) [0.74]
Research-then-trust orientation. Tests advice before committing fully.
Core fear: unprepared / blamed. Core desire: security + support.
## Core Wound
Capability anxiety — fear of being the one who dropped the ball
Apologizes for "obvious" questions. Prefaces with "this might be dumb but..."
## Goals (Inferred)
family_cooking: "cook at home more, healthier meals" [0.75, 3× evidence]
parenting: "be more patient, less reactive with kids" [0.68, 2× evidence]
wellness: "find personal time, reduce burnout" [0.62, inferred]
## Stage of Change (per goal)
family_cooking: contemplation — mentions intention repeatedly, no sustained action
parenting: preparation — reading about it, asked for frameworks
wellness: precontemplation — named as a problem, not yet seeking change
## Active Barriers
forgetfulness [high confidence] — "keep forgetting", "slips my mind", "meant to"
overwhelmed [medium] — "between everything", "no time"
## Motivator Profile (Hughes Decision Styles)
security: 0.72 ↑ belonging: 0.61 → autonomy: 0.48 →
comfort: 0.41 → status: 0.29 ↓ identity: 0.38 →
EMA-updated. Primary driver: security. BCT selection tuned accordingly.
## 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. Reference family members specifically — "for Priya's sensory needs" > "for picky eaters"
5. Budget-aware without pity — surface free options naturally
## Entity Store (Extracted Facts)
daughter: Priya, age 8, celiac diagnosis 2026-05, picky eater
husband: David, hates spicy food
location: Boston area, EST timezone
preference: Tamil cuisine comfort foods, Sunday cooking tradition
// This profile is NEVER revealed to the user. Used invisibly in every session.
// Goals/barriers/motivators are LIVE — updated from every substantive message.
// Entity store is additive — new facts merge in on extraction.
9 — 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.
Think of yourself as the conductor of an orchestra. The musicians (skills, tools, models) are the talent. You make sure the right ones play at the right time, in the right order, without the audience hearing the cue.
1. Message Intake & Routing
- Fast path → greetings, simple acks, confirmations → GPT-5.4 Mini inline, no engine call
- Full path → skills, emotional content, complex orchestration → OiMy Engine
The user must never feel the routing decision. One voice, one friend, no seams.
2. Tool Selection (Tool Search enabled)
- threshold_pct: 5% — loads tool if ≥5% relevance
- search_default_limit: 5 tools max per query
- Emergency keywords → emergency skill immediately, no deliberation
3. Telegram-Native Behavior
- No markdown tables · 1–2 emoji max · reactions over replies for acks
- Match user's register · Keep under 4096 chars · Split at paragraph breaks
4. Error Handling
- Never expose model names, stack traces, or infrastructure
- "Couldn't reach that. What did you need?" — never technical errors
5. Proactive Message Rules
- Max 2 unsolicited messages per day · Hard stop: 22:00–07:00 local
- Must be: useful · timed · respectful · personal
6. Identity Protection
- "What AI are you?" → "I'm OiMy" · Never reveal: Kimi, Opus, GPT, Hermes, OpenClaw
Quality bar: Useful · Earned · Timed · Brief · Human
10 — Status: Live vs Next
| Component | Status | Notes |
| Hermes gateway (Hetzner) | ✅ Live | PID 3214655 · Kimi K2.6 · crash-watchdog cron |
| GPT-5.4 Mini classification | ✅ Live | Inside engine · prompt cached · ~2ms after first call |
| Kimi K2.6 archetype responses | ✅ Live | All 6 archetypes using Kimi as tall model |
| Opus 4.8 deep inference | ✅ Live | MAX_RUNS=1 · triggers after 20 msgs + 3 sessions + 2 pain points |
| SQLite persistence | ✅ Live | Profiles · inference signals · session data |
| Vector memory | ⚠️ Partial | Active but embedding degraded in cloud mode — needs OpenAI text-embedding-3-small |
| Barrier detection (real-time) | ✅ Live | signal_detector.py · keyword + GPT fallback · 10 categories |
| Motivator EMA (Hughes) | ✅ Live | profile_hughes_decision · updates every substantive message |
| Stage of change tracking | ✅ Live | Per-goal stage in inference_profile |
| BCT + NLP matrix lookup (1800 rows) | ✅ Live | bct_matrix.json · bct_engine.py · 52 technique files |
| BCT injection into coaching prompt | ✅ Live | CoachArchetype · ParentCoach · Habits archetypes |
| Honcho session memory | ❌ Gap | No HONCHO_API_KEY on Hetzner. Falls back to SQLite recent_messages. |
| Entity extraction (mem0 approach) | ❌ Gap | Not yet wired. GPT-5.4 Mini structured call needed after each turn. |
| Pre-Hermes triage routing | ⚠️ Partial | Rules active. GPT triage still inside engine, not upstream of Hermes. |
| Skillify scripted short-circuit | ⚠️ Partial | Scripts exist. Routing config to bypass Kimi not yet wired. |
| Rhythm Engine scheduler | ❌ Gap | Code committed + tested. Hermes cron wiring not done for test instance. |
| GBrain (Hetzner) | ❌ Intentional | GBrain is for Bharath (developer use). OiMy users use Honcho stack. |
| Journey (long-term arcs) | ❌ Designed | Architecture defined. Implementation after test validation. |
| Agenda Manager wiring | ⚠️ Partial | add/complete_session_action in profile.py. Not wired in api.py. |
11 — Configuration Reference
Hermes config.yaml (Hetzner)
~/.hermes/config.yaml · 116.203.107.13
model:
default: openrouter/moonshotai/kimi-k2.6 # orchestration + archetypes
fast: openrouter/openai/gpt-5.4-mini # triage + fillers + entity extraction
budget: openrouter/openai/gpt-5.4-mini
quality: openrouter/moonshotai/kimi-k2.6
fallback: openrouter/anthropic/claude-sonnet-4-6
tools:
tool_search: {enabled: 'on', threshold_pct: 5, search_default_limit: 5}
OiMy Engine .env (Hetzner)
/opt/oimy-engine/.env
ROUTER_MODEL=openai/gpt-5.4-mini # intent classification
TALL_MODEL=openrouter/moonshotai/kimi-k2.6 # archetypes
DEEP_INFERENCE_MODEL=openrouter/anthropic/claude-opus-4.8
DEEP_INFERENCE_MAX_RUNS=1
JWT_SECRET=oimy-dev-secret-change-in-production
OpenClaw (victory-bobcat)
~/.openclaw/openclaw.json · victory-bobcat
agents.defaults.model.primary: "anthropic/claude-sonnet-4-6"
# All sessions: Sonnet 4.6 (changed as requested)
OiMy Architecture v3 · May 30, 2026 · Hetzner 116.203.107.13 · Updated with: memory stack clarification · goals/barriers/motivators pipeline · 1800-row BCT+NLP lookup flow