IMURUN v0.3.0 · MIT · Windows, macOS, Linux
AI that lives
on your machine.
Local-first AI chat with its own inference engine. One process, no cloud: FISH, our C++ engine, runs GGUF models on the CPU; a Python server hosts sessions, tools and connectors; the Liquid Paper UI opens in a native window or your browser.
Install
One command, then just imurun.
Everything IMURUN writes — sessions, models, logs, settings — goes to ~/.imurun. Nothing is written into site-packages, and nothing is sent anywhere.
Python 3.11–3.14. Wheels for Windows x64, Linux x64 and macOS arm64 include the FISH engine.
Inside IMURUN
Seven parts, one window.
Memory-maps a GGUF, keeps weights quantised, quantises activations to int8 once per matmul and runs AVX2 integer dot products. A KV prefix cache makes repeated system prompts free.
Plain HTML, CSS and JavaScript, served under a strict CSP — no CDN, no remote font, nothing leaves. A native window, or your browser.
The model calls tools itself in a turn loop; anything that writes shows an approval card first. Skills and sub-agents included.
The model decides whether to search and writes the queries; what reaches it is cleaned, ranked passages with numbered sources.
Gmail, GitHub, Slack, Vercel, Render, Cloudflare, Supabase and Canva — OAuth tokens in your OS keychain.
Whisper for speech-to-text and Piper for text-to-speech, running on the machine instead of a vendor's cloud.
Thumbs-up the answers you like, teach the ones that were wrong; the tuning channel trains a LoRA on this machine, checks it did not get worse, and offers a new GGUF with a Use it button. Off by default.
How a turn works
From prompt to answer.
Should this turn search?
One short routing generation with the same local model (at most 60 tokens) decides whether the web is needed and writes the queries. Greetings and code pastes skip it entirely.
The research plannerKernel figure from the engine benchmarks (Ryzen 7 7435HS, Llama-3.2-1B Q4_K_M) — read the caveats.
Security
Private by construction.
Local is not a setting you have to find. It is how the app is built.
- Loopback onlyThe server binds to your machine, with a Host-header check.
- Per-run tokenA bearer token injected into the page — never in URLs or logs.
- Strict CSPdefault-src 'self': no CDN, no remote fonts or images.
- KeychainOAuth tokens live in the OS keychain, not in a file.
- Approval cardsEvery write action waits for you.
- 1 MB capRequest bodies are capped; nothing runs unbounded.
Run it
Flags, and where the engine comes from.
The pip wheels for three platforms ship the engine inside. Elsewhere the app starts and tells you how to get one.
The full setup guide →--window- native window (pywebview), the default when installed
--browser- open in your browser instead
--no-open- start the server only
--port N- choose the port
--model path.gguf- start with a model on disk
--get-engine- download the FISH engine for this platform, checksum-verified
| Platform | Engine | Built with |
|---|---|---|
| Windows x64 | fish.dll | MinGW-w64 GCC, static |
| Linux x64 | libfish.so | glibc 2.28+ |
| macOS arm64 | libfish.dylib | Apple clang |
| Everything else | — | imurun --get-engine or a source build |