Skip to content

Configuration

Prevail’s machine-local configuration lives in ~/.prevail/config.json. Most of it you’ll set through the cockpit and the first-run wizard, but it’s plain JSON you can edit directly.

{
"vaultPath": "/Users/you/life-vault",
"chairModel": {
"cli": "claude",
"model": "claude-opus-4-7"
},
"modelPins": {
"claude": "opus",
"codex": "gpt-5.4",
"antigravity": "Gemini 3.1 Pro (High)",
"ollama": "llama3.1"
},
"domainFramework": {
"wealth": "bluf",
"tax": "scqa"
},
"domainLens": {
"health": "first-principles"
},
"webAccess": {
"default": false,
"wealth": true,
"research": true
},
"councilMaxCallsPerTurn": 16
}
KeyWhat it controls
vaultPathWhich folder is your vault
chairModelThe pinned chair CLI + model for council synthesis (/council chair)
modelPinsThe default model for each CLI
domainFrameworkPer-domain default framework
domainLensPer-domain default lens
webAccessWeb-access default, with per-domain overrides
councilMaxCallsPerTurnHard cap on parallel calls per turn (default 16)

Per-domain keys are why wealth and tax can behave completely differently — the settings you change in the cockpit for one domain are written here under that domain’s name.

FileHoldsNotes
telegram.jsonBot token + chat-ID allowlistchmod 0600
mcp.jsonAuto-generated MCP bearer tokenchmod 0600, never commit
debug.logDiagnosticsprevail doctor --debug tails it
sessions/SQLite chat history (FTS5)Powers /search
connectors/<id>/auth/Per-connector tokens & sessionschmod 0600
apps/community/Connector definitions
daemon.pidPID file for the daemonPrevents double-start

Some configuration travels with the vault rather than the machine, because it’s about your data, not your credentials:

FileHolds
<vault>/AGENTS-operating.mdThe operating manual prepended to agent calls — edit to change how agents treat your vault
<vault>/.schedule.jsonRecurring commands
<vault>/.briefings.jsonScheduled domain briefings

Prevail reads no special environment variables of its own beyond the standard ones ($EDITOR for the e key, $PATH to find the CLIs). It deliberately scrubs sensitive variables out of the environment before spawning any CLI subprocess — see Security.