A lightweight, ultra-fast local AI agent and private desktop assistant. Runs LFM3-VL-2B via llama.cpp with native browser automation
Cordial is a desktop app: a thin Rust/Tauri shell around a local agentic harness.
On first launch it downloads the Q4_K_M weights (1.1 GB) + the vision
projector (203 MB), and from then on the network is used only when the agent
searches or browses for you.
The X post from LiquidAI said it was almost as capable as GPT 5.6 Luna and i guess if it's stable enough to be in Cordial that's good.
Web fetch, navigation and search are still heavily handicapped on restricted networks.
- Answers with sources. (most of the time) The system prompt pushes the model to search before it states a fact, to open the best result, and to cite links inline.
- Uses tools honestly.
web_search,web_fetch, and a real browser driven over the Chrome DevTools Protocol (browser_open,browser_click,browser_type,browser_view). The browser returns both page text and a screenshot, so a 2B vision model can see what it is doing. - Handles what you give it. Images go to the vision encoder; text files are folded into the prompt; the model can read, list and write files inside a sandboxed workspace folder.
- Asks before it acts. Two permission modes — Auto (reads and network run, writes ask once) and Manual (everything asks) — with approvals rendered inline.
- Keeps answers short. Effort levels (Low / Medium / High) cap tool rounds, output tokens and page reads. Low effort also switches reasoning off. The default prompt asks for the answer first, no preamble, and at most three links.
- Runs offline. No telemetry, no analytics, no accounts. Nothing leaves the machine unless a web tool is called.
Download the installer for your platform from the releases page:
| Platform | Bundle | Backend |
|---|---|---|
| macOS 11+ | .dmg (arm64, x64) |
Metal |
| Windows 10/11 x64 | .msi / .exe |
CPU |
| Windows 11 arm64 | .msi |
OpenCL, CPU fallback |
| Linux x64 / arm64 | .deb / .AppImage |
CPU |
On first launch Cordial downloads the model into your app-data folder:
| OS | Location |
|---|---|
| macOS | ~/Library/Application Support/Cordial/models |
| Windows | %APPDATA%\Cordial\models |
| Linux | ~/.local/share/Cordial/models |
Downloads resume if interrupted and are verified against the SHA-256 Hugging
Face publishes for the file (pinned in crates/cordial-core/src/model_manager.rs,
not read from a response header).
Use Remove downloaded model in the sidebar before uninstalling. It deletes
only Cordial-managed model files and leaves chats and workspace files intact.
The Windows NSIS uninstaller in newer releases also removes these model files,
except during updates. MSI, macOS app removal, Linux packages and AppImages do
not automatically remove per-user model downloads. For those, use the sidebar
first or delete the models directory listed above after uninstalling.
Previously installed versions do not have the new NSIS uninstall hook.
Requirements: Rust 1.83+, Node 22+, CMake 3.16+, a C++17 compiler, and on Linux
the Tauri packages (libwebkit2gtk-4.1-dev, libgtk-3-dev, libsoup-3.0-dev,
libjavascriptcoregtk-4.1-dev, libayatana-appindicator3-dev, librsvg2-dev).
git clone https://github.com/Katsugachi/Cordial && cd Cordial
npm --prefix ui ci
npm --prefix ui run build
cargo run -p cordial-app --releaseThe first cargo build downloads llama.cpp b12020, verifies its SHA-256, and
builds static llama, ggml and mtmd libraries — about five minutes on two
cores. Set CORDIAL_LLAMA_SRC=/path/to/llama.cpp to reuse an existing checkout,
and CORDIAL_PORTABLE_CPU=1 to build without -march=native (what the release
workflow does).
The window runs without Tauri against a demo bridge:
npm --prefix ui run dev # http://localhost:1420- Ask. Enter sends, Shift + Enter adds a line. Answers stream; reasoning appears in a collapsed drawer.
- Attach. The paperclip accepts images (sent to the vision encoder) and text files (read into the prompt).
- Approve. In Manual mode each tool call shows a card with Allow and Deny. Denials are reported back to the model so it can adapt instead of retrying.
- Memory. Add or remove personal context in the sidebar. It is stored locally and included in new turns across chats. Cordial does not automatically learn or extract memories; entries are plain text, not encrypted.
- Skills. Add reusable instructions in the sidebar. They apply to new turns and do not bypass tool permissions. You can import a SKILL.md or text file into the single instruction field (maximum 4,000 characters). This does not support skill folders, bundled resources, scripts, or automatic skill discovery.
- Stop. The stop control cancels token generation through llama.cpp's abort callback, not just the UI.
- Effort. Low (≤3 tool rounds, 512 output tokens, no reasoning), Medium (≤8, 1024), High (≤16, 2048, deeper page reads).
cargo test --workspace # harness + prompt + tools (no model needed)
npm --prefix ui run test # UI reducer, renderer, window integration
cargo test -p cordial-core --test live_model -- --ignored --nocaptureThe harness tests drive the agent loop with a scripted model: tool-call round trips, approvals, denials, effort exhaustion, context-overflow trimming and cancellation all run deterministically in milliseconds.
The ignored live_model suite downloads the real weights and asserts on
behaviour: correct facts, arithmetic, reading a workspace file, honesty when the
web is off, brevity, absence of filler, and recognising the colour of an attached
image. It is the suite to run after changing the system prompt or sampler.
Each live run publishes what the model actually said to
docs/live-report.md, so prompt quality can be reviewed.
Cordial is MIT licensed (LICENSE). LFM3-VL-2B weights are released
by Liquid AI under the LFM Open License v1.0;
llama.cpp is MIT. Cordial downloads weights at runtime and does not redistribute
them.