1.8 KiB
anthropic-proxy
Reverse proxy that lets OpenCode (and similar tools) use a Claude subscription instead of an API key.
Prerequisites
- Go 1.26+
Optional: Nix flake for dev shell (nix develop).
Setup
cp config.example.yaml config.yaml
Edit config.yaml:
api_keys— key(s) your clients use to authenticate with the proxyclaude_binary— optional path toclaudebinary (used for request fingerprinting via sniff only)
Authentication
On first run, if no credentials are found at ~/.claude/.credentials.json, the proxy starts an OAuth login flow in your browser. Credentials are stored at ~/.claude/.credentials.json (the same file Claude Code CLI uses). On subsequent runs, existing credentials are reused and refreshed automatically.
If running headlessly (SSH/server), the authorization URL is printed to stdout and you can paste the authorization code manually.
If you've already logged in with Claude Code CLI, the proxy will use the same credentials.
Build and run
go build -o anthropic-proxy .
./anthropic-proxy
Usage with OpenCode
export ANTHROPIC_API_KEY=your-proxy-api-key
export ANTHROPIC_BASE_URL=http://localhost:8082
opencode
Endpoints
| Method | Path | Description |
|---|---|---|
| POST | /v1/messages |
Anthropic messages API (proxied) |
| POST | /messages |
Same, without /v1 prefix |
| GET | /healthz |
Health check |
| POST | /reload |
Hot-reload config.yaml |
Request sanitization
The sanitize section in config renames tool names and replaces strings in system prompts before forwarding to Anthropic. Responses are de-sanitized before returning to the client.
See config.example.yaml for the default rules.
Reload after editing config:
curl -X POST localhost:8082/reload