A desktop app for running, testing and tuning your local Ollama models.
Install · Quick start · Features · Docs · Spec
Start a chat and it asks which model to load. Then send any prompt to a benchmark and run it. Real time, nothing sped up.
Tuning a model on Ollama means bouncing between ollama list, ollama run, ollama show and a
Modelfile in another editor — slow enough that most people try one system prompt and settle.
Remuda closes the loop in one window: load a model, chat to test it, edit its Modelfile beside
the chat, save. It rebuilds through ollama create and reloads, so your next message uses the
change. Other Ollama GUIs are chat windows; this one is for the tuning.
And then for knowing whether the tuning worked. Any prompt you have already chatted can be sent to a benchmark and replayed across several configurations at once, on one pinned seed. One good answer is luck; a column of them is a reason.
Nothing leaves your machine — Remuda is a client for the Ollama you already run on 127.0.0.1.
A remuda is the herd of horses a ranch hand picks their mount from each day.
- 📝 Modelfile editor — opens beside the chat. Form and raw text stay in sync; the text is the source of truth and round-trips byte for byte. Save rebuilds and reloads.
- 🕰️ Modelfile history — every save snapshotted with a line diff. Restore loads a draft rather than rebuilding behind your back; outside edits show up as drift.
- 🏁 Benchmark — keep a set of prompts and run them against several configurations at once: two models against each other, or one model under two Modelfiles. One row per prompt, one column per lane, every answer on the same pinned seed. It shows you what differs and never scores a lane. Before it loads anything it checks whether the lane fits beside whatever you already have in memory, and offers to unload rather than letting a five-minute load fail.
- 🔀 Compare (A/B) — the same idea for a single prompt and two configurations, when you want the answer now rather than a table.
- 🧰 Tool playground — for models that claim
tools: write schemas and see everytool_callvalidated field by field. - 🎛️ Per-chat parameters — temperature, seed and the rest for the current chat only, with Bake into Modelfile when one earns its place.
- 🍴 Save as… — fork a tuned variant, optionally quantised, as a real file on disk.
- 📊 Fit predictor and telemetry — will this model at this context fit in GPU memory, and once loaded, where it actually landed. Figures that can't be read honestly are absent, never zero.
- ➕ The rest — model load pane with variants grouped under their base, saved chats, streaming
with cancel, folded reasoning blocks, vision, pull with per-layer progress, per-reply stats, and
Copy as
curl/ Promote toSYSTEM/ Re-roll.
The docs site covers all of it in detail.
Ollama running locally, plus either macOS 12+ on Apple Silicon or a glibc-based x86-64 Linux with GTK 3 and WebKitGTK 4.1 (Ubuntu 22.04 and newer, and equivalents). Remuda is a client — it doesn't bundle models or run inference itself.
brew install ollama
ollama servebrew install --cask --force magna-nz/tap/remudaThat pulls in magna-nz/homebrew-tap on the way, so
there's no separate brew tap step. The build is unsigned, but the cask clears the quarantine
flag, so the app just launches. Then brew upgrade --cask --force remuda and brew uninstall --cask remuda do what you'd expect.
x86-64, glibc 2.35+ (Ubuntu 22.04 and newer, Debian 12, Fedora 36+, and equivalents). Grab the
.deb or the AppImage from the latest release:
sudo apt install ./Remuda_*_amd64.debOr, for anything not Debian-based, the AppImage runs as-is:
chmod +x Remuda_*_amd64.AppImage && ./Remuda_*_amd64.AppImageOllama on Linux usually runs as a systemd service. If Remuda says it isn't running:
sudo systemctl start ollamaOr from source:
git clone https://github.com/magna-nz/remuda.git
cd remuda/app && npm install
cd ../src-tauri && cargo tauri dev- Start Ollama with
ollama serve. Remuda's connection pill goes green. - Hit + New → New chat. With nothing in memory it asks which model to load and binds the chat to it; with one already loaded it just starts. (The model control in the top bar still loads one directly if you'd rather.)
- Say hello.
- Not the behaviour you wanted? Click the pencil, edit the system prompt, Save. The model reloads and your next message uses it.
- Happy with it? Save as… keeps it as a named variant, original left alone.
- Sure it's better? Put the variant and the original in a benchmark as two lanes and run your prompts through both. One good answer is luck; a column of them is a reason.
No models installed yet? The load pane offers Pull your first model.
First run offers a five-step tour, and every pane has a ? if you'd rather read one later.
- magna-nz.github.io/remuda — the user guide.
SPEC.md— full product spec: every surface, the Ollama calls behind it, the Modelfile sync contract.docs/SPEC-tuning.md— the tuning loop, with the build log at the end.docs/SPEC-round-two.md— layer offload, constrained output, the rendered prompt, the help layer and Benchmark, with that round's build log.docs/mockup.html— the design mockup the app is built to.docs/mockup-new-menu.html— the + New menu and the memory check before a benchmark run, with the reasoning behind each call.packaging/homebrew/— release and tap mechanics.
You'll need Node 22+ and a Rust toolchain.
cd app
npm run typecheck && npm test && npm run buildFor the desktop shell, cargo check or cargo tauri dev from src-tauri/. CI runs both sets of
gates plus cargo fmt --check and cargo clippy -D warnings.
MIT.