v1.4.0
- Added
--native-chat-streamingto route streaming/api/chatthrough LM Studio's native/api/v1/chat, so streamed responses carry real token stats and per-event reasoning (non-streaming stays on the default path). - Added an optional inbound API-key gate (
--api-key/OLLAMA_API_KEY): off by default, but when set every request must sendAuthorization: Bearer <key>(constant-time match, rejected requests logged). - Added
--auto-evictto unload other models before loading a requested one, matching Ollama's single-model default; it runs proactively before inference and warns at startup about the multi-client effect. /api/psnow reports a realexpires_atfrom each model's trackedkeep_alive: a finite deadline for a positivekeep_alive, a far-future timestamp forkeep_alive:-1, and the default placeholder only for models the proxy did not load.- Fixed the native chat path (
--use-native-chat) sending an input shape LM Studio rejected, which made native chat return empty or errored responses; the/api/v1/chatrequest is now built correctly. - Fixed model loading when LM Studio's just-in-time loading is disabled, and cold-loading embedding models: the explicit load now uses the resolved model key instead of the
:latestname LM Studio rejected. - Fixed the native streaming path silently returning an empty success when LM Studio errored; it now surfaces the upstream status and message.
Full Changelog: v1.3.0...v1.4.0