D.A.R.I.A. - Discrete AI for Reasoning, Interaction & Automation is a Private, on-device AI desktop app — GGUF (llama.cpp) & MLX models, a local coding agent, RAG knowledge base, Deep Research, vision, imagegen and voice.
Rust
1
264 commits
updated Sep 10, 2026
Private, on-device AI — your models, your data, your machine. DARIA 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.
The name is an acronym for Discrete AI for Reasoning, Interaction & Automation: discrete as in local, contained, and not phoned home.
DARIA is originally based on Chaty by Fangyuan Lin.
A local coding agent — searches GitHub, reads the source, edits your files, and runs the tests. All on your machine.
Flip the Chat · Code switch and DARIA 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 ~/.daria/skills/ (or per-project) and the agent loads it only when relevant; remember saves non-obvious findings to .daria/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.Preview | code, side by side — every page opens as a split studio: live preview left, the actual source right, syntax-highlighted and palette-following. Three drag-resizable columns, fullscreen, page reload, and a Console tab for the page's logs and errors.
Point at what you mean — Inspect links the panes both ways: hover an element and the code jumps to its line; click a code line and the element flashes. Click to select (⌘/Ctrl multi-select) and your next instruction edits exactly those elements — or open the source yourself with the Edit button.
Watch the edit happen — iterations stream in Cursor-style: the code pane scans the document line by line and lands on a Changes diff (+N/−N, same language as Code mode).
Self-healing, persistent — runtime errors offer a one-click Fix (always asks first); a compat layer keeps browser-clean pages clean here too (history API, cookies, clipboard); and each reply keeps its canvas session across close/reopen, with version history, a confirmed reset, and export to a standalone .html.
<think> panel that follows the model's reasoning as it generates.src/locales/en.json.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.
Turn on Image gen in the chat tools menu (or /imagegen). Two ways to prompt: Ask the model (plain language; the chat model writes the Z-Image-Turbo prompt) or I write the prompt (your message goes straight to the generator). Hover Image gen in the tools menu to pick, or click the chip. /image a red cube on marble always sends your text as the prompt. Click the image to open it full-size in Preview. The seed is shown under the picture; click it to copy and reuse it for the next generate.
.app has no shell PATH (so Apple's /usr/bin/python3 3.9 is not mistaken for “no Python”). 3.10 through 3.14 are fine.Apple Silicon only. Needs Python 3.10+ on the Mac for the one-time engine install.
.gguf — or MLX folder — tokenizer and chat template come from the model itself; first-class handling for Llama 3, Gemma 3 / 4, and Qwen 3 / 3.5 / 3.6.Offline-first. The network is used only for optional web search, one-time model / image-engine downloads, and Edge TTS if you choose it for read-aloud.
Grab the latest build from the Releases page:
| Platform | File | Notes |
|---|---|---|
| Windows x64 | DARIA_*_x64-setup.exe | Per-user installer — no admin required |
| macOS (Apple Silicon) | DARIA_*_aarch64.dmg | See the first-launch note below |
macOS first launch. DARIA 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/Daria.app
then open DARIA 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.
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 · UI copy in src/locales/{en,zh}.json |
| 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 + Kokoro-82M · optional Microsoft Edge TTS for English read-aloud |
| 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.
Rust
42.8%
TypeScript
42.7%
Swift
6.5%
CSS
5.0%
Python
1.4%
HTML
1.1%
D.A.R.I.A. - Discrete AI for Reasoning, Interaction & Automation is a Private, on-device AI desktop app — GGUF (llama.cpp) & MLX models, a local coding agent, RAG knowledge base, Deep Research, vision, imagegen and voice.
Rust
1
264 commits
updated Sep 10, 2026
Private, on-device AI — your models, your data, your machine. DARIA 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.
The name is an acronym for Discrete AI for Reasoning, Interaction & Automation: discrete as in local, contained, and not phoned home.
DARIA is originally based on Chaty by Fangyuan Lin.
A local coding agent — searches GitHub, reads the source, edits your files, and runs the tests. All on your machine.
Flip the Chat · Code switch and DARIA 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 ~/.daria/skills/ (or per-project) and the agent loads it only when relevant; remember saves non-obvious findings to .daria/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.Preview | code, side by side — every page opens as a split studio: live preview left, the actual source right, syntax-highlighted and palette-following. Three drag-resizable columns, fullscreen, page reload, and a Console tab for the page's logs and errors.
Point at what you mean — Inspect links the panes both ways: hover an element and the code jumps to its line; click a code line and the element flashes. Click to select (⌘/Ctrl multi-select) and your next instruction edits exactly those elements — or open the source yourself with the Edit button.
Watch the edit happen — iterations stream in Cursor-style: the code pane scans the document line by line and lands on a Changes diff (+N/−N, same language as Code mode).
Self-healing, persistent — runtime errors offer a one-click Fix (always asks first); a compat layer keeps browser-clean pages clean here too (history API, cookies, clipboard); and each reply keeps its canvas session across close/reopen, with version history, a confirmed reset, and export to a standalone .html.
<think> panel that follows the model's reasoning as it generates.src/locales/en.json.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.
Turn on Image gen in the chat tools menu (or /imagegen). Two ways to prompt: Ask the model (plain language; the chat model writes the Z-Image-Turbo prompt) or I write the prompt (your message goes straight to the generator). Hover Image gen in the tools menu to pick, or click the chip. /image a red cube on marble always sends your text as the prompt. Click the image to open it full-size in Preview. The seed is shown under the picture; click it to copy and reuse it for the next generate.
.app has no shell PATH (so Apple's /usr/bin/python3 3.9 is not mistaken for “no Python”). 3.10 through 3.14 are fine.Apple Silicon only. Needs Python 3.10+ on the Mac for the one-time engine install.
.gguf — or MLX folder — tokenizer and chat template come from the model itself; first-class handling for Llama 3, Gemma 3 / 4, and Qwen 3 / 3.5 / 3.6.Offline-first. The network is used only for optional web search, one-time model / image-engine downloads, and Edge TTS if you choose it for read-aloud.
Grab the latest build from the Releases page:
| Platform | File | Notes |
|---|---|---|
| Windows x64 | DARIA_*_x64-setup.exe | Per-user installer — no admin required |
| macOS (Apple Silicon) | DARIA_*_aarch64.dmg | See the first-launch note below |
macOS first launch. DARIA 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/Daria.app
then open DARIA 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.
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 · UI copy in src/locales/{en,zh}.json |
| 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 + Kokoro-82M · optional Microsoft Edge TTS for English read-aloud |
| 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.
Rust
42.8%
TypeScript
42.7%
Swift
6.5%
CSS
5.0%
Python
1.4%
HTML
1.1%