Reasoning-capable local backends (deepseek-v4-flash-dspark on bosch) only emit a
separate reasoning stream when the request carries chat_template_kwargs.enable_thinking.
The proxy never asked, so clients (bullpen, OWUI) got reasoning inlined into content or
dropped. Now: if the routed local model matches /etc/llm-proxy/reasoning-models.json
(a JSON list of substrings; absent=off), inject enable_thinking. The byte-passthrough
relay already forwards the reasoning deltas untouched. Verified: dspark now streams
reasoning deltas through :8082.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Zero-dependency OpenAI-compatible router: OpenRouter cloud + local model-aware
fanout, merged /v1/models catalog with cost tags, background free/cheap-tier
auto-curation. Extracted from the fleet's unversioned /opt/llm-proxy.py (kept
only as cp-backups) and de-hardcoded for portability:
- config dir via LLM_PROXY_CONFIG_DIR (default /etc/llm-proxy)
- default backends -> localhost (no fleet hosts); real ones in local-backends.json
- friendly-name aliases -> friendly-names.json (none baked in code)
- OpenRouter Referer/Title via LLM_PROXY_REFERER / LLM_PROXY_TITLE
- removed the ds4-escher one-off filter and the fleet-specific helper scripts
Sanitized: no fleet hostnames, IPs, names, or secrets (key comes from env).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EWpfhDgYNA21tETDP9ueBE