Simon-Pierre Boucher
All apps & projects
Zyquo Router icon
Zyquo macOS Suite

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

  1. 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.

  2. RequestRouter

    Resolves namespaces, aliases, fallback chains, and capability gates to pick the upstream provider and model for every request.

  3. Translation layer

    Fixture-tested state machines — AnthropicTranslator, GeminiTranslator, and a CompatAdjuster with per-provider parameter tables — iron ten providers' quirks into exact OpenAI chunks.

  4. 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.

  5. 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

Swift 5.9
SwiftUI
SwiftNIO 2
Swift Package Manager
Universal binary (Apple Silicon + Intel)

Security

AES-256-GCM vault
HKDF machine-bound keys
SHA-256 hashed local API keys
Developer ID signed & notarized

Compatibility

OpenAI Chat Completions API
Anthropic Messages API
Gemini generateContent
SSE streaming

Tooling

Makefile build pipeline
Fixture-tested translators
verify.py 170-model matrix
Mock-upstream integration tests

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.

Explore Zyquo Router

Local LLM gateway — the full source is on GitHub.