Feature · Protocol conversion
A local OpenAI ⇄ Anthropic API converter for coding agents
Your agent speaks one API; your model speaks another. AutoJev translates between OpenAI Chat Completions, OpenAI Responses and Anthropic Messages in all six directions — including streaming and tool calls — so any agent can use any compatible model.
- All 6 directions between 3 APIs
- Streaming and function tool calls
- Images, structured output, usage and errors
- Native pass-through when protocols match
One endpoint, three protocols
127.0.0.1:9527/v1
Chat Completions
/v1/chat/completions
Responses
/v1/responses
Messages
/v1/messages
Agent protocol and model API are two different things
Codex sends OpenAI Responses requests. Claude Code sends Anthropic Messages. Hermes and many open-source agents send Chat Completions. Meanwhile most providers — DeepSeek, Ollama, vLLM and countless OpenAI-compatible endpoints — only offer Chat Completions, and some offer only Messages.
AutoJev keeps the two apart. Each model has an API type that describes its upstream service. Each agent talks to whichever gateway endpoint it understands. When they differ, AutoJev converts the request on the way out and the response on the way back. When they match, the request passes through natively, provider-specific fields intact.
The conversion matrix
Rows are the endpoint your agent calls on http://127.0.0.1:9527. Columns are the API type of the selected upstream model.
Gemini CLI connects through a separate bridge at /v1beta/models/{*} that maps to Chat Completions.
Use Chat Completions models with the Codex Responses API
Codex sends a Responses request to AutoJev. AutoJev picks a model configured as Chat Completions, translates the request and tool history, calls the provider's /v1/chat/completions, and streams the answer back as Responses events. Claude Code can use the very same upstream through /v1/messages.
One endpoint, three protocols
127.0.0.1:9527/v1
Chat Completions
/v1/chat/completions
Responses
/v1/responses
Messages
/v1/messages
What gets converted
- System instructions and multi-turn text conversations
- Images as URLs or base64
- Function tool definitions, tool choice, tool calls and results with stable call IDs
- Responses custom tools, mapped to a function with a string input argument and decoded back
- Streaming text and tool arguments, including UTF-8 split across network chunks
- Completion status, token usage and protocol-shaped errors
- Portable sampling settings and output-token limits
- Structured output formats between Chat Completions and Responses
Same model, three APIs
Any client can pick the endpoint it prefers. This Anthropic-style request is answered by whatever model the route selects, regardless of that model's own API.
Honest limits
Conversion makes protocols compatible. It does not make models more capable, and some features have no equivalent on the other side.
No new capabilities
Conversion cannot add vision, tool use, reasoning or context capacity to a model. Those requests are forwarded and the upstream decides.
Rejected when converting
Responses previous_response_id and conversation, hosted tools such as web search, namespaced tools, audio and file content, and multiple choices. Use a native upstream for these.
Thinking is not portable
Provider-specific thinking blocks, encrypted reasoning and signatures are dropped. Reasoning controls and prompt-cache hints are not translated.
Structured output scope
Structured output formats are translated between Chat Completions and Responses only, not to or from Anthropic Messages.
Streams fail loudly, not silently
Interrupted or malformed upstream streams are reported as errors rather than successful completions. Converted responses are bounded to 16 MiB, SSE frames to 2 MiB, and idle upstream reads time out after 120 seconds.
Frequently asked questions
Can I convert OpenAI API calls to the Anthropic API locally?
Yes. Send Chat Completions or Responses requests to AutoJev and select a model whose API type is Anthropic Messages. AutoJev converts the request, tools and streaming events in both directions on your machine.
How do I use a Chat Completions-only model with Codex?
Add the model with API type chat_completions and connect Codex from the Agents page. Codex keeps sending Responses requests; AutoJev translates them. Don't change the model's API type to Responses just because Codex is the client.
Does Claude Code work with DeepSeek or other OpenAI-compatible models?
Claude Code sends Anthropic Messages to AutoJev, which converts them for any Chat Completions or Responses upstream. Agent loops that depend on a model's private reasoning state may still need that model's native API.
Are tool calls and streaming supported across protocols?
Yes. Function tool definitions, tool choice, calls and results are translated with stable call IDs, and text and tool arguments stream as they arrive.
What isn't converted?
previous_response_id and conversation state, hosted tools like web search, audio and file content, and thinking blocks. Requests that need them are rejected or the content is omitted, so use a native upstream for those features.
Keep exploring
Updated 2026-10-14
Give every agent the right model.
Install AutoJev, add the providers you already pay for, and connect your agents in one click. Everything stays on your machine.
Free & open source · macOS · Windows · Linux