Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.feral.sh/llms.txt

Use this file to discover all available pages before exploring further.

Overview

Environment variables are the highest-priority configuration source — they override everything in settings.json. Set them in your shell profile, .env file, or container environment.

LLM Provider Keys

VariableDefaultDescription
ANTHROPIC_API_KEYAnthropic Claude API key
OPENAI_API_KEYOpenAI API key (GPT-4, Realtime)
OPENROUTER_API_KEYOpenRouter multi-model gateway key
GOOGLE_API_KEYGoogle Gemini API key
OLLAMA_HOSThttp://localhost:11434Ollama server URL (local models)
FERAL_LLM_PROVIDERollamaDefault provider: anthropic, openai, openrouter, gemini, ollama
FERAL_LLM_MODELllama3Default model identifier
FERAL_LLM_TEMPERATURE0.7Default sampling temperature
FERAL_LLM_MAX_TOKENS4096Maximum tokens per response

LLM failover & spend controls

These control the resilience layer in agents/llm_provider.py. They are optional — leaving every value at its default keeps the historical primary-then-fallback ordering.
VariableDefaultDescription
FERAL_LLM_COOLDOWN_STATE_PATH<FERAL_HOME>/llm_provider_cooldowns.jsonOverride path for the persisted provider cooldown / circuit state. Survives process restarts so a 24h auth_permanent lock-out is not reset by a redeploy.
FERAL_LLM_DAILY_BUDGET_USD0Daily spend ceiling, in USD. 0 disables budget-aware routing. Overrides llm.daily_budget_usd in settings.json.
FERAL_LLM_DAILY_SPEND_USD0Spend already accounted for today, in USD. Used to compute remaining headroom. Overrides llm.daily_spend_usd.
FERAL_LLM_BUDGET_TIGHT_RATIO0.25Fraction of remaining budget below which the failover loop reorders affordable candidates by cheapest-first instead of configured priority. Clamped to [0.0, 1.0]. Overrides llm.budget_tight_ratio.
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

VariableDefaultDescription
FERAL_HOME~/.feralRoot directory for all FERAL data (config, memory, logs)
FERAL_BRAIN_PORT9090Brain WebSocket and API port
FERAL_HOST127.0.0.1Primary bind host (set 0.0.0.0 for LAN reachability)
FERAL_BIND_HOSTLegacy alias for bind host
FERAL_BRAIN_HOSTBackward-compatible host override
FERAL_PUBLIC_BASE_URLPublic base URL used for remote pairing URL generation
FERAL_LOG_LEVELinfoLogging level: debug, info, warn, error

Autonomy & Security

VariableDefaultDescription
FERAL_AUTONOMYhybridstrict, hybrid, or loose
FERAL_SANDBOX_ENABLEDtrueEnable WASM sandbox for skill execution
FERAL_APPROVAL_TIMEOUT30Seconds to wait for user approval before timing out
FERAL_VAULT_KEYOverride vault encryption key (not recommended)

Docker sandbox hardening

These tune the runtime flags applied to every container started by security/docker_sandbox.py. Defaults are the safe values — only override when you have a concrete reason.
VariableDefaultDescription
FERAL_SANDBOX_PIDS_LIMIT128Max processes inside the container (--pids-limit). Floor of 16 is enforced.
FERAL_SANDBOX_CAP_DROPALLLinux capabilities to drop (--cap-drop). Set to empty string to skip the flag entirely (not recommended).
FERAL_SANDBOX_NO_NEW_PRIVILEGEStrueApply --security-opt no-new-privileges. Accepts 1/0/true/false/yes/no/on/off.
FERAL_SANDBOX_SECCOMP_PROFILEPath to a custom seccomp JSON profile applied via --security-opt seccomp=…. The literal value unconfined is rejected with a warning.
FERAL_SANDBOX_PREFER_REGISTRYfalseWhen true, resolve the sandbox image tag from the published registry first instead of the locally-built tag.

Voice

