Opening IO Gateway

Self-hosted request routing · Rust

One local endpoint for the AI accounts you already use.

IO Gateway accepts OpenAI-compatible, Codex, and Claude client traffic, applies the route rules you set, then selects an eligible upstream account without putting its credentials in a client configuration.

localhost by default native desktop releases 10 provider families + custom aliases real account state in the dashboard
/v1 OpenAI-compatible SDKs and tools
/codex Codex-style response sessions
/claude Anthropic-style messages
ctm: Stable aliases over changing targets

01 / route

The first decision happens before traffic leaves your machine.

A request is checked against the client key and route policy first. Only then does IO Gateway choose a provider account that can actually take the work.

01
Authenticate the client keyReject disabled keys and apply whole-key, provider, or account prompt limits before dispatch.
02
Resolve the intended routeNormalize the client surface and turn direct models or ctm: aliases into a route intent.
03
Select an eligible accountPrefer marked accounts, then account for quota, cooldown, scope, availability, and fallback order.
04
Relay and record the outcomeStream the response back while preserving the selected account’s usage, error, and notification state.
IO Gateway dashboard with account panels, custom models, usage data, and routing controls.
Actual local dashboard: accounts, route aliases, usage, and operator actions in one place.

02 / controls

The route is a policy you can inspect, not a hopeful fallback list.

The dashboard puts the inputs to routing in front of the operator: which accounts run first, which clients can ask for what, how a stable custom route behaves, and what usage, quota, or alert state each request leaves behind.

A / priority accounts

Use the accounts you choose first—without sending work to one that is unavailable.

Mark a provider account as priority when you want it drained before the ordinary pool. Its current status still matters, so a disabled, cooling-down, or exhausted account is skipped instead of becoming a dead end.

  • Priority changes selection order, not the safety checks.
  • Usage windows and reset points stay visible next to the account.
  • Fallback accounts are explicit when the first choice cannot run.
Provider account cards showing priority, enabled, quota, and reset states.
Priority and quota state shown together, where the decision is made.

B / client keys

A client key is a bounded contract, not a pass-through credential.

Give each client access only to the providers, accounts, and request sizes that make sense. The gateway performs those checks before upstream accounts see a prompt.

  • Set a whole-key prompt ceiling for every route behind a key.
  • Apply different limits for a provider or a single account.
  • Restrict a key to direct targets or selected custom aliases.
API-key editing screen with provider and account prompt limits.
Limits can be scoped globally, per provider, or per account.

C / custom routes

Publish a stable name while the provider pool behind it changes.

A ctm: model is a routing rule rather than another provider list: ordered steps, weighted targets, exact account selection, exclusions, and fallback.

  • Keep a familiar client-facing model name during provider changes.
  • Mix provider targets and account-specific steps in one alias.
  • Test the same route a client will use before publishing its key.
Custom model route with weighted provider targets and fallback steps.
A custom model route describes the selection policy in the operator UI.

D / observe and alert

Know which account served the request—and when the pool needs attention.

Per-request usage and background quota snapshots make routing outcomes visible. Alerts surface authentication, upstream, and quota events without requiring the dashboard to stay open.

IO Gateway usage and quota view with token history, provider totals, and account state.
Usage, context history, and provider quota remain attached to the route evidence.

03 / endpoints

Keep the client surface familiar. Change the route behind it.

Point the tool you already use at a localhost base URL. IO Gateway keeps the compatible protocol edge separate from provider choice and account state.

/v1
OpenAI-compatible clients. Responses, Chat Completions, Models, and direct or custom model routes.
/codex
Codex-style sessions. Gateway account selection and quota state behind a dedicated Codex surface.
/claude
Anthropic-style messages. The same local key, routing policy, and operator controls.
ctm:
Custom aliases. A stable model reference backed by the ordered targets and fallbacks you decide.

Current provider families are cod: Codex, cld: Claude, gem: Gemini, agw: Antigravity, qwn: Qwen, dsk: DeepSeek, min: MiniMax, grk: Grok, cop: GitHub Copilot, and glm: GLM / Z.AI. Use ctm: for operator-defined aliases across those targets.

04 / install

Install a native build. Answer the questions that affect your machine.

The release installer selects the matching archive, verifies it, preserves an existing data directory, and makes first-run setup deliberate rather than hidden.

Linux / macOS
bash -c 'set -o pipefail; curl -fsSL https://github.com/giofahreza/io-gateway/releases/latest/download/install.sh | sh'
Windows PowerShell
irm https://github.com/giofahreza/io-gateway/releases/latest/download/install.ps1 | iex
binary
Native x86_64 and ARM64 releases. Linux, macOS, and Windows installers pick the right archive for the current machine.
port
Choose the local port. Keep the suggested value or use a port that fits an existing desktop setup.
autostart
Opt in to start at sign-in. The installer offers a user systemd service, LaunchAgent, or Scheduled Task when supported.
terminal
Choose whether to add the iogw TUI. The optional companion is installed only when you want it.
network
Start localhost-only. Configure administrator authentication before deliberately exposing the operator UI.

Each release includes the installers, native archives, and SHA256SUMS. The first install is interactive; documented flags cover repeatable unattended installs.

IO Gateway

Keep provider credentials private. Give every client a local route.

Connect accounts in the dashboard, verify the route, then point your clients at one endpoint you control.

Download a release