# Copy to .env and adjust — or just run ./scripts/update.sh, which creates # .env from this file and fills in every secret/key below it can generate # itself (see each var's comment). All values below are defaults baked into # docker-compose.yml — only uncomment/change what you actually want to # override. # --- llama.cpp / model --- LLAMA_MODEL_FILE=Qwen3.8-27B-UD-Q4_K_XL.gguf # 999 = every layer on GPU (this model is dense, not MoE, and already fits # fully in 32GB VRAM — see docs/research/qwen3.8-27b-quant.md). Lower this # to leave that many fewer layers on GPU and push the rest to CPU/system RAM # if something else is contending for VRAM — llama.cpp has no separate # "RAM offload" flag, --n-gpu-layers *is* the RAM-offload knob for a dense # model. Don't reach for --n-cpu-moe/--cpu-moe/--override-tensor "exps" — # those target Mixture-of-Experts models (e.g. Qwen3.8-2.4T-A95B), not this # one, and are no-ops here. # There's no separate "then SSD" tier to enable either: llama.cpp mmaps the # model file by default (no --no-mmap here), so if GPU+RAM ever can't hold # the working set, the OS pages the rest in from disk automatically — an # implicit, slow last resort, not a config knob. An explicit tiered SSD # offload has been an open llama.cpp feature request since 2025 (still # unimplemented): https://github.com/ggml-org/llama.cpp/discussions/12507 LLAMA_GPU_LAYERS=999 # 131072 (128K): ~25.6GB (17.6GB weights + ~8GB KV cache) on the 32GB # R9700, ~6GB headroom — see docs/research/qwen3.8-27b-quant.md for the full # table (64K only used ~19.6GB/~12GB headroom, but real usage was burning # through 64K fast). If headroom gets tight, quantize the KV cache instead # of dropping context: --cache-type-k/v q8_0 roughly halves it. LLAMA_CTX_SIZE=131072 # --- Open WebUI --- WEBUI_PORT=8008 # Minted automatically by ./scripts/update.sh — leave blank. Manual fallback: # docs/proxy-key-onboarding.md. OPENWEBUI_LITELLM_KEY= # --- Lazytainer --- # Seconds of inactivity before llama-server is stopped. 900 = 15 min. LAZYTAINER_INACTIVE_TIMEOUT=900 # --- Embedding model (knowledgebase, see docs/memory-knowledgebase.md) --- EMBEDDING_MODEL_FILE=nomic-embed-text-v1.5.Q8_0.gguf # --- SearXNG web search (see docs/research/litellm-searxng-search.md) --- # Resolved automatically by ./scripts/update.sh from search.home on this # host — leave blank. Only set by hand if that resolution fails (e.g. # search.home isn't a static DHCP reservation and its IP drifted). SEARXNG_LAN_IP= # --- LiteLLM proxy (see docs/proxy-key-onboarding.md, docs/network-access.md) --- LITELLM_PORT=4000 # Random values, filled in automatically by ./scripts/update.sh — leave # blank. LITELLM_SALT_KEY encrypts stored data; do not change it after the # first run (existing encrypted data becomes unreadable if you do). LITELLM_MASTER_KEY= LITELLM_SALT_KEY= LITELLM_DB_PASSWORD= # Backs litellm's router state/rate-limits/budgets/cache invalidation # (the redis service). Random value, filled in automatically — leave blank. REDIS_PASSWORD= # Admin UI login (https:///ui). Without these, LiteLLM falls back to # username "admin" / password = LITELLM_MASTER_KEY — set these instead so the # master key never has to be typed into the browser. UI_PASSWORD is filled # in automatically by ./scripts/update.sh if blank. UI_USERNAME=admin UI_PASSWORD= # --- Knowledgebase (pgvector + litellm-pgvector, see docs/memory-knowledgebase.md) --- # Random value, filled in automatically by ./scripts/update.sh — leave blank. PGVECTOR_DB_PASSWORD= # Auth key litellm-pgvector requires on its own API (its SERVER_API_KEY). # Random value, filled in automatically by ./scripts/update.sh — leave blank. LITELLM_PGVECTOR_API_KEY= # A virtual key litellm-pgvector uses to call back into litellm for # embeddings. Minted automatically by ./scripts/update.sh — leave blank. # Manual fallback: docs/proxy-key-onboarding.md. LITELLM_PGVECTOR_EMBEDDING_KEY=