Config File Location
FERAL reads its primary configuration from a JSON file at:FERAL_HOME environment variable:
$FERAL_HOME/settings.json instead.
Configuration Hierarchy
FERAL merges configuration from four sources, each overriding the previous:1
User config (lowest priority)
~/.feral/settings.json — your global defaults.2
Project config
.feral/settings.json in the current working directory — project-specific overrides.3
Local config
.feral/settings.local.json in the current directory — personal overrides not checked into version control.4
Environment variables (highest priority)
Any
FERAL_* env var overrides the equivalent setting. See the Environment Variables reference.Settings File Format
settings.json
Credentials Vault
Sensitive values (API keys, OAuth tokens) are stored separately in the encrypted BlindVault:Managing credentials
Key Settings Reference
The coding Section
Knobs for the coding harness. Each one shipped as an
environment variable only, so it was configurable per process but not
persistable: an operator who wanted read-before-edit enforced had to re-export
the variable on every launch. They are mirrored into settings.json so the
choice survives a restart.
Precedence here is env-first, unlike the general rule above, and it is
deliberate. Each of these is read from the process environment by its
subsystem and from nowhere else. The environment variable is merged into the
coding section on load and then re-emitted verbatim by export_as_env, so a
shell that exports FERAL_READ_BEFORE_EDIT=enforce still beats settings.json.
The defaults above are copied from each reader’s own default, so an install that
never touches this section behaves exactly as it did before the section existed.Example: Minimal Cloud Config
settings.json
Example: Fully Local Config
settings.json
