How-to guides
The proxy is a drop-in OpenAI endpoint, so most apps that can talk to a "custom" or "OpenAI-compatible" provider can use ZeroSignal with two values: a base URL and a throwaway API key.
zs-proxy connect writes the config for opencode,
Codex CLI, Aider, Continue, Hermes, OpenClaw, and Pi; their guides show what it
writes and how to pick a model. The GUI apps take the base URL by hand.
Before you start
- The proxy is set up and running. You've signed it in with
zs-proxy wallet loginand started it withzs-proxy proxy start— see the Quick start.connectand these apps read the live endpoint, so the proxy has to be up. - Your account has a little money in it. Add funds in the chat app, or
with
zs-proxy fundfor a wallet only the proxy uses. A couple of dollars covers a lot of chatting. See Wallet & funding. - You know your base URL. It's your proxy's listen address with
/v1on the end —http://localhost:9376/v1unless you changedserver.listenin Configuration.
The two values every app needs
| Field the app asks for | What to enter |
|---|---|
| Base URL / API host / endpoint | http://localhost:9376/v1. Don't add /chat/completions; the app appends the rest itself. |
| API key | Anything non-empty — zerosignal, not-checked, a single character. Some apps refuse a blank field. The proxy discards the key, since your wallet's on-chain seal is the credential. |
Picking a model
Requests must name a concrete model id from the live catalog; there's no
"Auto" lane outside the chat app. Some apps fill a model dropdown from
GET /v1/models; others give you a text field to type an id. To see the list
yourself:
curl http://localhost:9376/v1/models | jq -r '.data[].id'
See Models & operators for what's on the network.
Running the app in Docker
Open WebUI and LibreChat run in a container by default. Inside a container,
localhost is the container itself, so it can't reach localhost:9376 on your
machine. Two things change:
- Point the app at
http://host.docker.internal:9376/v1instead oflocalhost. On Linux, also add--add-host=host.docker.internal:host-gatewayto the container so that name resolves. - Bind the proxy where the container can reach it. By default the proxy
listens on loopback only (
127.0.0.1:9376), which a container can't dial. Setserver.listento0.0.0.0:9376(orPROXY_SERVER_LISTEN=0.0.0.0:9376) so it accepts the connection.
Binding beyond 127.0.0.1 exposes the proxy to other machines. The proxy is
single-user: anyone who can reach it spends your balance, with no key
required. Only do this on a machine you trust and behind a firewall, and set a
spend cap as a backstop.
The guides
Roleplay and character-chat front end. Native app; connects in a few clicks.
Open WebUISelf-hosted ChatGPT-style web UI. Usually runs in Docker — mind the networking note above.
LibreChatSelf-hosted multi-model chat. Configured with a librechat.yaml
custom endpoint.
Cross-platform desktop chat client. Native app; add a custom provider.
Cherry StudioDesktop AI client with a custom-provider option.
HermesNous Research CLI/TUI agent. Configured by
zs-proxy connect hermes --plugin, which installs the
ZeroSignal plugin too.
Personal AI agent. Configured by zs-proxy connect openclaw.
Minimal terminal coding agent. Configured by
zs-proxy connect pi.
Terminal coding agent. Configured by
zs-proxy connect opencode.
OpenAI's coding agent. Configured by zs-proxy connect codex.
Command-line pair programmer. Configured by
zs-proxy connect aider.
VS Code / JetBrains assistant. Configured by
zs-proxy connect continue.
For an app that isn't listed, set the base URL and a placeholder key from the table above. The generic instructions are in Connecting AI tools → Manual setup.
What's next
- Connecting AI tools — the
connectcommand and every HTTP endpoint the proxy serves. - Routing preferences — pin an operator, set a price ceiling, or trade latency for cost (for apps that let you add fields to the request body).
- Pricing — what each message costs.
- Troubleshooting & FAQ — when something won't connect.