Overview
Environment variables are the highest-priority configuration source — they override everything insettings.json. Set them in your shell profile, .env file, or container environment.
LLM Provider Keys
LLM failover & spend controls
These control the resilience layer inagents/llm_provider.py. They are optional — leaving every value at its default keeps the historical primary-then-fallback ordering.
When budget routing is enabled,
GET /api/llm/health (the v2 “Fallbacks” card source) includes a budget block with daily_budget_usd, daily_spend_usd, remaining_usd, headroom_ratio, tight_ratio, and per-candidate cost estimates from the most recent dispatch.
Core Settings
Update Checks
With the check on, the brain asks once per TTL on a background task and never on a request path;
GET /api/dashboard and feral doctor read the cached answer only. An unreachable index reports unknown, never an error. feral update asks on demand whatever this is set to, because running the command is the request.Autonomy & Security
Docker sandbox hardening
These tune the runtime flags applied to every container started bysecurity/docker_sandbox.py. Defaults are the safe values — only override when you have a concrete reason.
Voice
Vision & Perception
Audio
Channels
Hardware
Memory
Pairing & Access
Integrations
Coding Harness
Each of these also has asettings.json mirror under the coding section
(FERAL_READ_BEFORE_EDIT mirrors coding.read_before_edit, and so on), so a
choice can be persisted instead of re-exported on every launch. The
environment variable stays the higher-priority source: set it and it wins over
settings.json.
Feature Flags
Earlier versions of these docs listed a
FERAL_COMPUTER_USE flag — that variable was never wired into the code. To gate computer-use, change autonomy mode in the WebUI Settings → Autonomy picker (writes security.autonomy_mode in ~/.feral/settings.json); strict requires approval for every action, hybrid (default) requires approval for destructive / dangerous-tier actions only, loose auto-runs everything.