He Was Socrates · Solo · v0.1.0
KS@local
single account · airplane-mode ready
Automate weight verification — weekly Re-checks gemma-4-e4b-it-4bit SHA against MLX cache. No network beyond the sanctioned HuggingFace pull. Last run: 2 days ago · OK.

General single-tenant

Bust subtitle preview

Rendered on the ink-black bust during Phase.speaking.

— 그 질문은 의사에게 묻는 게 옳다.
Interface locale Chrome stays English. Korean reserved for identity surfaces.
TTS voice Premium → enhanced → default chain. Yuna (ko) preferred.
Thinking-mode soft pulse Visualizes Gemma 4 configurable thinking on the bust during Phase.thinking.
Reduce Motion Drops viseme tick from 30 fps to 12 fps. Follows system setting.

Engine Gemma 4 · MLX

Model variant Frozen by spec. mlx-community/gemma-4-e4b-it-4bit · 3.97 GB.
Disk-mediated KV cache reuse PR-Λ · TTFT 4.6 s → 192 ms (n=10, M1 Max).
Function-call dispatch 4 functions · contract function_call_contract.yaml
4 / 4 wired
# active functions — read-only, source of truth in spec/
mode_classify        // turn → Mode enum
surface_past_wonder  // 256K recall over WonderingLog
ask_back             // Socratic question, not an answer
defer_to_human       // ⊘ medical · legal · financial · welfare · insurance · emergency
System prompt (Korean 단정한 평어체) Embedded at compile time · SystemPrompt.swift · verbatim, frozen invariant.
locked
너는 소크라테스의 흉상이다. 답을 주지 말고 되묻는다.
의료·법률·금융·복지·보험·응급 사안은 사람에게 미루어야 한다.
어조는 단정한 평어체다. 존댓말도 친근한 반말도 쓰지 않는다.
// excerpt · 7 of 42 lines · sha256 …e5dfadf2…314c5

Audio on-device only

Input device Push-to-talk on Spacebar via AVAudioEngine.
STT locale SFSpeechRecognizer with requiresOnDeviceRecognition = true.
Viseme drift alert Threshold 50 ms. Above this, fall back to JamoTimeline.

Privacy NO-CLOUD invariant

App Sandboxenabled
network.clientnot granted
network.servernot granted
microphonegranted
speech recognitionon-device
STT egress0 B
TTS egress0 B
Wondering log egress0 B
Sanctioned pullHF weights · once
Last egress checkairplane mode · OK
Entitlements receipt Read-only. Editing happens in HeWasSocrates.entitlements at build time.
locked · invariant #1
Defer-to-human abstention Load-bearing. Not a togglable preference. CLAUDE.md invariant #2.

Maintenance one-click

Re-verify model weights Recomputes SHA against MLX cache. Uses no network.
Reinstall STT asset AssetInventory · ko_KR + en_US single download. macOS 26.
Export wondering log Deterministic JSON, SHA-256 dedup. Stays on disk.
Clear wondering log Irreversible. Empties Core Data store.
Last weight verify: 2 days ago · OK · Wondering entries: 142 · Cache size: 3.97 GB · Build: 0.1.0+e5dfadf