model_list: - model_name: qwen3.8-27b-local litellm_params: # Static name — llama.cpp serves whatever model it loaded regardless of # what's requested here; this string isn't shell-expanded (this file # isn't docker-compose.yml, .env vars don't reach it). model: openai/qwen3.8-27b-local api_base: http://llama-server:8080/v1 api_key: local # Qwen3 is a reasoning model — it spends output tokens on # reasoning_content before ever writing content. Callers that don't # set their own max_tokens (Open WebUI's default request didn't) hit # llama.cpp's low default, so the model runs out mid-thought and # content comes back empty. This is a floor, not a cap — any caller # that passes its own max_tokens still overrides it. max_tokens: 4096 model_info: # Shadow cloud-cost estimate — priced against Claude Sonnet 5's published # rate, not real spend (this proxy only ever routes to the local model). # Source: https://platform.claude.com/docs/en/about-claude/pricing, # checked 2026-08-25. Update these two numbers if that page changes. input_cost_per_token: 0.000002 # $2 / MTok output_cost_per_token: 0.00001 # $10 / MTok router_settings: # ponytail: LiteLLM's request-prioritization scheduler is beta (see # docs/proxy-request-priority.md) — exact settings key/shape must be # confirmed against LiteLLM's current docs and smoke-tested against # llama.cpp before workloads depend on it. Single-instance deployment, # no Redis configured — add one only if the scheduler turns out to need it. enable_priority_scheduling: true general_settings: master_key: os.environ/LITELLM_MASTER_KEY