Projet
Où en est vraiment le travail
Runlix est une réécriture en cours : un chef d'orchestre d'outils étrangers qui devient un moteur à lui. Les phases, ce que chacune a clos, et ce qui reste ouvert.
Mis à jour 2026-09-12Mesuré 2026-09-12
Runlix n'a pas commencé comme Runlix. Il a commencé comme OllamaManager, une application qui surveillait Ollama, un serveur MLX, un serveur de vecteurs et Open WebUI, et qui livrait pour cela 598 Mo d'interprète Python.
C'était un produit qui marchait et une impasse commerciale. La licence d'Open WebUI interdit d'en retirer la marque au-delà de cinquante utilisateurs. L'interprète livré était cloué à Python 3.12 par Open WebUI. Et une fois retirés Ollama, MLX et Open WebUI, ce qui restait n'était pas un produit. La décision a donc été de construire le moteur plutôt que de diriger celui des autres.
Le changement de nom est passé par un nom intermédiaire — vous trouverez encore elema dans un
dépôt distant ou dans un dossier de données. Le produit s'appelle Runlix.
D'où cette page tient ses faits
L'histoire ci-dessus est écrite ici, parce qu'elle ne change pas. Tout ce qui suit — les phases, où en est chacune, et ce qui est honnêtement encore ouvert — est lu depuis le dépôt du projet, toutes les quinze minutes.
Ce n'est pas un détail technique, c'est tout l'intérêt de la page. Une feuille de route gardée dans le texte du site est une feuille de route qui vieillit : fermer une phase voudrait dire réécrire cinq fichiers traduits, celui qui fait le travail ne le fait pas, et en un mois la page décrit avec assurance un produit qui n'existe plus. Ici une phase se ferme une fois, là où elle se ferme. Ce qui est corrigé cesse d'être listé le jour où le ticket est fermé, sans que personne ait à se souvenir de supprimer un paragraphe.
Les phases sont les jalons du dépôt ; les limites ouvertes sont ses tickets portant l'étiquette des limites connues. Une conséquence se voit et a été choisie : ce texte est écrit une fois, dans une seule langue, et il apparaît à l'identique sur les cinq versions de cette page. L'alternative était cinq traductions tenues à jour à la main, c'est-à-dire exactement ce qui a cessé de marcher.
Si GitHub est injoignable, le dernier instantané valable est montré avec la date à laquelle il a été pris. Une feuille de route qui disparaît parce qu'une API est tombée ressemble à un site cassé ; une vieille d'une heure est simplement vieille d'une heure, et le dit.
Les phases
Les jalons du projet lui-même. Une phase se ferme une seule fois, là où le travail se fait.
- 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.
faite - 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.
faite - 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.
faite - 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.
faite - 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.
faite - 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.
Lu depuis les jalons du projet le 2026-11-02 04:16
Ce qu'il est honnête de dire ouvert
Les tickets ouverts du projet, étiquetés comme limites connues. Chacun disparaît d'ici le jour où il est fermé.
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.