Ir al contenido

Proyecto

En qué punto está de verdad el trabajo

Runlix es una reescritura en curso: un director de orquesta de herramientas ajenas que se convierte en un motor propio. Las fases, qué ha cerrado cada una, y qué queda abierto.

Actualizado 2026-09-12Medido 2026-09-12

Runlix no empezó como Runlix. Empezó como OllamaManager, una aplicación que vigilaba Ollama, un servidor MLX, un servidor de vectores y Open WebUI, y que para hacerlo entregaba 598 MB de intérprete de Python.

Era un producto que funcionaba y un callejón sin salida comercial. La licencia de Open WebUI prohíbe quitarle la marca por encima de cincuenta usuarios. El intérprete empaquetado estaba clavado a Python 3.12 por Open WebUI. Y quitados Ollama, MLX y Open WebUI, lo que quedaba no era un producto. Así que la decisión fue construir el motor en lugar de dirigir el de los demás.

El cambio de nombre pasó por un nombre intermedio — todavía puedes encontrar elema en un remoto de git o en una carpeta de datos. El producto se llama Runlix.

De dónde saca esta página los hechos

La historia de arriba está escrita aquí, porque no cambia. Todo lo que viene después — las fases, por dónde va cada una, y qué está honestamente abierto todavía — se lee del repositorio del proyecto, cada quince minutos.

No es un detalle técnico, es el sentido de la página. Una hoja de ruta guardada en el texto del sitio es una hoja de ruta que envejece: cerrar una fase significaría reescribir cinco archivos traducidos, quien hace el trabajo no lo hace, y en un mes la página describe con seguridad un producto que ya no existe. Aquí una fase se cierra una sola vez, donde se cierra. Lo que se arregla deja de aparecer el día en que la issue se cierra, sin que nadie tenga que acordarse de borrar un párrafo.

Las fases son los hitos del repositorio; los límites abiertos son sus issues con la etiqueta de límites conocidos. Hay una consecuencia visible y elegida a propósito: ese texto se escribe una vez, en un solo idioma, y aparece igual en las cinco versiones de esta página. La alternativa eran cinco traducciones mantenidas a mano, que es exactamente lo que dejó de funcionar.

Si no se puede llegar a GitHub se muestra la última instantánea buena con la fecha en que se tomó. Una hoja de ruta que desaparece porque una API se ha caído parece un sitio roto; una de hace una hora es simplemente de hace una hora, y lo dice.

Las fases

Los hitos del propio proyecto. Una fase se cierra una sola vez, donde se trabaja.

  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.

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

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

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

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

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

Leído de los hitos del proyecto el 2026-11-02 04:16

Qué es honesto decir que está abierto

Issues abiertas del proyecto, etiquetadas como límites conocidos. Cada una desaparece de aquí el día en que se cierra.

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.