Private, on-device AI desktop app — GGUF (llama.cpp) & MLX, running Muse-Glimmer and Qwen3.8 with their native reasoning-effort ladders wired in as real controls. Local coding agent, RAG knowledge base, Deep Research, vision and voice. 100% offline, no account, no telemetry. Windows & macOS.
See the codeEnglish · 简体中文 · Português (BR)
Chaty runs open LLMs 100% offline in a polished desktop app. No account, no cloud, no telemetry — with a local coding agent, a document knowledge base, Deep Research, and hands-free voice built right in.
↓ Download · Website · Docs · Chaty model on Hugging Face
A local coding agent — searches GitHub, reads the source, edits your files, and runs the tests. All on your machine.
Some models ship a native reasoning-effort ladder they were trained to obey —
Qwen3.8 has three rungs (low · medium ·
xhigh), Muse-Glimmer four (low ·
medium · high · xhigh). The rung arrives as a chat-template kwarg, so a runtime that
doesn't know about it silently gets the default and you wait through maximum-length thinking
for "what's 2 + 2".
Chaty treats the ladder as a control you actually turn:
|
Same question, same seed, one rung apart — Qwen3.8-27B (8-bit MLX, 48 GB Apple Silicon):
Five times the wait, or five times the deliberation — your call, per message. |
Flip the Chat · Code switch and Chaty becomes an agent for your codebase. Point it at a folder, describe the task, and it explores, edits, and verifies the project by itself — every step shown live, every change behind an approval + diff.
understand_repo orients in one call, search_code ranks files by relevance, read_file lifts a single symbol plus its call sites, validate_change runs just the tests the change touches. Small models spend their steps on decisions, not grunt work.SKILL.md of procedural steps in ~/.chaty/skills/ (or per-project) and the agent loads it only when relevant; remember saves non-obvious findings to .chaty/memory/ so the next session starts knowing them. Plain markdown, human-editable, never leaves the machine.search_files finds by name or content; file outlines navigate big files; failed patches get “did-you-mean” hints.search_code + knowledge-base search_docs, and loop-breaking for repetitive small models.sudo command asks first with a secure password prompt; downloads land in the workspace and are covered by checkpoints too.One local model for every row — Qwen3.5-35B-A3B (MoE, ~3 B active per token), mxfp8 on MLX, reasoning off, entirely on one machine:
| SWE-bench Verified — 45-task macOS-validated subset | Resolved |
|---|---|
| Chaty agent (v1.9) — the full tool loop, 16K context | 15/45 (33 %) |
| qwen-code 0.20 — the model family's own CLI (needs 32K) | 12/45 (27 %) |
| pi 0.81 — minimal 4-tool agent CLI | 10/45 (22 %) |
| opencode 1.18 | 7/45 (16 %) |
| bare bash agent — single-tool ablation | 6/45 (13 %) |
Same model, same tasks, same grading, one machine — five agent designs. Chaty leads the field, including the model family's own first-party CLI (qwen-code) while using half its context window, and resolves 2.5× the bare-bash ablation. That's the design thesis measured: with frontier models a thin scaffold is enough — on small local models, the intelligence has to live in the tools (repo-aware search, symbol reads, precise edits, recovery guards, post-edit diagnostics). Methodology, per-agent configs, and honest-comparison notes (subset, macOS harness — not comparable to leaderboard numbers): docs/BENCHMARKS.md.
.html.![]() | ![]() |
<think> panel that follows the model's reasoning as it generates.Load a vision model (its weights and mmproj encoder live together in one folder, paired automatically) and image understanding turns on everywhere:
view_image; the composer takes images and documents just like chat.Text-only models keep the OCR path, so nothing regresses — and updating from an older version, a one-time prompt tidies your existing loose .gguf files into the one-folder-per-model layout with a single click.
| ![]() |
![]() |
|
| ![]() |
Offline-first. The network is used only for optional web search and one-time model downloads.
Grab the latest build from the Releases page:
| Platform | File | Notes |
|---|---|---|
| Windows x64 | Chaty_*_x64-setup.exe | Per-user installer — no admin required |
| macOS (Apple Silicon) | Chaty_*_aarch64.dmg | See the first-launch note below |
macOS first launch. Chaty is ad-hoc signed but not notarized (there's no paid Apple Developer account behind it), so Gatekeeper warns on first open. The app is safe — everything runs locally. Clear the download quarantine once:
xattr -dr com.apple.quarantine /Applications/Chaty.app
then open Chaty normally. (Or: open it, dismiss the warning, and choose System Settings → Privacy & Security → Open Anyway.) On macOS the writable models folder lives in app data — use Open models folder in the model menu — or point it at another drive with Settings → Model → Models folder → Change location.
Full details in BUILD.md.
# Windows
npm install
.\dev.ps1 # dev
npm run tauri build -- --no-bundle # release exe → compile the Inno installer
# macOS (Apple Silicon)
npm install
npm run tauri dev # dev (Metal)
npm run tauri build # → .app + .dmg
Releases are produced by CI: bump with scripts/bump-version.sh x.y.z, then push a vx.y.z
tag — GitHub Actions builds both installers onto a single release.
| Layer | Stack |
|---|---|
| Shell | Tauri 2 — system tray, global shortcut, single-instance |
| Frontend | React 19 · Vite · react-markdown · KaTeX |
| Inference | Rust · llama-cpp-2 (llama.cpp) — Vulkan (Windows) / Metal (macOS) · MLX via an mlx-swift-lm sidecar (Apple Silicon) |
| Voice | sherpa-rs (ONNX Runtime, CPU) — Whisper (base.en for English, multilingual base for Chinese) + Kokoro-82M and a VITS Chinese voice |
| Knowledge base | bge-m3 embeddings + BM25 · hybrid RRF / MMR retrieval · SQLite vector store |
| Storage | SQLite — conversations, messages, full-text search |
MIT — see LICENSE. Built with llama.cpp, Tauri, and sherpa-onnx.
TypeScript
46.8%
Rust
38.9%
Swift
5.0%
CSS
4.0%
Python
3.4%
Private, on-device AI desktop app — GGUF (llama.cpp) & MLX, running Muse-Glimmer and Qwen3.8 with their native reasoning-effort ladders wired in as real controls. Local coding agent, RAG knowledge base, Deep Research, vision and voice. 100% offline, no account, no telemetry. Windows & macOS.
See the codeEnglish · 简体中文 · Português (BR)
Chaty runs open LLMs 100% offline in a polished desktop app. No account, no cloud, no telemetry — with a local coding agent, a document knowledge base, Deep Research, and hands-free voice built right in.
↓ Download · Website · Docs · Chaty model on Hugging Face
A local coding agent — searches GitHub, reads the source, edits your files, and runs the tests. All on your machine.
Some models ship a native reasoning-effort ladder they were trained to obey —
Qwen3.8 has three rungs (low · medium ·
xhigh), Muse-Glimmer four (low ·
medium · high · xhigh). The rung arrives as a chat-template kwarg, so a runtime that
doesn't know about it silently gets the default and you wait through maximum-length thinking
for "what's 2 + 2".
Chaty treats the ladder as a control you actually turn:
|
Same question, same seed, one rung apart — Qwen3.8-27B (8-bit MLX, 48 GB Apple Silicon):
Five times the wait, or five times the deliberation — your call, per message. |
Flip the Chat · Code switch and Chaty becomes an agent for your codebase. Point it at a folder, describe the task, and it explores, edits, and verifies the project by itself — every step shown live, every change behind an approval + diff.
understand_repo orients in one call, search_code ranks files by relevance, read_file lifts a single symbol plus its call sites, validate_change runs just the tests the change touches. Small models spend their steps on decisions, not grunt work.SKILL.md of procedural steps in ~/.chaty/skills/ (or per-project) and the agent loads it only when relevant; remember saves non-obvious findings to .chaty/memory/ so the next session starts knowing them. Plain markdown, human-editable, never leaves the machine.search_files finds by name or content; file outlines navigate big files; failed patches get “did-you-mean” hints.search_code + knowledge-base search_docs, and loop-breaking for repetitive small models.sudo command asks first with a secure password prompt; downloads land in the workspace and are covered by checkpoints too.One local model for every row — Qwen3.5-35B-A3B (MoE, ~3 B active per token), mxfp8 on MLX, reasoning off, entirely on one machine:
| SWE-bench Verified — 45-task macOS-validated subset | Resolved |
|---|---|
| Chaty agent (v1.9) — the full tool loop, 16K context | 15/45 (33 %) |
| qwen-code 0.20 — the model family's own CLI (needs 32K) | 12/45 (27 %) |
| pi 0.81 — minimal 4-tool agent CLI | 10/45 (22 %) |
| opencode 1.18 | 7/45 (16 %) |
| bare bash agent — single-tool ablation | 6/45 (13 %) |
Same model, same tasks, same grading, one machine — five agent designs. Chaty leads the field, including the model family's own first-party CLI (qwen-code) while using half its context window, and resolves 2.5× the bare-bash ablation. That's the design thesis measured: with frontier models a thin scaffold is enough — on small local models, the intelligence has to live in the tools (repo-aware search, symbol reads, precise edits, recovery guards, post-edit diagnostics). Methodology, per-agent configs, and honest-comparison notes (subset, macOS harness — not comparable to leaderboard numbers): docs/BENCHMARKS.md.
.html.![]() | ![]() |
<think> panel that follows the model's reasoning as it generates.Load a vision model (its weights and mmproj encoder live together in one folder, paired automatically) and image understanding turns on everywhere:
view_image; the composer takes images and documents just like chat.Text-only models keep the OCR path, so nothing regresses — and updating from an older version, a one-time prompt tidies your existing loose .gguf files into the one-folder-per-model layout with a single click.
| ![]() |
![]() |
|
| ![]() |
Offline-first. The network is used only for optional web search and one-time model downloads.
Grab the latest build from the Releases page:
| Platform | File | Notes |
|---|---|---|
| Windows x64 | Chaty_*_x64-setup.exe | Per-user installer — no admin required |
| macOS (Apple Silicon) | Chaty_*_aarch64.dmg | See the first-launch note below |
macOS first launch. Chaty is ad-hoc signed but not notarized (there's no paid Apple Developer account behind it), so Gatekeeper warns on first open. The app is safe — everything runs locally. Clear the download quarantine once:
xattr -dr com.apple.quarantine /Applications/Chaty.app
then open Chaty normally. (Or: open it, dismiss the warning, and choose System Settings → Privacy & Security → Open Anyway.) On macOS the writable models folder lives in app data — use Open models folder in the model menu — or point it at another drive with Settings → Model → Models folder → Change location.
Full details in BUILD.md.
# Windows
npm install
.\dev.ps1 # dev
npm run tauri build -- --no-bundle # release exe → compile the Inno installer
# macOS (Apple Silicon)
npm install
npm run tauri dev # dev (Metal)
npm run tauri build # → .app + .dmg
Releases are produced by CI: bump with scripts/bump-version.sh x.y.z, then push a vx.y.z
tag — GitHub Actions builds both installers onto a single release.
| Layer | Stack |
|---|---|
| Shell | Tauri 2 — system tray, global shortcut, single-instance |
| Frontend | React 19 · Vite · react-markdown · KaTeX |
| Inference | Rust · llama-cpp-2 (llama.cpp) — Vulkan (Windows) / Metal (macOS) · MLX via an mlx-swift-lm sidecar (Apple Silicon) |
| Voice | sherpa-rs (ONNX Runtime, CPU) — Whisper (base.en for English, multilingual base for Chinese) + Kokoro-82M and a VITS Chinese voice |
| Knowledge base | bge-m3 embeddings + BM25 · hybrid RRF / MMR retrieval · SQLite vector store |
| Storage | SQLite — conversations, messages, full-text search |
MIT — see LICENSE. Built with llama.cpp, Tauri, and sherpa-onnx.
TypeScript
46.8%
Rust
38.9%
Swift
5.0%
CSS
4.0%
Python
3.4%