Connect a harness
Point Claude Code, Codex, OpenClaw, Hermes or any compatible client at the proxy.
First complete installation and garcon setup on this machine. Setup starts the proxy; the configuration below connects your harness to it. Repeat this connection step on every machine, even when they share a Supabase project.
The Settings view of the dashboard generates every snippet below for a chosen harness, provider and account. The account is only a label the proxy records; use the login the harness actually signs in with so usage lines up with the right subscription. Replace me@example.com.
Claude Code
ANTHROPIC_BASE_URL=http://127.0.0.1:4141/claude/me@example.com \
_CLAUDE_CODE_ASSUME_FIRST_PARTY_BASE_URL=1 claudeClaude Code appends /v1/messages itself. The second variable keeps subscription (claude.ai) login working through a non-Anthropic host.
Codex
model_provider = "garcon"
[model_providers.garcon]
name = "OpenAI"
base_url = "http://127.0.0.1:4141/codex/me@example.com/backend-api/codex"
wire_api = "responses"
requires_openai_auth = trueCodex needs its own provider entry because the built-in one ignores base URL overrides under a ChatGPT login; a custom provider also uses plain HTTP instead of websockets, which is what lets the proxy read usage. Only model calls are routed; plugin, app and usage-limit traffic goes to chatgpt.com directly.
OpenClaw
{
models: {
mode: "merge",
providers: {
anthropic: { baseUrl: "http://127.0.0.1:4141/openclaw/me@example.com/anthropic" },
openai: { baseUrl: "http://127.0.0.1:4141/openclaw/me@example.com/openai/v1" },
openrouter: { baseUrl: "http://127.0.0.1:4141/openclaw/me@example.com/openrouter/api/v1" },
},
},
}Each adapter appends its own endpoint path. The openai-codex (ChatGPT OAuth) provider uses …/openclaw/me@example.com/chatgpt/backend-api. Keys stay in OpenClaw; the proxy forwards Authorization and x-api-key untouched.
Hermes
providers:
openrouter:
base_url: http://127.0.0.1:4141/hermes/me@example.com/openrouter/api/v1
anthropic:
base_url: http://127.0.0.1:4141/hermes/me@example.com/anthropic
openai:
base_url: http://127.0.0.1:4141/hermes/me@example.com/openai/v1Hermes appends /chat/completions or /v1/messages itself and asks for stream_options.include_usage, which is what lets the proxy see token counts.
Anything else
Use http://127.0.0.1:4141/<name>/<account>/<provider> plus whatever path prefix the client's SDK expects (/v1 for OpenAI SDKs, /api/v1 for OpenRouter). Rows are tagged with that name and the dashboard lists it alongside the known harnesses. OpenAI-compatible clients only report tokens on streamed replies when they send stream_options: {"include_usage": true}.
Verify your first request
Keep a copy of your original configuration so you can restore it before uninstalling Garcon. Restart the harness after applying its generated configuration.
Verify any of these with one short call (claude -p hi, codex exec hi) and a new row in the Logs view or at /api/usage.
If no row appears, run garcon doctor, confirm that the harness is using the local URL, and check Logs with all filters cleared. Doctor checks the proxy and reports whether any local requests have been recorded; it does not change harness configuration. See installation troubleshooting.