How kochc/opencode-llm-proxy works
opencode-llm-proxy is an OpenCode plugin that exposes a local HTTP gateway, translating OpenAI Chat Completions, OpenAI Responses, Anthropic Messages, and Gemini requests into OpenCode prompts and returning responses in the caller’s format. The principal flow is request admission and model resolution, format adaptation, media preparation, OpenCode session execution, then response or stream formatting; tools are surfaced through an MCP bridge for client-side execution. It also documents model discovery, health, and metrics endpoints. The excerpts show shared orchestration in index.js but omit its route and stream internals, so uncertain internal call wiring is not expanded.
Main entry points: index.js Proxy plugin · canonical-messages.js Canonical prompts · metrics.js Metrics collection · remote-media.js Remote media
Components 19
HTTP gateway
- Proxy plugin
index.js - Access controls
index.js - API endpoints
index.js - Model discovery
index.js
Request translation
- OpenAI Chat adapter
canonical-messages.js - Responses adapter
canonical-messages.js - Anthropic adapter
canonical-messages.js - Gemini adapter
canonical-messages.js - Canonical prompts
canonical-messages.js - Remote media
remote-media.js
Model execution
- Model resolution
index.js - OpenCode SDK
- Configured providers
- MCP tool bridge
mcp-tool-bridge.js - Response formatting
index.js
Operations
- Health endpoint
index.js - Metrics collection
metrics.js - Metrics endpoint
index.js
Other components
- API clients
Connections 25
- API clients → Proxy plugin: sends request
- Proxy plugin → Access controls: checks access
- Proxy plugin → API endpoints: dispatches request
- API endpoints → OpenAI Chat adapter: adapts Chat
- API endpoints → Responses adapter: adapts Responses
- API endpoints → Anthropic adapter: adapts Messages
- API endpoints → Gemini adapter: adapts Gemini
- OpenAI Chat adapter → Canonical prompts: normalizes input
- Responses adapter → Canonical prompts: normalizes input
- Anthropic adapter → Canonical prompts: normalizes input
- Gemini adapter → Canonical prompts: normalizes input
- Proxy plugin → Model resolution: resolves model
- Proxy plugin → Remote media: prepares media
- Proxy plugin → Canonical prompts: renders prompt
- Proxy plugin → OpenCode SDK: starts session
- OpenCode SDK → Configured providers: routes generation
- Proxy plugin → MCP tool bridge: registers tools
- OpenCode SDK → Proxy plugin: streams events
- Proxy plugin → Response formatting: formats output
- Response formatting → API clients: returns response
- Proxy plugin → Model discovery: serves model list
- Model discovery → OpenCode SDK: queries models
- Proxy plugin → Health endpoint: serves status
- Proxy plugin → Metrics collection: records activity
- Metrics endpoint → Metrics collection: serializes metrics