Deployment & Operations
This guide covers running FERAL in production — Docker Compose, environment variables, systemd services, reverse proxy, and a production checklist.Docker Compose
The recommended production setup uses Docker Compose to run the Brain, web UI, and optional services.Environment Variables
| Variable | Required | Default | Description |
|---|---|---|---|
FERAL_LLM_PROVIDER | yes | — | openai, anthropic, gemini, groq, ollama |
OPENAI_API_KEY | if openai | — | OpenAI API key |
ANTHROPIC_API_KEY | if anthropic | — | Anthropic API key |
GEMINI_API_KEY | if gemini | — | Google AI API key |
GROQ_API_KEY | if groq | — | Groq API key |
OLLAMA_BASE_URL | if ollama | http://localhost:11434 | Ollama endpoint |
FERAL_DATA_DIR | no | ~/.feral | Data directory |
FERAL_CONFIG_DIR | no | ~/.feral | Config directory |
FERAL_PORT | no | 9090 | Brain HTTP/WS port |
FERAL_HOST | no | 0.0.0.0 | Bind address |
FERAL_AUTONOMY | no | hybrid | strict, hybrid, loose |
FERAL_LOG_LEVEL | no | info | debug, info, warning, error |
FERAL_VOICE_MODE | no | disabled | realtime, whisper, disabled |
FERAL_CORS_ORIGINS | no | * | Comma-separated allowed origins |
TELEGRAM_BOT_TOKEN | no | — | Telegram channel token |
SLACK_BOT_TOKEN | no | — | Slack bot token |
SLACK_APP_TOKEN | no | — | Slack app-level token |
DISCORD_BOT_TOKEN | no | — | Discord bot token |
REDIS_URL | no | — | Redis URL for caching/pubsub |
Production Checklist
Before going live:- Set
FERAL_AUTONOMY=strictorhybrid(neverloosein multi-user) - Store all API keys via
feral vaultor env vars — never in config files - Set
FERAL_CORS_ORIGINSto your actual domains - Enable HTTPS via reverse proxy (see below)
- Set
FERAL_LOG_LEVEL=warningto reduce log volume - Mount
feral-dataon persistent storage with backups - Set resource limits on Docker containers
- Enable health checks for orchestrator restarts
- Review the Security Model and configure a SandboxPolicy
- Test channel integrations (Telegram, Slack) in a staging environment first
Systemd Service
For bare-metal deployments without Docker:Reverse Proxy
Nginx
Caddy
Monitoring
FERAL exposes a health endpoint and optional Prometheus metrics:| Metric | Type | Description |
|---|---|---|
feral_requests_total | counter | Total API requests by endpoint |
feral_llm_latency_seconds | histogram | LLM call duration |
feral_tool_executions_total | counter | Tool calls by name and status |
feral_active_sessions | gauge | Current open sessions |
feral_memory_entries | gauge | Memory entries by tier |
feral_device_connections | gauge | Connected HUP devices |
Backup & Restore
memory.db, config.yaml, identity.yaml, credentials.json (encrypted), wiki pages, and skill manifests.