# Homebrew tap — single binary, no Electron, no daemon$ brew tap two-weeks-team/socrates
==> Tapping two-weeks-team/socrates (3 formulae)$ brew install socrates==> Downloading socrates-0.4.0.arm64_sequoia.bottle.tar.gz (8.2 MB)==> Pouring socrates-0.4.0.arm64_sequoia.bottle.tar.gz✓/opt/homebrew/bin/socrates(8.2 MB · sandboxed · no network entitlement)# or, no-install one-shot$ npx @two-weeks-team/socrates --version
socrates 0.4.0 (gemma-4-e4b-it-4bit @ ~/Library/Caches/mlx)
$ socrates --setup▸ Pre-flight check (this is the only time a browser opens)
✓ macOS 26.0.0 required ≥ 26.0✓ Apple Silicon (M1+) required for MLX✓ Speech permission requiresOnDeviceRecognition=true✓ AssetInventory ko_KR + en_US single download✓ Network sandbox no network.client / no network.server↓ Gemma 4 E4B weights 3.97 GB · first launch only · MLX cache
[██████████████████████████████░░░░░░] 78% via OS-mediated HF cache✓ Setup complete. Browser handshake closed. From here: terminal only.
$ _
2. socrates(1) — synopsis & options
man socrates— less — 96×30SOCRATES(1)
NAMEsocrates – the Korean Socratic bust, on-device, in your terminal
SYNOPSISsocrates [-q] [--langko|en] [--moderepl|once|json] [--no-tts] [QUERY]
socratesask"<query>"socratesreplsocratesrecall [--sinceYYYY-MM-DD]
socrates--setup | --doctor | --versionDESCRIPTION
A Socratic interlocutor that returns questions, not answers. All inference,
STT, and TTS happen on the local Mac. Zero bytes leave the device after
the one-time weight download. The abstention mechanic (⊘ defer_to_human)
is the product, not a fallback — it has its own exit code.
OPTIONS
flag
description
default
-q, --quiet
suppress status line; emit response only
off
--lang ko|en
input/output language for the Socratic turn
ko
--mode repl|once|json
interactive TUI · single turn · machine-readable
once
--no-tts
skip AVSpeechSynthesizer; text-only output
off
--thinking
show Phase enum transitions (idle→listening→thinking→…)
off
--trace-fc
print raw function-call dispatch from Gemma 4
off
--airplane
refuse to start if any network egress is detectable
off
EXIT STATUS
code
meaning
function
0
ask_back returned a Socratic question (success)
ask_back
2
mode_classify routed to surface_past_wonder; recall printed