Skip to main content
Config lives in two files. Project wins.

Full example

Fields

Model

Display

Intelligence

Compaction

See compaction for what these do.

Retry

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

Task router

Assign different models to different jobs. See the task router recipe for tuning tips.
Resolution: taskRouter[slot] → taskRouter.default → active model.

Agent features

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. soulforge --set-key <provider> <key> writes to whichever backend is active. Inspect with soulforge --list-providers.

Lookup order

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:
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 soulforge -s anthropic-api-key on macOS).

Instruction files

Auto-load project rules from AI-tool markdown files:
Toggle in TUI with /instructions.

Privacy

Block files from the agent:
Built-ins already cover .env, .pem, credentials, id_rsa, .npmrc, .netrc, shadow, passwd.

Environment variables

Hooks

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

Storage

/storage shows per-component disk usage (repo map, 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.