Ingeniería
Ningún servidor que arrancar. El modelo responde desde dentro de la aplicación.
Runlix ejecuta los modelos en su propio proceso: nada que lanzar antes, seis familias de modelos que funcionan de forma nativa, y la velocidad medida contra mlx-lm con la fecha de la medición al lado.
Actualizado 2026-09-13Medido 2026-09-07
Abres la aplicación y haces una pregunta. Esa es toda la secuencia.
Parece poca cosa hasta el día en que no lo es. Casi todas las formas de ejecutar un modelo en el propio Mac ponen un programa aparte en medio: la aplicación en la que haces clic habla por la red con un motor que ha escrito otra persona, y ese motor corre a su vez sobre un entorno de ejecución con sus versiones y sus maneras de romperse. Cuando esa cadena se atasca, lo que ha dejado de funcionar no es lo que instalaste, y el mensaje de error pertenece a un programa que nunca elegiste.
Runlix carga el modelo dentro de sí mismo. Cierras la aplicación y no queda nada encendido.
¿Mi modelo va a funcionar de verdad?
Seis familias funcionan de forma nativa:
- phi3
- llama
- qwen2
- qwen3
- gemma3_text
- deepseek_v2
En la práctica cubren la mayor parte de lo que la gente descarga — e incluyen modelos cuyo nombre no lo deja ver, porque los modelos Mistral están construidos sobre la forma de llama y también funcionan de forma nativa. Runlix te dice qué familia ha reconocido en vez de dejarte adivinar.
Para un modelo fuera de esos seis la respuesta es todavía no, con su motivo. Si mlx-lm conoce
la familia, es una que el motor puede aprender, y la lista crece de una familia verificada en una.
Si no la conoce nadie, Runlix también lo dice. No hay un segundo motor, más lento, escondido detrás
del primero: lo que ejecutas es lo que obtienes.
Y lo sabes antes de la descarga, no después. Descargar ocho gigabytes para descubrir que el modelo no carga es la experiencia corriente de ejecutar inteligencia artificial en local, y es lo único aquí que se diseñó para que no pasara: Runlix lee primero la descripción que el modelo da de sí mismo en Hugging Face y te da un veredicto con la razón escrita al lado. Está todo en la página de modelos.
En qué se diferencia del montaje habitual
Si ya has ejecutado modelos en local, casi seguro que has usado un montaje de dos mitades: un servicio en segundo plano que sostiene el modelo, y una ventana que le habla. Ese diseño tiene ventajas reales, y merece nombrarlas primero — el servicio sigue encendido cuando cierras la ventana, varias aplicaciones pueden compartir un mismo modelo cargado, y un fallo del modelo no se lleva por delante tu interfaz.
Un servicio más una ventana
- El servicio sigue encendido cuando cierras la ventana.
- Varias aplicaciones pueden compartir un mismo modelo cargado.
- Un fallo del modelo no se lleva por delante tu interfaz.
- Algo aparte que instalar y mantener al día.
- Un puerto, que puede que otra cosa en tu Mac ya quiera.
- Cuando una respuesta no llega, averiguar qué mitad está atascada es cosa tuya.
- A menudo Python debajo: un segundo entorno de software con sus versiones y sus formas de romperse un martes.
Runlix
- Una cosa que instalar, una que cerrar.
- Un solo sitio del que puede venir un fallo — nunca la pregunta de qué mitad.
- Ningún puerto abierto si no lo pides.
- Ningún segundo entorno de software que mantener.
- Cuando cierras, no queda nada encendido.
- No puedes compartir un modelo cargado entre aplicaciones.
- Un fallo del modelo se lleva la aplicación.
Ninguna de las dos respuestas es la correcta en abstracto. Esta lo es si quieres que el modelo sea parte de una aplicación en vez de infraestructura que mantienes.
Cómo de rápido, y comparado con qué
La velocidad por sí sola es un número sin significado. La manera honesta de declararla es como
proporción frente a una referencia que cualquiera puede ejecutar — mlx-lm, la biblioteca que usan
los propios ejemplos de Apple — con el día de la medición escrito al lado, porque un número en una
página comercial no tiene a nadie que lo mantenga.
Referencia: mlx-lm = 100 %. Medido el 7 de septiembre de 2026 en Llama-3.2-1B a 4 bits. Pico de memoria en el prompt de 4096 tokens: 1115 MB.
Runlix va por detrás de la referencia en todas las filas, y se dice en vez de esconderse. Entre el 86 % y el 93 % de una biblioteca con años de atención detrás, a cambio de que el modelo viva dentro de la aplicación en lugar de detrás de un puerto de red. Si lo único que te importa son los tokens por segundo, la referencia está ahí y puedes ejecutarla.
Qué le hace a tu Mac
Puedes tener más de un modelo cargado a la vez y pasar de uno a otro sin esperar una recarga cada vez. Cuando no queda sitio, se aparta el que llevas más tiempo sin usar — nunca el que te está respondiendo en ese momento.
El límite no es la RAM impresa en la caja. Es cuánta declara el sistema gráfico que está dispuesto a ceder, y se le pregunta en vez de darlo por hecho.
Qué significa esto en el día a día: en un Mac con memoria de sobra puedes dejar cargados a la vez un modelo pequeño y rápido y uno grande y cuidadoso, y moverte entre ellos dentro de una conversación sin pausas. En una máquina más justa, la aplicación hace sitio en silencio y recarga cuando vuelves — más lento, pero nunca un rechazo y nunca un cierre por quedarse sin memoria.
Qué se niega a hacer, y qué te cuesta
Se niega en vez de adivinar
Algunos modelos se describen de maneras que este motor no implementa. Cuando pasa, el modelo no carga, con el motivo dicho, en vez de cargar igualmente.
Esa negativa es la función. Un motor de inferencia casi correcto no se cae: produce texto fluido, seguro de sí mismo y equivocado, y te enteras semanas después o nunca. Puestos a elegir entre un error hoy y una equivocación plausible que quizá nunca detectes, este se equivoca hoy.
Dos límites que conviene conocer antes de empezar: modelos solo en formato MLX — nada de GGUF, que es una decisión y no una esquina sin terminar — y ningún modelo de visión. Ambas cosas se comprueban contra Hugging Face antes de que gastes la descarga.
Y si se cae, se lleva la aplicación
Ejecutar el modelo dentro de la aplicación es un intercambio, y este es el lado que pagas: si el código del modelo se cae, se lleva la aplicación con él. No hay un servidor en medio que lo absorba.
Se eligió deliberadamente, y la salida se mantiene preparada: el motor está separado de la aplicación por una frontera diseñada para poder devolverlo a un proceso propio el día en que ese intercambio deje de compensar.
Decirlo claramente forma parte del asunto. Estás eligiendo un arreglo, no te están vendiendo una comida gratis.
Si quieres comprobar algo de esto
Nada de lo anterior pide que se lo crean.
La corrección
Se usa mlx-lm para generar la secuencia exacta de palabras que un modelo debe
producir ante una pregunta dada; el motor tiene que reproducirla, y la construcción falla si no
lo consigue. Donde la propia referencia está genuinamente indecisa entre dos palabras, la
prueba registra el margen en vez de exigir acuerdo sobre un cara o cruz.
La lista de las seis
No es una afirmación de folleto. Cada familia queda registrada junto con la versión de
mlx-lm de la que se tradujo y la fecha de su última verificación, y la
construcción falla si una familia se declara compatible sin ambas.
Los números de velocidad
Cada proporción de arriba lleva el día en que se tomó y el modelo en el que se tomó. Repítelos cuando quieras: la referencia es una biblioteca pública.
El código de terceros
La interfaz MLX de Apple viaja dentro del proyecto exactamente como se publicó, con su huella verificada antes de cada construcción. Las correcciones viven en parches aparte, y la construcción se para y nombra el parche si alguno ya no aplica — así un cambio no puede desaparecer en silencio en la siguiente actualización.
La ingeniería que hay detrás de estas comprobaciones — por qué el nombre mal escrito de una función al cruzar la frontera entre dos lenguajes no es un error de compilación, y cómo un nombre correcto con el tipo equivocado convirtió un techo de memoria de 23 GB en 2,8 GB sin llegar a caerse nunca — está escrita en las notas, que es donde va ese tipo de cosa.