Project
Where the work actually is
Runlix is a rewrite in progress: an orchestrator of other people's tools becoming an engine of its own. The phases, what each one closed, and what is still open.
Updated 2026-09-12Measured 2026-09-12
Runlix did not start as Runlix. It started as OllamaManager, an application that supervised Ollama, an MLX server, an embedding server and Open WebUI, and shipped a 598 MB Python interpreter to do it.
That was a working product and a commercial dead end. Open WebUI's licence forbids removing its branding above fifty users. The bundled interpreter was pinned to Python 3.12 by Open WebUI. And with Ollama, MLX and Open WebUI taken out, what remained was not a product. So the decision was to build the engine instead of conducting other people's.
The rename went through an intermediate name — you may still find elema in a git remote or a
database directory. The product is Runlix.
Where this page gets its facts
The history above is written here, because it does not change. Everything below it — the phases, how far each one got, and what is honestly still open — is read from the project's own repository, every fifteen minutes.
That is not a technical detail, it is the whole point of the page. A roadmap kept in the website's own text is a roadmap that goes stale: closing a phase would mean rewriting five translated files, nobody doing the work does that, and within a month the page is confidently describing a product that no longer exists. Here a phase closes once, where it closes. An issue that gets fixed stops being listed the day it is closed, without anyone remembering to delete a paragraph.
The phases are the repository's milestones; the open limits are its issues carrying a known-limit label. One consequence is visible and was chosen on purpose: that text is written once, in one language, and it appears the same on all five versions of this page. The alternative was five translations kept in sync by hand, which is exactly the thing that stopped working.
If GitHub cannot be reached, the last good snapshot is shown with the date it was taken. A roadmap that vanishes because an API is down looks like a broken site; one that is an hour old is simply an hour old, and says so.
The phases
The milestones of the project itself. A phase closes once, where the work happens.
- 1
Phase 0 · Foundations
Repository, build and release chain. Runlix builds into a self-contained macOS bundle — 228 MB installed, 80 MB to download — behind a single gate that every change has to pass.
done - 2
Phase 1 · First token
Proof that the Rust engine can drive the app: one token generated in-process, in an Avalonia window, with no Python and no external server.
done - 3
Phase 2 · The engine
The MLX runtime itself: paged KV cache, tokenizer, sampling, and the model families. Cache, tokenizer and sampling are done, and six families are supported today — phi3, llama, qwen2, qwen3, gemma3 and deepseek_v2 — each checked token-for-token against mlx_lm. The chat and the API were built on this engine. Adding more families continues in Roadmap 1.
done - 4
Phase 3 · Chat and API
The chat, and an HTTP API on loopback that speaks both the OpenAI and the Ollama dialect, so clients you already use keep working unchanged.
done - 5
Phase 4 · Beyond text
Native embeddings — done, and they match mlx_embeddings to 9.2e-7. GGUF is deliberately out of scope: Runlix runs MLX safetensors and nothing else. Vision models continue in Roadmap 2.
done - 6
Release 1 · Alpha
The first build handed to people outside the project, through the reserved download area. It needs a Developer ID and notarization first, or macOS blocks it on launch.
12/13 - 7
Release 2 · Beta
Open to anyone who asks for it. Vision models and concurrent requests are meant to land here.
1/6 - 8
Release 3 · 1.0
The public release.
- 9
Roadmap 1 · More model families
The engine runs six model families today — phi3, llama, qwen2, qwen3, gemma3 and deepseek_v2 — each checked token-for-token against mlx_lm. The transformer loop is written once, so a new family costs a few dozen lines; what takes the time is the oracle that proves it right. The next families land here, after the alpha.
- 10
Roadmap 2 · Vision models
Models that read images are not supported yet: Runlix runs text models and embedding models. The compatibility check in the catalog says so before you download, rather than failing at load time. Vision support lands here, after the alpha.
Read from the project's milestones on 2026-11-02 03:28
What is honest to say is open
Open issues on the project, labelled as known limits. Each one disappears from here the day it is closed.
macOS blocks Runlix on first launch: the app is not notarized
Runlix is signed ad-hoc, not with an Apple Developer ID, and it is not notarized. macOS refuses to open it on the first try and you have to allow it by hand in System Settings → Privacy & Security.
Vision models (VLM) are not supported
Runlix runs text models only. Vision checkpoints are refused before you download them — the model page says so on the row — rather than failing to load after an eight-gigabyte download.
One generation at a time: a concurrent request gets 503
The HTTP API does not queue. While the engine is generating, a second request is refused with 503 instead of being served a wrong answer or silently interleaved with the first.
MLX safetensors only: GGUF models are not supported
Runlix loads MLX safetensors and nothing else. GGUF is a decision, not a gap: this issue stays open because the limitation is permanent, not because someone forgot it.