Skip to content

v0.4.0

Latest

Choose a tag to compare

@codelion codelion released this 28 Sep 02:27

What's Changed

Fix: proxy plugin config, logging and agent clients (#330, #331)

  • Proxy target ignored: without ~/.optillm/proxy_config.yaml, the proxy silently loaded the bundled example config and routed to its sample providers. It now creates an empty template instead. A single failed request no longer sends all later traffic to --base-url: 4xx errors don't mark a provider unhealthy, and unhealthy providers are retried before falling back.
  • /v1/models lists the configured providers' models (plus model_map aliases) with --approach proxy.
  • Agent clients (e.g. Crush): the none and proxy approaches now forward the original conversation, including tool_calls and tool results, instead of flattening it. Streamed responses carry tool calls, finish reason and usage. stream_options is no longer forwarded upstream, and messages with content: null no longer crash parsing.
  • Logging: --log / OPTILLM_LOG now apply to all modules and are case-insensitive, so DEBUG logs from the proxy and other plugins show up.

MCP plugin ported to mcp 2.x

  • Works with the MCP Python SDK 2.x (MCPError, snake_case result fields).
  • New streamable_http transport, with headers and timeouts.

Breaking changes

  • MCP websocket transport removed (dropped from the MCP Python SDK in 2.x). Configs using "transport": "websocket" must switch to streamable_http or sse.
  • Requires mcp>=2,<3. Environments that also need mcp<2 won't install.
  • The proxy no longer loads the bundled example_config.yaml when ~/.optillm/proxy_config.yaml is missing. Requests use the server's default client (--base-url) until you add providers.
  • OPTILLM_LOG_LEVEL removed. Use --log / OPTILLM_LOG; monitoring.log_level in the proxy config is an optional proxy-only override.

Thanks to @brettowe for the detailed report.

Full Changelog: v0.3.22...v0.4.0