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

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

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

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

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

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

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

Swift 6
SwiftUI
macOS 14+
Apple Silicon (arm64)

Inference

Apple MLX
mlx-swift-lm
swift-transformers
swift-huggingface

Core

Swift actors
AsyncThrowingStream
Custom URLSession transport (Range-resumable)
swift-markdown

Quality

--verify end-to-end harness
Developer ID signed + notarized + stapled
Swift Package Manager (no .xcodeproj)

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

Explore Zyquo Local

100% local LLMs (MLX) — the full source is on GitHub.