Skip to main content

Local LiteLLM proxy for routing Claude Code to OpenCode Go.

Project description

oc-cc-proxy

oc-cc-proxy runs a local LiteLLM Proxy that lets Claude Code send Anthropic Messages API requests to OpenCode Go's OpenAI-compatible endpoint.

The proxy listens on http://127.0.0.1:4000 by default and routes all Claude Code model names through LiteLLM wildcard passthrough to https://opencode.ai/zen/go/v1/chat/completions.

Quickstart (uvx)

export OPENCODE_GO_API_KEY="your-key-here"
uvx oc-cc-proxy

The proxy fails before accepting requests if OPENCODE_GO_API_KEY is missing.

Claude Code Settings

Add equivalent environment values to your Claude Code user-scope settings.json:

{
  "env": {
    "ANTHROPIC_BASE_URL": "http://127.0.0.1:4000",
    "ANTHROPIC_API_KEY": "dummy-key-for-claude-code",
    "ANTHROPIC_DEFAULT_SONNET_MODEL": "deepseek-v4-pro",
    "ANTHROPIC_DEFAULT_HAIKU_MODEL": "deepseek-v4-pro",
    "ANTHROPIC_DEFAULT_OPUS_MODEL": "deepseek-v4-pro"
  }
}

ANTHROPIC_API_KEY only needs to be non-empty for the local proxy path. OpenCode Go authentication uses OPENCODE_GO_API_KEY on the proxy process.

Configuration

  • OPENCODE_GO_API_KEY: required OpenCode Go API key.
  • OC_PROXY_HOST: optional host override, defaults to 127.0.0.1.
  • OC_PROXY_PORT: optional port override, defaults to 4000.

Local Development Setup

  1. Install dependencies:

    uv sync
    
  2. Configure the OpenCode Go API key:

    cp .env.example .env
    
  3. Edit .env and set OPENCODE_GO_API_KEY.

  4. Start the proxy:

    uv run oc-cc-proxy
    

Validation

With the proxy running, validate non-streaming text, wildcard model passthrough, streaming terminal events, tool definitions, tool results, and streamed tool requests:

uvx oc-cc-proxy-validate --model deepseek-v4-pro

Expected successful output starts each check with ok:. Any dropped, malformed, or ignored tool-call behavior should be treated as a blocking compatibility issue before describing the proxy as Claude Code-ready.

Project-local checks:

uv run pytest
uv run ruff check .

Debugging

Enable LiteLLM verbose logging and local request-shape diagnostics:

uvx oc-cc-proxy --debug

Debug helpers redact sensitive headers such as Authorization, x-api-key, and api-key. Avoid pasting raw upstream logs publicly unless you have checked them for secrets.

To inspect the generated LiteLLM config path without starting the server:

uvx oc-cc-proxy --print-config --config /tmp/oc-cc-proxy-litellm.yaml

Validated Models

These models pass the full oc-cc-proxy-validate suite (non-streaming text, wildcard passthrough, streaming terminal events, tool definitions, streamed tool metadata, and tool-result follow-up):

  • glm-5.1
  • glm-5
  • kimi-k2.5
  • kimi-k2.6
  • deepseek-v4-pro
  • deepseek-v4-flash
  • mimo-v2.5
  • mimo-v2.5-pro
  • minimax-m2.7
  • minimax-m2.5
  • qwen3.6-plus
  • qwen3.5-plus

Current Limitations

  • Tool-use compatibility must be validated against a live OpenCode Go account and target model before claiming a model is known-good for Claude Code.
  • DeepSeek V4 and Kimi K2.x models require their returned reasoning metadata to be replayed on assistant tool-call history. The proxy installs a LiteLLM callback that converts Anthropic thinking blocks back into upstream reasoning_content before tool_result follow-up turns. Non-reasoning models (Qwen, GLM, MiMo, MiniMax) have thinking_blocks stripped unconditionally to avoid upstream rejection.
  • MiniMax M2.7 emits empty choices chunks during streaming that LiteLLM's stream handler rejects. The proxy monkeypatches LiteLLM's Anthropic streaming adapter and repetition guard at import time to tolerate these chunks.
  • Anthropic-specific features such as prompt caching, extended thinking, and any endpoints beyond /v1/messages are not claimed as supported unless separately validated.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

oc_cc_proxy-0.1.2.tar.gz (9.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

oc_cc_proxy-0.1.2-py3-none-any.whl (9.7 kB view details)

Uploaded Python 3

File details

Details for the file oc_cc_proxy-0.1.2.tar.gz.

File metadata

  • Download URL: oc_cc_proxy-0.1.2.tar.gz
  • Upload date:
  • Size: 9.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.9 {"installer":{"name":"uv","version":"0.10.9","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for oc_cc_proxy-0.1.2.tar.gz
Algorithm Hash digest
SHA256 8c0f2c6f705ccfb6909907ed091242a355dcd208577908ef6f5d1b3abf94608c
MD5 2749dbb9ec5a2f9507718381cb3d9347
BLAKE2b-256 e8dd841e390c4ad6d63abf705d9a0a1ca8d5b894b31d1d743b3d5fe50f3ce272

See more details on using hashes here.

File details

Details for the file oc_cc_proxy-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: oc_cc_proxy-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 9.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.9 {"installer":{"name":"uv","version":"0.10.9","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for oc_cc_proxy-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 a82cde9a93753a2f2e9f2e505091937f463690490a67c7c8e0b1f6522a0f93a2
MD5 3c2f103606044b8f3d44b916fb085e7f
BLAKE2b-256 45c2819d6f7f4994ae99b83eae0ac99e6f7e28ec221c1547e1e03d41101b97c4

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page