Personal desktop relay for ChatGPT accounts and compatible APIs.
Zenith Relay lets you keep user-owned ChatGPT accounts and compatible API sources in one place, choose which connections may receive requests, and use one private OpenAI-compatible endpoint. ChatGPT/Codex profile changes are reversible and protected by a recovery point.
Download the package for your platform from GitHub Releases.
- Windows: use the Setup installer. The portable EXE runs without installation, but its folder must be writable for in-place updates.
- Linux: choose AppImage, DEB, or RPM.
- macOS: choose the DMG for Intel or Apple Silicon.
The first launch opens Quick Setup. It asks where Relay should run, what connection to add, and which client should use the endpoint. You can restart Quick Setup from Help at any time.
| Mode | Use it when | What remains running |
|---|---|---|
| This computer | You want to combine personal accounts without deploying a server. | Relay and the local endpoint must stay open. |
| Choose API | You already have a compatible hosted API and its key. | The provider runs the requests; Relay may be closed after profile setup. |
| My server | You operate a Relay Server for continuous or remote access. | The server runs the pool; the desktop app is only the manager. |
Start with This computer if you are testing a personal pool. Choose My server only after the local flow works and you have a server you control. Choose API does not create a pool and does not keep Relay request history.
- Open Connections and add a ChatGPT account, an API source, or a proxy.
- In Pool, include only connections that may receive traffic. Use Model Rules to enable or disable the models visible to clients.
- Start the endpoint in API & ChatGPT and connect the selected ChatGPT or Codex profile. Relay creates a protected return point before changing it.
- Use Overview for health and speed, Usage for request details, and Recovery for profile snapshots.
Account and automatically discovered model status comes from the selected
provider or server. A manual source catalog is an explicit local assertion for
providers that do not expose /models; it is not independent proof that the
provider accepts the model. Relay does not replace a provider's quota rules
with a fixed five-hour or weekly formula. A failed check stays visible in the
source/account status, and in Pool → Model Rules when there is no valid
account catalog fallback; a failed check is never presented as confirmed
automatic availability.
While the local session is active, model catalogs are checked after startup and again every eight hours. Quota refreshes follow the reset times reported by the provider. The visible Overview, Pool, and Connections state may refresh while those pages are open.
Relay does not send separate probe requests to test reasoning modes. Reasoning levels shown in Model Rules are catalog metadata or a manual rule. Codex background activity summaries and task titles are a separate setting in API & ChatGPT and can be blocked without disabling ordinary requests.
When a provider reports a weekly reset credit, an account card shows Reset weekly quota and opens a simple Yes/No confirmation. In local mode, Connections → Automations can run a weekly reset automatically when the weekly window reaches zero. The provider must still report the reset as available.
Account cards show API equiv. used for priced Relay usage and optional purchase cost payback. When Relay has complete priced usage recorded from the start of the current provider quota window, it also shows API equiv. left: an approximate remaining amount derived from that window's Relay usage and the provider-reported percentage. It excludes activity outside Relay and is hidden when the window, pricing, or usage record is incomplete. Provider quota itself remains a percentage and reset time, not a monetary balance or billing value.
In Pool, Request speed selects the service tier for routed requests.
Standard leaves the client/provider choice unchanged. Fast is shown
only when the selected upstream catalog explicitly confirms fast or
priority for that model; it then asks that concrete route for the
provider's priority tier. A dash means that no current route has confirmed
the tier, not that the model is unavailable. Fast does not change model
selection, reasoning, account order, or routing priority, and the provider may
still apply the standard tier. Fast is a request-speed mode, not a second
user-facing quota: account cards show the primary provider windows and
feature-specific limits such as Code Review, but do not display a separate
Fast-tier meter.
Relay is a personal deployment, separate from the production Zenith Gateway and Control API. It does not receive Zenith production credentials, customer keys, backend tokens, account inventory, or internal billing and routing logic.
Desktop credentials stay in the operating system's protected credential store. When you explicitly move your own connection to a server you operate, that server keeps it in its encrypted vault. Nothing is uploaded to Zenith implicitly. Operational diagnostics, snapshots, screenshots, support bundles, and usage records contain redacted data, not raw credentials, cookies, authorization headers, prompts, or provider response bodies.
Account export is different. It is an explicit credential-bearing transfer file and may contain OAuth access, refresh, and identity tokens. Use it only for an intended import, keep it private, and delete it after the transfer.
- ChatGPT is the only shipped subscription-account connector.
- This computer stops serving requests when Relay or the computer stops.
- My server is a user-managed path and is not production-certified until the live acceptance gates in ROADMAP.md are complete.
- There is no multi-server pool or distributed scheduling.
- A provider may reject an account, model, region, tool, image, or quota window even when the connection itself is saved. The error source in Usage identifies whether the failure came from the provider, account, or Relay.
The complete mode guides are available in the repository and inside the application:
| Mode | English | Русский |
|---|---|---|
| Overview | Read | Открыть |
| This computer | Guide | Инструкция |
| Choose API | Guide | Инструкция |
| My server | Guide | Инструкция |
The product boundary and unfinished acceptance work live in PLANNING.md and ROADMAP.md. Development and release checks are in CONTRIBUTING.md.
cd src
bun install
bun run verify
bun run test:e2e
bun run screenshotsThe screenshot command regenerates only the committed documentation images. See CHANGELOG.md for the user-facing changes from 1.0.5 to 1.1.0.



