Configuration
All configurable environment variables live in .env at the project root. Services load it automatically at startup via python-dotenv; Docker Compose reads it the same way.
Quick start
cp .env.example .env
# Edit .env and fill in any required values
Never commit .env. It's in .gitignore. Only commit .env.example with placeholder values.
Precedence
Each service's run.py calls load_dotenv() against the project-root .env before applying its config.yaml defaults. Highest priority first:
Shell environment (already-exported vars)
.env file (loaded by python-dotenv)
config.yaml defaults
n8n automation (port 5679)
Variable Required Default Description
WYLDE_N8N_EMAILNo [email protected] n8n admin login email.
WYLDE_N8N_PASSWORDYes — n8n admin password.
WYLDE_N8N_API_KEYNo — API key (preferred over password auth when set).
WYLDE_N8N_BASIC_AUTH_PASSWORDNo — HTTP basic-auth password for the n8n reverse-proxy layer.
WYLDE_N8N_URLNo http://127.0.0.1:5678URL n8n is reachable on.
Device gate / Fletch web auth (port 7000)
Variable Required Default Description
WYLDE_FLETCH_USERNo adminUsername for the Fletch web basic-auth layer.
WYLDE_FLETCH_PASSYes — Password for the Fletch web basic-auth layer.
Graph (wylde-graph, ports 7474 / 7687)
Variable Required Default Description
GRAPH_USERNo neo4jDatabase username.
GRAPH_PASSWORDNo — Database password (required if auth enabled).
GRAPH_BOLT_URLNo bolt://127.0.0.1:7687Bolt connection URL.
WireGuard VPN (wylde-vpn — optional)
Variable Required Default Description
VPN_ENDPOINTYes if VPN enabled— VPN server host:port.
VPN_PEER_PUBKEYYes if VPN enabled— WireGuard public key of the VPN server.
VPN_PRIVATE_KEYNo auto-generated WireGuard private key for this device.
VPN_TUNNEL_ADDRNo 10.8.0.2/24Tunnel IP address for this device.
VPN_DNSNo 1.1.1.1DNS server inside the VPN tunnel.
VPN_ALLOWED_IPSNo 0.0.0.0/0, ::/0IP ranges routed through the VPN.
HashiCorp Vault (security-api, optional)
Only needed when SECRETS_PROVIDER=vault.
Variable Required Default Description
SECRETS_PROVIDERNo fileBackend: file or vault.
VAULT_ADDRWhen vault — Vault server URL.
VAULT_TOKENWhen vault — Vault authentication token.
VAULT_MOUNT_PATHNo secretVault KV mount path.
VAULT_SECRET_PATHNo app/prodPath within the mount for app secrets.
VAULT_TIMEOUTNo 30Vault request timeout (seconds).
VAULT_SSL_VERIFYNo trueVerify Vault TLS certificate.
Ollama (shared)
Variable Required Default Description
OLLAMA_URLNo http://127.0.0.1:11434Ollama API base URL.
RAG (wylde-rag, port 8008)
Variable Required Default Description
EMBED_MODELNo nomic-embed-textOllama model used for embeddings.
EMBED_DIMNo 768Embedding vector dimension.
EMBED_BATCH_SIZENo 32Documents per embedding batch.
Captioner (wylde-caption, port 8015)
Variable Required Default Description
CAPTION_BACKENDNo florenceCaptioning backend: florence or qwen.
CAPTION_DEVICENo cudaInference device (cuda, cpu).
CAPTION_DTYPENo float16Torch dtype (float16, bfloat16, float32).
Trainer (wylde-trainer, port 8013)
Variable Required Default Description
DATASETS_DIRNo service default Path to training dataset storage.
CHECKPOINT_DIRNo service default Path to model checkpoint output.
Discovery
Variable Required Default Description
WYLDE_DISCOVERYNo mdnsDiscovery backend: mdns, consul, or both.
WYLDE_TRANSPORTNo pipeCall transport: pipe (default) or http.
CONSUL_HTTP_ADDRNo http://127.0.0.1:8500Consul agent HTTP address (only when Consul is in use).
CONSUL_ADVERTISE_ADDRESSNo host.docker.internalAddress advertised from inside Docker.
Logging
Variable Required Default Description
LOG_LEVELNo INFOGlobal log level (DEBUG, INFO, WARNING, ERROR).