Engineering Spec - June 7, 2026

OiMy Desktop App
Hermes v0.16 Fork

Rebrand the Hermes desktop app (MIT/Apache 2.0) as OiMy. Bundle Gemma 4 12B locally via Ollama. Connect to OiMy's existing cloud backend for BCT and deep inference. Families get a private, always-on AI that runs on their MacBook.

MVP: 4 weeks Option A: Telegram v1 Gemma 4 12B Q4_K_M 16GB RAM minimum Cloudflare tunnel required

Eval Results (June 6-7, 2026)

Why 12B, and why now

Results from the full Gemma 4 eval on RunPod RTX 3090 with correct models. 10 persona judges (Grok 4.3 + GPT-5.5), all 22 conv + 10 BCT scenarios.

Conv NPS
6.23/10
Gemma 4 12B vs Sonnet 4.6 gold (6.61)
Gap: 0.38 pts
Tool Calling
3.38/5
vs Kimi K2.6 baseline (3.68)
Gap: 0.30 pts - addressable
Hermes E2E
8/10
@chittiemma1_bot scenarios passing
Failure: constraint memory (fixable)
KEY FINDING

12B handles 80% of OiMy interactions (logistics, lists, quick conv, urgency, safety) with a gap of only 0.38 vs Sonnet. BCT and complex coaching (-0.94 gap) stay in cloud. This is exactly the split the laptop-server architecture requires. Tool calling gap vs Kimi K2.6 (0.30 pts) is small enough to address with one more Opus prompt iteration.


01 / Architecture

System Design

COMPONENT TREE
[OiMy Desktop .dmg Installer]
 ├── Electron Shell (Onboarding + Menubar UI)
 │    ├── React Wizard (5-step setup flow)
 │    ├── Menubar Agent (persistent tray icon)
 │    └── System Config Writer
 │         ├── LaunchAgent .plist generator
 │         ├── pmset override (AC power only)
 │         └── Cloudflare tunnel provisioner
 │
 └── Embedded Assets /
      ├── python-build-standalone (3.12, isolated)
      ├── Ollama binary (v0.23+, pre-compiled)
      ├── Gemma 4 12B Q4_K_M GGUF (~8GB bundled or download-on-first-run)
      ├── OiMy skill manifests (85 skills, Hermes format)
      ├── Hermes gateway (Python, MIT license)
      └── cloudflared binary (Cloudflare tunnel client)
RUNTIME FLOW
Family iPhone (OiMy iOS / Telegram)
  |
  |-- Local WiFi ---> OiMy Desktop Mac (:8000 WebSocket / FastAPI)
  |                       |
  |                       +-- Gemma 4 12B (Ollama :11434) [fast path]
  |                       |   80% of requests handled locally
  |                       |
  |                       +-- OiMy Cloud (Hetzner) [fallback]
  |                           BCT, deep coaching, complex planning
  |
  |-- Via Cloudflare Tunnel (when not on same WiFi)
       https://[familyid].oimyai.com -> Mac :8000

Mac OFF / unavailable:
  iPhone -> OiMy Cloud directly (same quality, higher latency/cost)
LOCAL (Gemma 4 12B)
  • Quick conv (logistics, scheduling)
  • Urgency responses
  • Safety triage
  • List management
  • Calendar tool calls
  • Reminders
  • Venting / emotional
CLOUD (OiMy Hetzner)
  • BCT coaching (Grok 4.3)
  • Deep profile inference (Opus 4.8)
  • Multi-step planning
  • Transport coordination (gap: TC07)
  • Mac unavailable (auto-fallback)
  • Family data sync
  • Daily rhythm engine

02 / Critical Technical Decisions

Where the spec needs fixes

Fix Required pmset sleep override

pmset -a disablesleep 1 kills battery on all power states. Users will notice within 24 hours and leave a 1-star review.

// WRONG - disables sleep on battery too
exec('sudo pmset -a disablesleep 1', callback)

