Zyquo Router
One local endpoint. Every AI provider.
A native macOS gateway that puts 170 models from 12 providers behind a single OpenAI-compatible API — private, spec-exact, gorgeous.
170
models in the catalog
12
AI providers
170/170
verification matrix green
~15 MB
disk footprint
0
accounts required
Overview
Every AI provider speaks a slightly different dialect — Anthropic wants x-api-key and content blocks, Gemini wants camelCase contents/parts, Perplexity ends streams with non-spec events. Your tools speak one dialect: the OpenAI API. Zyquo Router runs a tiny native gateway on your Mac that translates all of them into byte-exact OpenAI wire format.
Store your provider keys once in an AES-256-GCM encrypted, machine-bound vault, pick a port, press Start — and anything that can talk to OpenAI can now talk to twelve providers through localhost, with per-request model routing, fallback chains, live traffic inspection, and real per-model cost tracking.
It is 100% native Swift: a SwiftUI control room with a menu bar extra, a SwiftNIO 2 server with structured concurrency, and zero heavyweight dependencies. Think OpenRouter or LiteLLM — but local, private, and a real Mac app, not a Docker container with a YAML file.
Key Features
Spec-exact OpenAI API
Byte-exact chat.completion.chunk SSE streams that the official OpenAI Python and JS SDKs parse unmodified, verified across all 170 models.
Full protocol translation
Anthropic Messages API and Gemini generateContent translated bidirectionally — system extraction, tool calls, images, finish-reason and usage normalization.
Routing, aliases, fallback chains
Namespaced provider/model routing, friendly aliases like fast and best, and ordered fallback lists tried on upstream failure with honest model reporting.
Encrypted key vault
AES-256-GCM with an HKDF-derived, machine-bound master key. Local zyquo-sk bearer tokens are SHA-256-hashed at rest with per-key model allow-lists.
Live observability
Requests/min sparkline, token and cost tracking from real per-model pricing, and a request inspector with an upstream-TTFB timing waterfall.
Reasoning-model normalization
Thinking output unified into reasoning_content across Claude thinking, Gemini thoughts, DeepSeek-R1, Qwen, Magistral, and Perplexity think tags.
Built-in playground and docs
An in-app tester that calls the router's own endpoint with side-by-side request JSON and raw SSE panes, plus fully rendered API docs.
Headless CLI modes
Run the gateway without the UI via --serve, and seed the key vault from environment variables with --load-vault for scripting and CI.
Production-grade resilience
Exponential-backoff retries with jitter, honest OpenAI-format error mapping, and client disconnects that cancel the upstream call in under one second.
How It Works
SwiftNIO HTTP server
An HTTP/1.1 server built on structured concurrency with one task per connection and a spec-exact SSE writer; disconnects propagate as cancellation into the upstream transfer.
RequestRouter
Resolves namespaces, aliases, fallback chains, and capability gates to pick the upstream provider and model for every request.
Translation layer
Fixture-tested state machines — AnthropicTranslator, GeminiTranslator, and a CompatAdjuster with per-provider parameter tables — iron ten providers' quirks into exact OpenAI chunks.
Upstream calls and vault
Requests go straight from your Mac to the provider using keys from the AES-256-GCM vault; no middleman, no telemetry, no accounts.
Local persistence
JSON documents in Application Support and keys in vault.zq with a machine-bound HKDF key — no Keychain, no plaintext, ever.
Tech Stack
Native App
Security
Compatibility
Tooling
Highlights
- Every release drives all 170 catalog models through the endpoint with the official OpenAI Python SDK — streaming discipline, tool calling, vision, and reasoning — and the matrix is 170/170 green.
- 100% native Swift with zero heavyweight dependencies: SwiftNIO, swift-nio-extras, and swift-markdown. No Electron, no Python sidecar, no Docker.
- Provider quirks like Together's eos finish reason, Mistral thinking arrays, and Perplexity's non-spec done events are all normalized into the spec.
- LAN exposure is an explicit opt-in that requires at least one local API key; logging redacts request bodies by default.
- Developer ID signed, notarized, and stapled universal binary — Gatekeeper opens it without warnings on macOS 13+.
- Ships with a menu bar extra, a Command-K palette, and copy-as-code snippets for curl, Python, and JavaScript pre-filled with your port.