Skip to main content

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)

uvx oc-cc-proxy --api-key your-key-here

You can still use OPENCODE_GO_API_KEY from the environment or a .env file instead. The proxy fails before accepting requests if neither --api-key nor OPENCODE_GO_API_KEY is provided.

uvx should run this package with Python 3.12 or 3.13. LiteLLM's current uvicorn and uvloop stack is not compatible with Python 3.14 yet.

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-flash",
    "ANTHROPIC_DEFAULT_HAIKU_MODEL": "qwen3.6-plus",
    "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 the --api-key flag or OPENCODE_GO_API_KEY on the proxy process.

Configuration

  • --api-key: optional CLI override for the OpenCode Go API key. Recommended for uvx usage.
  • OPENCODE_GO_API_KEY: required if --api-key is not provided.
  • 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

If uvx selected Python 3.14, pin a supported runtime explicitly:

uvx --python 3.12 oc-cc-proxy --api-key your-key-here

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.

Metadata

Release files for oc-cc-proxy 0.1.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for oc-cc-proxy 0.1.4
File Size Uploaded Provenance
oc_cc_proxy-0.1.4.tar.gz 10.4 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for oc-cc-proxy 0.1.4
File Interpreter ABI Platform
oc_cc_proxy-0.1.4-py3-none-any.whl Python 3 none any Details

Total release size: 20.6 kB

Release files / oc_cc_proxy-0.1.4.tar.gz

Download URL oc_cc_proxy-0.1.4.tar.gz
Size 10.4 kB
Tags Source
SHA-256 checksum
How to use checksums
5d8dc0f56bdafdac729f78e8db3f62d525baf9a88f9a9d046926d7fdf41026cd
BLAKE2b-256 checksum
How to use checksums
4f1eaf9fa4976c7a3c3cb49fb6233cfc413ebd2ea3c4774c01731fedde467f78
Upload date
Uploaded using Trusted Publishing?
What is 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}

Release files / oc_cc_proxy-0.1.4-py3-none-any.whl

Download URL oc_cc_proxy-0.1.4-py3-none-any.whl
Size 10.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
79bb10330de1abd14875b9432f103d86cde74571d23d9fcd7d20a86a4f1135c6
BLAKE2b-256 checksum
How to use checksums
7fd3c1ca6340f552940829777fbc88b07e1a1e6040e24e9998e0fc30536e29fa
Upload date
Uploaded using Trusted Publishing?
What is 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}

Security for oc-cc-proxy 0.1.4

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page