Kenny Hibberd a85be6a8bb
Initial commit: OpenCode Anthropic proxy server
Wraps claude -p CLI to provide OpenAI-compatible API for OpenCode.
Supports tool calling via --allowedTools and --permission-mode bypassPermissions.
2026-05-03 16:08:19 -07:00

1.5 KiB

opencode-anthropic-proxy

A local proxy server that wraps claude -p (Claude Code CLI) to expose an OpenAI-compatible API endpoint for use with OpenCode.

How it works

OpenCode communicates with AI providers using the OpenAI API format. This proxy listens on localhost:3000, receives OpenAI-format requests, translates them into claude -p CLI invocations, and returns the responses.

Tool calls (bash, read, write, edit, etc.) are passed through using --allowedTools and --permission-mode bypassPermissions, allowing Claude to execute tools internally.

Setup

1. Install the systemd user service

cp claude-proxy.service ~/.config/systemd/user/
systemctl --user daemon-reload
systemctl --user enable --now claude-proxy.service

2. Configure OpenCode

In your opencode.json, add a provider:

"claude-code": {
  "npm": "@ai-sdk/openai-compatible",
  "name": "Claude Code (proxy)",
  "options": {
    "baseURL": "http://localhost:3000/v1"
  },
  "models": {
    "claude-opus-4-7": { "name": "Claude Opus 4.7" },
    "claude-sonnet-4-6": { "name": "Claude Sonnet 4.6" },
    "claude-haiku-4-5": { "name": "Claude Haiku 4.5" }
  }
}

3. Requirements

  • claude CLI installed at ~/.local/bin/claude (Claude Code)
  • Node.js 18+

Notes

  • The proxy uses --permission-mode bypassPermissions — tools execute without approval prompts
  • Model names with provider prefix (e.g., claude-code/claude-sonnet-4-6) are handled automatically
  • Supports both streaming and non-streaming responses