VariableDefaultDescription
FERAL_VOICE_ENABLEDtrueEnable voice pipeline
FERAL_VOICE_PROVIDERopenai_realtimeopenai_realtime, gemini_live, whisper_local
FERAL_WAKE_WORDhey feralWake word trigger phrase
FERAL_VOICE_LANGUAGEenLanguage code for speech recognition

Vision & Perception

VariableDefaultDescription
FERAL_VISION_ENABLEDtrueEnable vision pipeline (screen + glasses)
FERAL_SCREEN_CAPTUREtrueAllow screen capture for computer-use features
FERAL_VISION_MODELlocalVision model: local (YOLO), openai, gemini
FERAL_VISION_INTERVAL2Seconds between vision frame analysis

Audio

VariableDefaultDescription
FERAL_AUDIO_INPUTdefaultAudio input device name or default
FERAL_AUDIO_OUTPUTdefaultAudio output device name or default
FERAL_AUDIO_SAMPLE_RATE16000Audio sample rate in Hz

Channels

VariableDefaultDescription
FERAL_TELEGRAM_BOT_TOKENTelegram bot token from BotFather
FERAL_SLACK_BOT_TOKENSlack bot user OAuth token (xoxb-)
FERAL_SLACK_APP_TOKENSlack app-level token for Socket Mode (xapp-)
FERAL_DISCORD_BOT_TOKENDiscord bot token
FERAL_FCM_SERVICE_ACCOUNT_PATHPath to Firebase service account JSON
FERAL_APNS_KEY_PATHPath to APNs .p8 key file
FERAL_APNS_KEY_IDAPNs key ID
FERAL_APNS_TEAM_IDApple Developer Team ID
FERAL_APNS_BUNDLE_IDcom.feral.appiOS app bundle identifier
FERAL_APNS_ENVIRONMENTproductionsandbox or production

Hardware

VariableDefaultDescription
FERAL_BLE_ENABLEDtrueEnable Bluetooth device scanning
FERAL_HUP_PORT9091Hardware Unified Protocol WebSocket port
FERAL_HA_URLHome Assistant URL (e.g., http://192.168.1.50:8123)
FERAL_HA_TOKENHome Assistant long-lived access token

Memory

VariableDefaultDescription
FERAL_MEMORY_BACKENDsqliteMemory storage: sqlite, postgres
FERAL_MEMORY_PATH~/.feral/memory.dbPath to the memory database file
FERAL_VECTOR_STOREchromaVector store for semantic search: chroma, qdrant
FERAL_MEMORY_SYNCfalseEnable P2P memory sync across devices
FERAL_EMBED_FALLBACKhashEmbedding fallback when primary provider degrades (hash, local, skip)

Pairing & Access

VariableDefaultDescription
FERAL_HOST127.0.0.1LAN pairing needs 0.0.0.0 in many setups
FERAL_PUBLIC_BASE_URLOptional explicit remote pair URL base

Integrations

VariableDefaultDescription
FERAL_GOOGLE_CREDENTIALSPath to Google OAuth credentials JSON (Calendar, Gmail)
FERAL_SPOTIFY_CLIENT_IDSpotify app client ID
FERAL_SPOTIFY_CLIENT_SECRETSpotify app client secret
FERAL_NOTION_TOKENNotion integration token
FERAL_WHOOP_CLIENT_IDWhoop API client ID
FERAL_WHOOP_CLIENT_SECRETWhoop API client secret
FERAL_OURA_PATOura Ring personal access token

Feature Flags

VariableDefaultDescription
FERAL_PROACTIVE_ENABLEDtrueEnable proactive intelligence engine
FERAL_GENUI_ENABLEDtrueEnable server-driven UI generation
FERAL_DIGITAL_TWINtrueEnable digital twin reasoning
FERAL_LOCATION_TRACKINGfalseEnable GPS geofencing triggers
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.
Set feature flags to false to disable subsystems you don’t need — this reduces memory usage and startup time.