Zyquo Local
Every token stays on your Mac
A native macOS chat client that runs large language models 100% locally on Apple Silicon with MLX — no API keys, no cloud.
57
supported architectures
30
curated catalog models
100%
on-device inference
222.8
tok/s (Llama-3.2-1B, M5 Max)
56
prompt templates
7,300+
lines of Swift 6
Overview
Zyquo Local runs large language models entirely on-device through Apple's MLX framework. There is no server to send your prompts to: inference happens on your Mac's unified memory and GPU, and the only network calls are the model downloads you trigger yourself from Hugging Face.
The app supports 57 model architectures out of the box — Llama, Qwen, Mistral, Gemma, Phi, DeepSeek distills, gpt-oss and more — with a curated Featured catalog of 30 verified models, live Hugging Face search, and RAM verdicts (Fits / Tight / Too large) computed against your specific Mac before you download anything.
It is 7,300+ lines of Swift 6 with zero compiler warnings, built without the Xcode IDE. Generation streams with a live tokens-per-second ticker, thinking models get a collapsible thought-process section, and unloading a model provably returns gigabytes of memory to the OS.
Key Features
Fully offline inference
100% on-device generation via mlx-swift-lm — no API keys, no accounts, no telemetry; chat works completely offline once a model is downloaded.
In-app Hugging Face discovery
Live search across the Featured catalog, mlx-community, and all MLX-tagged repos, with gated-repo and unsupported-architecture warnings on every card.
Industrial-grade download manager
Pause, resume, and cancel per model; HTTP Range resume that survives app restarts; automatic retry with backoff; disk-space pre-checks before a single byte.
RAM verdicts everywhere
A MemoryAdvisor reads your Mac's physical memory and stamps every model Fits, Tight, or Too large — you never download something you can't run.
Reasoning display
Think-tag output from DeepSeek-R1 distills, Qwen3 thinking mode and QwQ-class models streams into a collapsible thought-process section, parsed incrementally.
First-class generation stats
Tokens per second, token count, and time-to-first-token under every response, plus peak-memory tracking per generation and a live context-usage bar.
Verifiable memory hygiene
One model loaded at a time with explicit Load/Unload — unloading measurably returns memory to the OS, from gigabytes down to kilobytes.
Compare two models
Race two local models side-by-side on the same prompt with independent streaming and stats, RAM-gated so you can't load a pair your memory can't hold.
Quick Chat from anywhere
A global ⌥Space Spotlight-style floating panel for one-shot questions to the loaded model, from any app, with no accessibility permissions needed.
How It Works
InferenceEngine actor
All inference lives behind one Swift actor with states flowing unloaded → loading → ready ⇄ generating; generation is an AsyncThrowingStream of token, stats, and finish events, and cancellation genuinely stops the GPU loop.
Hub layer
HubService, DownloadManager, FileTransfer and ModelStore handle discovery and delivery: chunked, delegate-backed downloads with atomic .partial-to-final completion and per-file size verification.
ChatController with think-parser
Streams tokens into the UI while incrementally parsing <think> tags — robust even when tags split across token chunks — and manages KV-cache reuse across turns with automatic oldest-turn truncation.
MemoryAdvisor
Reads physical memory and current pressure to gate model loads, stamp catalog entries with Fits/Tight/Too-large verdicts, and RAM-gate compare mode.
Verification harness
ZyquoLocal --verify downloads real models through the app's own pipeline and checks loading, deterministic generation, multi-turn recall, streaming cancellation, and memory release.
Tech Stack
App
Inference
Core
Quality
Highlights
- No server exists to read your prompts — conversations, tokens, and system prompts never leave the machine
- Every Featured-catalog repo ID and download size verified against the live Hugging Face Hub (30/30)
- Verified on an Apple M5 Max: up to 222.8 tok/s on Llama-3.2-1B and 0.08 s time-to-first-token on Qwen3-0.6B
- Built with plain Swift Package Manager — no .xcodeproj, the Xcode IDE never required
- Developer ID signed, notarized by Apple, and stapled — installs with zero Gatekeeper warnings
- KV-cache reuse across turns means no re-prefill, with the system prompt always surviving context truncation