Supported protocols
OSW accepts three upstream protocols and recognizes them on the same port.
| Protocol | Endpoint | Typical clients |
|---|---|---|
| OpenAI Chat Completions | /v1/chat/completions | The vast majority of OpenAI-compatible tools |
| OpenAI Responses | /v1/responses | Codex and others |
| Anthropic Messages | /v1/messages | Claude Code and others |
How paths are recognized
One port serves all three protocols, and paths are recognized with or without the /v1 prefix:
http://127.0.0.1:9300/v1/chat/completions
http://127.0.0.1:9300/chat/completions
How to fill in the Base URL
| Your client | Base URL |
|---|---|
| OpenAI-compatible | http://127.0.0.1:9300/v1 |
| Anthropic | http://127.0.0.1:9300 |
Anthropic takes no /v1
Anthropic clients append /v1/messages themselves. Adding /v1 makes it /v1/v1/messages, which the proxy does not recognize, and it returns 404.
GET /v1/models
Served locally, returning your configured model names (that is, the logical models), and it never forwards upstream. So curl http://127.0.0.1:9300/v1/models both verifies the service is running and shows the model names you can currently write.
Transport modes
| Mode | Behavior |
|---|---|
| Non-streaming | Handled as-is; the full payload is read before responding. |
| Streaming | SSE frames passed through one by one. Once delivery starts, an interruption aborts it — no reassembly. |
| WebSocket | Handled per connection. |
Protocol conversion
No conversion by default: a request is forwarded as-is in the protocol it arrived in. Only after a channel explicitly enables conversion can it accept requests in another protocol:
- Native requests come first: when a request's protocol matches what the channel supports, the native channel is used directly.
- Converted requests are used only when there is no native candidate.
- Conversion is a compatibility layer: some parameters may be lost, and you should not expect it to be fully equivalent to native.
Enabling conversion affects one protocol endpoint at a time
The conversion toggle lives on the protocol endpoint row in the provider model edit dialog (see Providers & models).
With protocols settled, go to Client configuration to hook up your tools.