// CORRECT - AC power only, battery sleeps normally
exec('sudo pmset -c disablesleep 1', callback)
// Plus: caffeinate -s as child of daemon (belt + suspenders)
// -c = charger only | -b = battery only | -a = all
Production Grade LaunchAgent .plist (complete)

Missing WorkingDirectory, EnvironmentVariables, and log paths from the reference spec. Without these the daemon starts blind.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" ...>
<plist version="1.0"><dict>
  <key>Label</key>
  <string>com.oimy.agent</string>

  <key>ProgramArguments</key>
  <array>
    <string>/Users/USER/Library/Application Support/OiMyAgent/env/bin/python</string>
    <string>-m</string><string>hermes_agent.gateway</string>
  </array>

  <key>WorkingDirectory</key>
  <string>/Users/USER/Library/Application Support/OiMyAgent</string>

  <key>EnvironmentVariables</key>
  <dict>
    <key>OPENROUTER_API_KEY</key><string>INJECTED_AT_SETUP</string>
    <key>OLLAMA_HOST</key><string>127.0.0.1:11434</string>
    <key>OIMY_CLOUD_URL</key><string>https://api.oimyai.com</string>
    <key>CLOUDFLARE_TUNNEL_TOKEN</key><string>INJECTED_AT_SETUP</string>
  </dict>

  <key>StandardOutPath</key>
  <string>/Users/USER/Library/Logs/OiMyAgent/agent.log</string>
  <key>StandardErrorPath</key>
  <string>/Users/USER/Library/Logs/OiMyAgent/agent-error.log</string>

  <key>RunAtLoad</key><true/>
  <key>KeepAlive</key><true/>
</dict></plist>
Not in Spec Cloudflare tunnel (required for away-from-home use)

Without a tunnel, iOS can only reach the Mac on the same WiFi. Parents at work, kids traveling - broken. OiMy already runs api-tunnel on Hetzner - same pattern needed here.

# Auto-provisioned at first run via Cloudflare Zero Trust API
# Stored in OiMy account, associated with family ID

cloudflared tunnel create oimy-[family-id]
cloudflared tunnel route dns oimy-[family-id] [family-id].oimyai.com

# Then added as second .plist daemon:
# com.oimy.tunnel.plist -> cloudflared tunnel run oimy-[family-id]
# KeepAlive: true
# When Mac is on + internet -> iOS works from anywhere
Memory Reality 12B RAM requirements (corrected)
MODEL FOOTPRINT
~8.5-9 GB
Gemma 4 12B Q4_K_M
16GB MAC
Works, tight
~7GB left for macOS + apps
24GB+ MAC
Comfortable
Recommended for heavy use
Honest app store copy: "Runs on 16GB M-chip Macs. Works best with other apps closed or on 24GB+. E4B (4B) available for 8GB Macs at reduced quality."

03 / Build Plan

4-week MVP (Option A: Telegram)

Week 1 Fork + Core Packaging

Fork Hermes v0.16.0, rebrand assets, replace config defaults, get Gemma 4 12B running via bundled Ollama.

  • Fork nousresearch/hermes-agent, rename to oimy-desktop
  • Replace branding (name, logo, colors, window titles)
  • Bundle python-build-standalone 3.12 into Electron assets
  • Bundle Ollama binary, configure for Gemma 4 12B
  • Inject OiMy Opus 4.8 prompts as default system prompt
  • electron-builder DMG config, sign with Apple developer cert
Eng: 1 person
Week 2 Resilience + Telegram Onboarding

LaunchAgent daemon, pmset AC-only override, Cloudflare tunnel provisioning, and the BotFather onboarding wizard.

  • LaunchAgent .plist generator (with WorkingDirectory + env vars)
  • pmset -c disablesleep 1 + caffeinate child process
  • Cloudflare Zero Trust API integration (auto-provision tunnel)
  • React wizard: Welcome -> Download 12B -> Enable daemon -> Connect Telegram
  • Embedded animation: BotFather flow for creating bot
  • Token input field + automated config.toml write + gateway start
Eng: 1 person
Week 3 OiMy Skills Port

