DEV Community

ruvian fabrin
ruvian fabrin

Posted on

Building a Free, Local Coding Agent with Tauri, Rust, and Vue

I've been building Cerne Code — a free, open-source desktop coding agent that runs 100% locally. Think "Claude Code" as a desktop app, but free and compatible with Ollama, llama.cpp, LM Studio, and any OpenAI-compatible API.

This post covers the architecture, key technical decisions, and what I learned along the way.

Stack

  • Tauri v2 (Rust backend) — native Windows app, ~5MB binary
  • Vue 3 + PrimeVue — reactive frontend with a polished UI
  • Multiple model providers — same chat completions protocol for all 4

What it does

The agent can read, edit, and create files (with a sandbox + diff review), run commands (including background dev servers), search the web (multi-engine, no API key needed), generate documents (Excel, Word, PDF, PowerPoint), control the screen via computer_use, and delegate subtasks to sub-agents.

Architecture highlights

Tool execution loop: Each turn, the model decides which tool to call. The loop runs in a background async task — the UI gets progress events via Tauri's event system.

Sandboxed editing: Every write_file/edit_file goes to a project-side sandbox first. The user approves/rejects each diff before anything touches the real file.

Pipeline Dev→QA→Analyst: The agent can implement something, then a skeptical verifier confirms with real tests before declaring success. If it fails, it loops back to the dev phase.

Multi-engine web search: DuckDuckGo + Brave + Mojeek aggregated, with dedup and ranking by consensus. No API key needed by default.

Audio input & TTS: Speak instead of typing. Listen instead of reading.

Skills, Agents & Personas: Reusable instruction files, specialized sessions, and custom personas with their own tone.

Local model benchmark

I tested 12 local models on tool-calling ability. The winner: gemma4-e4b-qat-mtp via TurboQuant (llama.cpp fork) — 60/60 on 6 tool tasks, 0.2s per call. Full benchmark in the README.

Why Tauri over Electron

Rust compilation is slower to iterate on, but the resulting binary is ~5MB vs Electron's 150MB+. Memory usage is also significantly lower — the app idles at ~80MB.

Open source

MIT license. Download, fork, contribute.

🔗 https://github.com/RuvianFabrin/cerne-code
🔗 https://ruvianfabrin.github.io/cerne-code.html

Top comments (0)