Empryoempryo.beta
reference

Configuration

Every Empryo config field: default model, thinking, Genome graph, task router, agent features, compaction, key storage, instruction files, and env vars.

Config lives in two files. Project wins.

ScopePath
Global~/.empryo/config.json
Project.empryo/config.json

Full example

{
  "defaultModel": "anthropic/claude-sonnet-4-5",
  "thinking": { "mode": "adaptive" },
  "genome": true,
  "semanticSummaries": "ast",
  "diffStyle": "default",
  "chatStyle": "accent",
  "toolTimeout": 2,
  "compaction": {
    "strategy": "v2",
    "triggerThreshold": 0.7,
    "keepRecent": 4
  },
  "taskRouter": {
    "spark":      "anthropic/claude-haiku-4-5",
    "ember":      "anthropic/claude-sonnet-4-5",
    "compact":    "google/gemini-2.5-flash"
  },
  "agentFeatures": {
    "desloppify": true,
    "tierRouting": true,
    "dispatchCache": true,
    "targetFileValidation": true
  },
  "retry": { "maxAttempts": 5, "baseDelayMs": 3000 }
}

Fields

Model

FieldDefaultWhat it does
defaultModel"none"Active model ID. "none" (default) forces picker on launch.
thinking.mode"off""off", "adaptive", "enabled"
thinking.budgetTokens-Tokens when mode: "enabled" (1024, 2048, 5000, 10000, 20000)

Display

FieldDefaultWhat it does
diffStyle"default""default", "sidebyside", "compact"
chatStyle"accent""accent", "bubble"
vimHintstrueShow Vim keybinding hints
nerdFontautoNerd Font icons — auto-detected from installed fonts; set true/false to force (off shows ASCII)

Intelligence

FieldDefaultWhat it does
genometrueBuild the codebase graph on launch
semanticSummaries"synthetic""synthetic" (default), "ast", "llm", "off"
toolTimeout2Tool call timeout in minutes. 0 disables.

Compaction

See compaction for what these do.

"compaction": {
  "strategy": "v2",
  "triggerThreshold": 0.7,
  "resetThreshold": 0.4,
  "keepRecent": 4,
  "maxToolResults": 30,
  "llmExtraction": true
}

Retry

For 429s and transient errors. Delays double each attempt.

"retry": { "maxAttempts": 5, "baseDelayMs": 3000 }

Task router

Assign different models to different jobs. See the task router recipe for tuning tips.

"taskRouter": {
  "spark":      "anthropic/claude-haiku-4-5",
  "ember":      "anthropic/claude-sonnet-4-5",
  "webSearch":  "anthropic/claude-haiku-4-5",
  "desloppify": "anthropic/claude-haiku-4-5",
  "verify":     "anthropic/claude-haiku-4-5",
  "compact":    "google/gemini-2.5-flash",
  "semantic":   "anthropic/claude-haiku-4-5",
  "default":    null
}
SlotRuns when
sparkRead-only research agents
emberCode-writing agents
webSearchWeb search agent
desloppifyCleanup pass after code edits
verifyAdversarial review after code edits
compactContext compaction
semanticGenome one-line summaries
defaultFallback for background tasks

Resolution: taskRouter[slot]taskRouter.default → active model.

Agent features

"agentFeatures": {
  "desloppify": true,
  "tierRouting": true,
  "dispatchCache": true,
  "targetFileValidation": true
}
FeatureWhat it does
desloppifyRun cleanup agent after code agents
tierRoutingAuto-route trivial tasks to cheap model
dispatchCacheShare file reads across dispatches
targetFileValidationRequire file paths on dispatch tasks

Toggle in the TUI with /agent-features.

Providers

Pick keys and add custom providers on the dedicated pages:

Auth & key storage

Keys go to your OS keychain when available, with a file fallback otherwise.

PlatformBackend
macOSLogin Keychain (security), service empryo
Linuxlibsecret via secret-tool (GNOME Keyring, KWallet)
Linux without secret-tool~/.empryo/secrets.json, mode 0600
WindowsDPAPI (crypt32.dll) - %LOCALAPPDATA%\Empryo\secrets.dat, user-scoped
Windows without DPAPIPlain JSON under same dir, mode-restricted
Windows (WSL)Same as Linux above

empryo --set-key <provider> <key> writes to whichever backend is active. Inspect with empryo --list-providers.

Lookup order

{ "keyPriority": "env" }
ValueOrder
"env" (default)env var → keychain → file
"app"keychain → file → env var

Use "app" when shell-exported keys keep overriding stored ones.

Pass a key per-launch

Env vars work for the TUI too - useful for one-off sessions or CI:

LLM_GATEWAY_API_KEY=sk-... empryo
ANTHROPIC_API_KEY=sk-ant-... empryo

Nothing is persisted. There is no --key flag - the TUI only reads stored keys and env vars.

Remove a key

/keys inside the TUI lists every provider with delete shortcuts. Or delete from the keychain directly (security delete-generic-password -a empryo -s anthropic-api-key on macOS).

Instruction files

Auto-load project rules from AI-tool markdown files:

{ "instructionFiles": ["empryo", "claude", "cursorrules"] }
KeyFileDefault
empryoEMPRYO.mdon
claudeCLAUDE.mdoff
cursorrules.cursorrulesoff
github-copilot.github/copilot-instructions.mdoff
cline.clinerulesoff
windsurf.windsurfrulesoff
aider.aider.conf.ymloff
codexAGENTS.mdoff
ampAMPLIFY.mdoff

Toggle in TUI with /instructions.

Privacy

Block files from the agent:

/privacy add .env
/privacy add secrets/**

Built-ins already cover .env, .pem, credentials, id_rsa, .npmrc, .netrc, shadow, passwd.

Environment variables

VariableDefaultPurpose
EMPRYO_NO_GENOMEunsetSkip the Genome scan at startup.
EMPRYO_MAX_OUTPUT_TOKENS64000Per-step output cap for all agents (forge + subagents + web-search). Raise for reasoning models that hit finish_reason=length.
EMPRYO_PRESETSunsetComma-separated preset specs to load on boot. Set automatically by --plugin <spec> flags. See presets.
EMPRYO_NO_PROMPTunsetSkip first-run addon wizard (set to 1). Useful in CI.
EMPRYO_DEBUG_APIunsetDump per-step API requests to ~/.empryo/api-export/.
EMPRYO_DEV_UIunsetShow dev-only slash commands (/ui-demo, etc).
EMPRYO_ENABLE_GHOSTTYunsetForce-enable the embedded floating terminal on Windows (off by default - see Windows notes).
EMPRYO_HEARTH_SOCKET<configDir>/hearth.sockOverride the Hearth IPC socket path.
EMPRYO_HEARTH_APPROVAL_TIMEOUT_MS300000Approval timeout for remote tool calls.
EMPRYO_HEARTH_DENY_READ_REMOTEunsetBlock read-only tools from remote surfaces (set to 1).
EMPRYO_PROXY_VERSIONlatestPin a CLIProxyAPI version when installing the proxy addon.
EMPRYO_AUTO_INSTALL_ADDONSunsetComma-separated addons to install automatically (proxy,neovim).

Hooks

Covered on the hooks page. Short version: Empryo reads hooks.{Event} from all 5 config sources (Claude Code's three + Empryo's two), fires all matches.

Storage

/storage shows per-component disk usage (Genome, sessions, plans, memory, input history, binaries, fonts) with one-click cleanup.

Scope priority

Session → Project → Global. Changes via commands land in whatever scope the command targets. Use /model-scope to move the active model between project and global.