Salta al contenuto

Progetto

A che punto è davvero il lavoro

Runlix è una riscrittura in corso: un orchestratore di strumenti altrui che diventa un motore proprio. Le fasi, cosa ha chiuso ognuna, e cosa resta aperto.

Aggiornato 2026-09-12Misurato 2026-09-12

Runlix non è nato come Runlix. È nato come OllamaManager, un'applicazione che sorvegliava Ollama, un server MLX, un server di embedding e Open WebUI, e per farlo spediva 598 MB di interprete Python.

Era un prodotto funzionante e un vicolo cieco commerciale. La licenza di Open WebUI vieta di toglierne il branding sopra i cinquanta utenti. L'interprete nel pacchetto era inchiodato a Python 3.12 da Open WebUI. E tolti Ollama, MLX e Open WebUI, quello che restava non era un prodotto. Così la decisione è stata costruire il motore invece di dirigere quello degli altri.

Il rinomino è passato da un nome intermedio — puoi ancora trovare elema in un remote git o in una cartella di dati. Il prodotto è Runlix.

Da dove questa pagina prende i fatti

La storia qui sopra è scritta qui, perché non cambia. Tutto quello che viene dopo — le fasi, a che punto è ognuna, e cosa è onestamente ancora aperto — viene letto dal repository del progetto, ogni quindici minuti.

Non è un dettaglio tecnico, è il senso della pagina. Una roadmap tenuta nel testo del sito è una roadmap che invecchia: chiudere una fase vorrebbe dire riscrivere cinque file tradotti, chi fa il lavoro non lo fa, e nel giro di un mese la pagina descrive con sicurezza un prodotto che non esiste più. Qui una fase si chiude una volta sola, dove si chiude. Una cosa che viene sistemata smette di comparire il giorno che la issue si chiude, senza che nessuno debba ricordarsi di cancellare un paragrafo.

Le fasi sono le milestone del repository; i limiti aperti sono le sue issue con l'etichetta dei limiti noti. Una conseguenza si vede ed è stata scelta: quel testo è scritto una volta, in una lingua sola, e compare uguale in tutte e cinque le versioni di questa pagina. L'alternativa erano cinque traduzioni tenute allineate a mano, cioè esattamente la cosa che ha smesso di funzionare.

Se GitHub non si raggiunge si mostra l'ultima istantanea buona con la data in cui è stata presa. Una roadmap che sparisce perché un'API è giù sembra un sito rotto; una vecchia di un'ora è semplicemente vecchia di un'ora, e lo dice.

Le fasi

Le milestone del progetto stesso. Una fase si chiude una volta sola, dove si lavora.

  1. 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.

    fatta
  2. 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.

    fatta
  3. 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.

    fatta
  4. 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.

    fatta
  5. 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.

    fatta
  6. 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. 7

    Release 2 · Beta

    Open to anyone who asks for it. Vision models and concurrent requests are meant to land here.

    1/6
  8. 8

    Release 3 · 1.0

    The public release.

  9. 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. 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.

Letto dalle milestone del progetto il 2026-11-02 04:16

Cosa è onesto dire che è aperto

Issue aperte sul progetto, etichettate come limiti noti. Ognuna sparisce da qui il giorno che si chiude.

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.