Which AI models will actually run on your machine — rated from "won't run" to "blazing", from real on-device measurements, not spec-sheet guesses.
A Claude-Code-style terminal chat app that profiles your hardware, ranks every open model for your box, and lets you pull, run, and talk to them — with tools, slash commands, and permission modes. Also comes as a desktop app. No account, no telemetry, nothing leaves your machine.
Pick your platform. Prebuilt installers are published on the Releases page and built automatically by CI whenever a version is tagged.
curl -LO https://github.com/vafc21/llamachat/releases/latest/download/LlamaChat_amd64.deb
sudo apt install ./LlamaChat_amd64.debAfter install, run llamachat from any terminal. The .deb registers the binary on $PATH and adds a desktop entry so LlamaChat appears in your app launcher.
curl -LO https://github.com/vafc21/llamachat/releases/latest/download/LlamaChat.x86_64.rpm
sudo rpm -i LlamaChat.x86_64.rpmcurl -LO https://github.com/vafc21/llamachat/releases/latest/download/LlamaChat_amd64.AppImage
chmod +x LlamaChat_amd64.AppImage
./LlamaChat_amd64.AppImageThe AppImage bundles everything — no package manager needed. Optionally move it to ~/.local/bin/ for the CLI, or run it as-is for the GUI.
Coming soon — track this issue.
If you have Rust installed, you can also build and install the CLI-only binary (no desktop GUI) straight from crates.io:
cargo install llamachat
llamachatThis only builds the terminal UI and core engine — no webkit2gtk or desktop deps required.
Download the .dmg from the Releases page, open it, and drag LlamaChat to your Applications folder.
The app is currently unsigned, so the first time you launch it:
- Right-click the app in Finder
- Choose Open
- Click Open in the dialog
If macOS still blocks it ("LlamaChat is damaged and can't be opened" on newer versions), clear Apple's quarantine flag from a terminal, then open it normally:
xattr -dr com.apple.quarantine /Applications/LlamaChat.appPermissions stuck on "not granted"? Unsigned builds leave stale macOS privacy (TCC) entries, so Accessibility / Screen Recording read as denied no matter how many times you grant them. Reset this app's permissions, then grant again:
tccutil reset All org.llamachat.app(Or click Reset permissions on the app's setup screen — it runs the same thing.) After granting, quit and reopen LlamaChat — macOS only applies Screen Recording after a relaunch (the Restart button does this for you).
This is normal for open-source software. See docs/SIGNING.md for the path to signed, warning-free releases.
Download either the .exe installer or the .msi from the Releases page.
.exe— standard Windows installer, double-click to run..msi— enterprise deployment, Group Policy compatible.
Windows may show "Windows protected your PC" on first launch. Click More info → Run anyway. Again, normal for unsigned open-source builds.
Terminal UI — the default experience. Run llamachat in any terminal:
- Hardware profiling on your machine (CPU, GPU, VRAM, RAM, instruction sets)
- Catalog of open models rated Won't run → Blazing for your box
- One-Enter download — press Enter on a model, it pulls via Ollama with live progress
- Full-screen chat with streaming token-by-token replies
- Slash commands — type
/for the palette:/help,/tools,/permissions,/effort,/clear,/retry,/status,/mode,/quit - Tools — the model can run shell commands, read/write files, and inspect processes
- Permission modes (Shift+Tab to cycle):
⏸ manual— asks before every action (default)✎ accept-edits— auto-approves file edits and safe commands◎ plan— read-only, all writes denied▶ auto— everything auto-approved⚠ bypass— no prompts at all
- Effort levels —
/effort low | medium | high | maxcontrols how hard the model reasons
Desktop app — same engine, in a native window (Tauri + React GUI).
The assistant can search the web and read pages — but only after you give it a search backend. There is no bundled default: shipping one would route every user's queries through a service chosen for them, and scraping a public engine isn't reliable (DuckDuckGo's HTML endpoint now answers with an anti-bot challenge). You pick who sees your searches.
Pick one:
| Backend | Privacy | Cost | Setup |
|---|---|---|---|
| SearXNG (recommended) | Best — you host it, nothing leaves your network | Free | Run an instance, paste its URL |
| Brave Search API | Brave sees your queries | Free tier | Get a key at brave.com/search/api |
Desktop app: Settings → Web research. Paste the URL or key, then click Test — it runs a real search and tells you what came back.
Terminal: set an environment variable before launching.
export LLAMACHAT_SEARXNG_URL=http://localhost:8888
# or
export LLAMACHAT_BRAVE_API_KEY=your-key-here
# verify it works:
llamachat tools web_search -a '{"query":"rust release notes"}'Self-hosting SearXNG with Docker:
docker run -d -p 8888:8080 -v "$PWD/searxng:/etc/searxng" \
--name searxng searxng/searxng
# SearXNG ships with formats: [html] only — add json, then restart:
sed -i 's/^ - html$/ - html\n - json/' searxng/settings.yml
docker restart searxngThat
jsonline is required. Without it SearXNG answers LlamaChat with an HTTP 403 and the Test button will tell you exactly that.
When no backend is configured the assistant says so and declines to guess, rather than inventing an answer that needed current information.
# 1. Install (Linux .deb)
curl -LO https://github.com/vafc21/llamachat/releases/latest/download/LlamaChat_amd64.deb
sudo apt install ./LlamaChat_amd64.deb
# 2. Make sure Ollama is running (needed to run models)
ollama serve &
# 3. Launch
llamachatArrow-key through the onboarding, pick a model on the Models tab, hit Enter to download, then r to chat.
The desktop app (LlamaChat in your launcher) gives you the same hardware ratings in a graphical window — same core engine underneath.
Want to build it yourself? The core + CLI are pure Rust (no GUI deps), so this works anywhere:
git clone https://github.com/vafc21/llamachat.git
cd llamachat
cargo build --release
./target/release/llamachatFor the full desktop app, install the Tauri system deps first, then build the workspace:
# Ubuntu / Debian
sudo apt install -y \
libwebkit2gtk-4.1-dev libgtk-3-dev \
libayatana-appindicator3-dev librsvg2-dev \
libsoup-3.0-dev libjavascriptcoregtk-4.1-dev
# Everything (CLI + desktop)
cargo build --release -p llamachatThe UI and Python sidecar have their own dev loops — see Dev setup below.
Plenty of tools will tell you what might fit your GPU. LlamaChat is built around one thing none of them fully do: an owned, clean-room, on-device measured benchmark loop.
| LlamaChat | whichllm | LLMFit | Run This LLM | |
|---|---|---|---|---|
| On-device measured speed | ✅ owned harness | ❌ external quality leaderboards | ❌ spec estimates | |
| Clean-room "Full Test" mode | ✅ | ❌ | ❌ | ❌ |
| Live cloud comparison | ✅ | ❌ | ❌ | ❌ |
| Local-first terminal + desktop | ✅ both | ❌ (CLI) | ❌ (TUI/web) | ❌ (web) |
| "Won't run → Blazing" tiers | ✅ | fit ranking | fit/speed scores | estimates |
| License | Apache-2.0 | MIT | MIT | not OSS |
The differentiator: an end-to-end benchmark loop we own (rather than delegating to a third-party runtime or pulling numbers from a community DB), a native local-first app with explicit Won't run → Blazing tiers, and a live, honest cloud comparison. That combination is genuine whitespace — see RECON.md for the full competitive teardown.
+-------------------------------------------------------------+
| Desktop UI |
| (onboarding wizard, dashboard, compare view, settings) |
+----------------------------+--------------------------------+
| IPC (Tauri commands)
+----------------------------v--------------------------------+
| Core Engine (Rust) |
| |
| +------------------+ +-----------------+ +-------------+ |
| | Hardware Profiler| | Benchmark Engine| | Recommender | |
| +------------------+ +-----------------+ +-------------+ |
| | | | |
| +--------v-------------------v------------------v--------+ |
| | Local Store (SQLite) | |
| | hardware profile, benchmark history, model catalog | |
| +------------------------------------------------------+ |
| | |
| +--------v----------------------------------------------+ |
| | Runtime Adapters (pluggable, via Python sidecar) | |
| | Ollama | llama.cpp | vLLM | LM Studio | MLX | |
| +------------------------------------------------------+ |
+-------------------------------------------------------------+
The core engine is pure Rust with no GUI dependencies, so it builds and runs anywhere (CI, headless servers, machines without webkit2gtk). The Tauri shell and the llamachat CLI both depend on it. Benchmark orchestration lives in a Python sidecar so a new runtime backend is one Python file.
See SPEC.md for the full design and CONTRACT.md for the frozen inter-module interfaces.
| Layer | Choice |
|---|---|
| Desktop shell | Tauri — small, fast, cross-platform binary |
| Core engine | Rust (llamachat-core) — hardware probing, catalog, recommender, store |
| CLI | Rust (llamachat-cli) + clap |
| Benchmark sidecar | Python 3.11+ (llamachat_sidecar) |
| UI | React + Tailwind + Vite |
| Local store | SQLite (bundled via rusqlite, no server) |
llamachat/
Cargo.toml # workspace; default-members = core + cli (build w/o webkit)
crates/
llamachat-core/ # pure-Rust lib: types, hardware, catalog, recommend, store
llamachat-cli/ # `llamachat` binary — exercises the core without the GUI
catalog/models.json # bundled model data
sidecar/ # Python benchmark orchestration
ui/ # React + Tailwind + Vite dashboard
src-tauri/ # Tauri shell (added once scaffolded; needs webkit2gtk)
LlamaChat builds from one codebase for macOS, Windows, and Linux (Tauri v2). macOS and Windows are fully implemented; Linux is scaffolded and building (with a working vision fallback). See docs/PLATFORMS.md for the full per-platform status matrix and build steps.
- Rust — install via rustup
- Node 24+ — for the UI
- Python 3.11+ — for the benchmark sidecar
- Ollama (optional) — only needed to run models (ollama.com)
The core and CLI are pure Rust and build with no system GUI dependencies:
cargo buildTry the CLI:
cargo run -p llamachat-cli # interactive terminal UI
cargo run -p llamachat-cli -- profile # detect hardware, print JSON
cargo run -p llamachat-cli -- catalog # print the bundled model catalog
cargo run -p llamachat-cli -- recommend # ranked recommendations (best-first), JSON
cargo run -p llamachat-cli -- store-info # round-trip a profile through the storeThe installed binary is named llamachat.
Running llamachat in a terminal launches a full-screen, Claude-Code-style
interface built on ratatui: an animated llama mascot, an
arrow-key onboarding wizard, then a tabbed view of your machine and every catalog
model rated Won't run → Blazing for this box — all driven by the same core
engine, no mock data.
On the Models tab, Enter downloads a model (live ollama pull progress,
auto-starting the Ollama daemon) and r opens a full-screen chat:
responses stream token-by-token straight from Ollama's /api/chat, with a /
slash-command palette (↑/↓ to pick, Tab to complete), markdown rendering, and the
mascot spinner while it thinks. Esc interrupts a reply or returns to the model
list.
Tools & permissions. The model can run shell commands and read/write
files through the core tool engine. Claude-Code-style permission modes control
what runs without asking: ⏸ manual (ask every time, default), ✎ accept-edits
(auto-approve safe commands + file work), ◎ plan (read-only), ▶ auto
(everything auto-approved), ⚠ bypass (no prompts). Cycle modes with
Shift+Tab. Type /permissions to manage rules, /effort to set reasoning
depth.
Slash commands (type / for the filterable palette): /help · /commands ·
/tools · /permissions · /effort · /mode · /clear · /retry ·
/model · /status · /quit. Use a tool-capable model (e.g. Llama 3.2,
Qwen 2.5) for tool use.
Verify the layout without a live terminal (handy on headless hosts / CI):
llamachat tui --selftest --screen main --size 100x30
# screens: splash | theme | profiling | ollama | models | hardware | about | chatwelcome | chatmsgcd ui
npm install
npm run devThe UI ships a typed mock data layer (ui/src/lib/api.ts) so it renders with
sample data when run standalone (outside Tauri, i.e. window.__TAURI__ absent).
cd sidecar
pip install -e .
python -m llamachat_sidecar list-adaptersThe full desktop app needs the platform webview toolkit (see From source above):
cargo build -p llamachatOn hosts without webkit2gtk, plain
cargo buildstill works — it builds only the pure-Rust core + CLI, because they are the workspace'sdefault-members.
Phase 1 (MVP) scope and where each piece currently stands:
- ✅ Hardware profiler — CPU/GPU/RAM/storage/OS detection via
sysinfo+nvidia-smi - ✅ Ollama adapter — Python sidecar with full ollama integration and benchmark harness
- ✅ Quick benchmark — background tokens/sec, TTFT, memory headroom via ollama generate API
- ✅ Model catalog — 14 bundled open models with quants, quality scores, and ollama pull tags
- ✅ Recommendation engine — 5-tier "Won't run → Blazing" ratings with human-readable why
- ✅ Dashboard UI — React + Tailwind with hardware panel, tiered recs, onboarding wizard
- ✅ CLI —
profile/catalog/recommend/store-infoall wired to real implementations - ✅ Tauri shell — scaffolded with IPC commands, background benchmark events, consent flow
- ✅ Shared type contract —
types.rs+CONTRACT.mdfrozen across all modules - ✅ Tool system — sidecar exposes a
shelltool; local models emit structured{"tool": ...}calls - ✅ Agent loop — sidecar drives the model→tool→result cycle for on-device agentic runs
- ✅ Terminal UI — full Claude-Code-style TUI with chat, slash palette, tools, permission modes
- ✅ Cross-platform installers —
.deb,.rpm,.AppImage,.dmg,.exe,.msibuilt by CI
Licensed under the Apache License, Version 2.0.