Port 85 OiMy skill manifests into Hermes skill format. This is the bulk of OiMy-specific work.

  • Map OiMy YAML manifest format to Hermes skill schema
  • Write migration script for batch conversion
  • Priority skills first: list-manager, calendar, reminders, conv, BCT
  • Test each skill end-to-end through Telegram
  • Configure cloud fallback routing (BCT, planning -> Hetzner)
  • Validate tool calling scenarios TC01-TC10 pass through local model
Eng: 1-2 people
Week 4 Family Sync + Testing

Family profile sync between local and cloud. Hardware testing across Mac configs. Beta to 3 existing OiMy families.

  • Profile sync: pull from Hetzner on app launch, push on session end
  • Test on: 16GB M2 MacBook Air, 24GB M3 MacBook Pro, 16GB Intel MacBook
  • Graceful degradation: E4B mode for 8-12GB Macs
  • Menubar UI: status indicator, model info, cloud/local routing display
  • Beta install with 3 pilot families from existing 38
  • Crash reporting via Sentry
Beta ready
HARD DEPENDENCIES
Apple Developer Account
Needed for DMG signing + notarization. Without it, macOS Gatekeeper blocks installation.
Cloudflare Zero Trust Account
For auto-provisioning family tunnels via API. Free tier covers this.

04 / Risk Register

What to watch

Risk
Mitigation
Severity
16GB OOM pressure
Graceful degradation: if RAM < 14GB available, switch to E4B automatically. Show user a warning, not a crash.
Medium
Tunnel downtime
KeepAlive on cloudflared daemon. iOS app shows "connecting..." with retry. Falls back to cloud within 5s.
Medium
Mac off = no local AI
Automatic cloud fallback (Hetzner). User doesn't notice quality difference for conv tasks. BCT stays cloud anyway.
Low
App Store rejection (iOS v2)
v1 uses Telegram - no App Store review. v2 iOS native app needs careful review prep (local AI = red flag for some reviewers).
High (for v2)
Hermes upstream changes
Fork at v0.16.0, maintain a diff log of OiMy customizations. Selective upstream cherry-picks only.
Medium
Skill manifest compat
Write migration script in Week 3. Test all 85 skills before beta. Priority: the 12 action-type skills with tool calls.
Medium

05 / Production Readiness

Verdicts from eval

For Desktop v1 E4B as on-device router

Conv NPS 6.06 (-0.55 vs Sonnet). Viable as intent classifier and pre-filter. Not reliable enough as sole conv model without fine-tuning. Fallback to 12B or cloud for complex turns.

~
For Desktop v1 12B as laptop-server conv model

Conv NPS 6.23 (-0.38 vs Sonnet). Close enough for the 80% of interactions that are logistics/conv. BCT gap (-0.94) stays cloud. One more Opus iteration could close the gap further.

+
Not yet 12B as Kimi K2.6 replacement in Hermes

Tool calling 3.38 vs Kimi 3.68. Transport coordination (TC07) scored 2.0 vs 4.6. Multi-step orchestration needs work. Two more Opus iterations on tool calling prompt could change this.

-

06 / Strategic Case

Why this matters

PRIVACY STORY

"Your family's AI runs on your own Mac. Nothing leaves your house." Compelling pitch for privacy-conscious parents. True local inference = no third-party cloud touching family data.

ZERO MARGINAL COST

Families who use OiMy 50-100x/day would be expensive at cloud rates. Local model eliminates that ceiling. Power users get a better deal; OiMy saves API spend.

TARGET HARDWARE

35-45yo parents with MacBooks. ~60% have 16GB+ M-chip Macs (2022+). Remaining 40% get E4B mode or cloud fallback. Hardware gate is manageable for this demographic.

OFFLINE CAPABILITY

Bedtime routine help works when Hetzner is down. Kids' morning chaos handled locally. Cloud is enhancement, not dependency for 80% of interactions.


OiMy Desktop Engineering Spec v1.0 June 7, 2026 - Confidential