Skip to content

Chat & OpenAI-compatible clients

Waired exposes a Local Gateway on http://127.0.0.1:9473 that speaks both the OpenAI and Anthropic wire formats. Any tool that can talk to those APIs — a browser chat UI, an editor extension, a script — can use your own model by pointing at this address. Claude Code and OpenCode are wired up automatically; everything else uses the endpoints below.

API Endpoint Base URL for clients
OpenAI chat POST /v1/chat/completions http://127.0.0.1:9473/v1
OpenAI models GET /v1/models http://127.0.0.1:9473/v1
OpenAI responses POST /v1/responses http://127.0.0.1:9473/v1
Anthropic messages POST /anthropic/v1/messages http://127.0.0.1:9473/anthropic

Use one of the Waired aliases as the model. They resolve to whatever you have loaded, so your client config doesn’t change when you switch models:

  • waired/default — the default model.
  • waired/coding — the coding model.

Other aliases (waired/small, waired/medium, …) and concrete model IDs are listed in the model catalog. Call GET /v1/models to see what your gateway currently advertises.

The gateway authenticates requests with a bearer token:

Authorization: Bearer <gateway-token>

Running waired link generates this token and configures the supported coding agents with it. A third-party client needs the same token supplied as its API key. The token is held in your per-user secret store (the system keychain on macOS; a protected file under the agent’s state directory on Linux and Windows).

Terminal window
curl http://127.0.0.1:9473/v1/chat/completions \
-H "Authorization: Bearer $WAIRED_GATEWAY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"model": "waired/default",
"messages": [{"role": "user", "content": "Say hi"}]
}'

For a quick, token-free check from the same machine, use the CLI instead: waired infer "say hi" (see Verify it works).