El panel de administración de oMLX y su línea de comandos
Índice de contenidos
- Puntos clave
- Cómo se entra al panel
- Qué hay dentro del panel
- El chat integrado
- El descargador de modelos
- Alias y perfiles
- Las cuatro órdenes de la línea de comandos
- omlx launch, la orden que conecta los clientes
- Preguntas frecuentes
- ¿Puedo usar el panel de administración de oMLX sin conexión a internet?
- ¿Cómo cambio los ajustes de un solo modelo sin afectar a los demás?
- ¿Por qué no puedo entrar al panel con mi clave?
- Conclusión
- Fuentes
El panel de oMLX vive en localhost:8000/admin y reúne monitorización, carga y descarga de modelos, chat con historial, descargador de Hugging Face, benchmarks y ajustes por modelo. La línea de comandos cubre lo demás con cuatro órdenes: serve, start, stop y launch, esta última para conectar clientes externos.
Casi todo lo que se puede configurar en oMLX se puede hacer desde una página web que el propio servidor sirve, y los cambios se aplican sin reiniciarlo. Este artículo recorre las secciones del panel de administración, qué hace cada una, y las cuatro órdenes de terminal que cubren lo que el panel no alcanza.
Puntos clave
- El panel está en
http://localhost:8000/adminy el chat integrado en/admin/chat. - Se entra con la clave principal; una subclave no sirve, porque solo da acceso a la API.
- Los cambios hechos en el panel se aplican en caliente, sin reiniciar el servidor.
- La interfaz está traducida a ocho idiomas, incluido el español, y funciona sin conexión porque lleva sus dependencias incorporadas.
- La línea de comandos aporta cuatro órdenes:
serve,start,stopylaunch. La última configura clientes externos por ti.
Cómo se entra al panel
El panel se sirve desde el mismo proceso y el mismo puerto que la API, así que si el servidor responde, el panel también. La autenticación es distinta a la de los endpoints de inferencia: en lugar de una cabecera por petición, hay un inicio de sesión que deja una cookie firmada.
Introduces la clave principal, el servidor la verifica y genera un token de sesión firmado con itsdangerous.URLSafeTimedSerializer. Ese token vive en la cookie omlx_admin_session y dura 24 horas, o 30 días si marcas la casilla de recordar.
Dos detalles que ahorran confusión. El primero: una subclave no entra aquí. Están pensadas para que las aplicaciones llamen a la API, y explícitamente no pueden iniciar sesión ni cambiar ajustes. El segundo: si la aplicación de la barra de menús te abre el panel sin pedirte nada, no es un fallo de seguridad. Hay una ruta de inicio de sesión automático reservada para la aplicación nativa, que ya conoce la clave.
Si te expulsa cada vez que reinicias el servidor, la causa es OMLX_SECRET_KEY. Cuando no está definida se genera un valor aleatorio en cada arranque, y eso invalida todas las cookies emitidas antes. Está explicado con el resto de la configuración en la guía de la API y el puerto de oMLX.
Qué hay dentro del panel
Siete secciones, cada una resolviendo algo que de otro modo exigiría editar ficheros:
| Sección | Qué resuelve |
|---|---|
| Monitorización | Memoria ocupada, rendimiento y cola de peticiones, en tiempo real |
| Gestión de modelos | Cargar, descargar, fijar en memoria y fijar un TTL por modelo |
| Chat | Conversación con historial, salida de razonamiento y subida de imágenes |
| Descargador | Buscar y traer modelos MLX desde Hugging Face |
| Integraciones | Configuración de un clic para OpenClaw, OpenCode, Copilot, Hermes y Pi |
| Benchmarks | Tokens por segundo de prefill y de generación, con prueba de caché de prefijo |
| Ajustes por modelo | Muestreo, plantilla de chat, alias, tipo, TTL y perfiles |
La sección de monitorización es la que más se usa a diario, y por una razón concreta: en un Mac con memoria unificada no hay una tarjeta gráfica con su propia memoria, así que cada modelo cargado sale del mismo presupuesto que el resto del sistema. Ver cuánto queda antes de cargar otro modelo evita la mitad de los cierres inesperados.
El chat integrado
Vive en /admin/chat y no es un adorno. Sirve para lo que uno necesita justo después de descargar un modelo: comprobar que responde, que la plantilla de chat es la correcta y que el razonamiento se separa de la respuesta como debe.
Acepta subida de imágenes, lo que lo convierte en la forma más rápida de probar un modelo de visión o uno de reconocimiento de texto sin escribir una petición a mano. oMLX detecta automáticamente los modelos de OCR conocidos, como DeepSeek-OCR, DOTS-OCR y GLM-OCR, y les aplica indicaciones optimizadas.
El descargador de modelos
Busca en Hugging Face y trae los pesos sin salir del navegador. Como oMLX consume el catálogo MLX, lo que descargas ya viene convertido al formato que el motor entiende, sin paso de conversión intermedio.
Los tipos admitidos van más allá de los modelos de lenguaje: modelos de visión de la serie Qwen3.5, GLM-4V y Pixtral; modelos de embeddings como BERT, BGE-M3 y ModernBERT; y reordenadores basados en ModernBERT y XLM-RoBERTa. Con un modelo de lenguaje, uno de embeddings y un reordenador cargados a la vez tienes una tubería de recuperación entera en la misma máquina.
Alias y perfiles
Dos funciones pequeñas que cambian bastante el día a día.
Un alias renombra el modelo de cara a la API. El endpoint /v1/models devuelve el alias, y las peticiones aceptan tanto el alias como el nombre del directorio. Sirve para que un cliente que pide gpt-4o-mini reciba el modelo que tú decidas sin tocar el cliente.
Un perfil es un paquete de ajustes con nombre. Se expone como <modelo>:<perfil>, por ejemplo qwen3-8b:thinking, y lo relevante es que no consume memoria adicional: es el mismo modelo cargado una vez, servido con parámetros de muestreo distintos. Un perfil conservador para tareas de código y otro más creativo para redacción, sobre los mismos pesos.
Las cuatro órdenes de la línea de comandos
El panel no cubre el arranque ni la conexión de clientes externos. Para eso está la terminal:
omlx serve --model-dir ~/models # primer plano, muere al cerrar la sesión
omlx start # servicio en segundo plano, supervisado
omlx stop
omlx restart
omlx serve admite bastantes banderas, y estas son las que se usan de verdad:
| Bandera | Por defecto | Para qué |
|---|---|---|
--model-dir |
~/.omlx/models |
Directorio donde están los modelos |
--port |
8000 |
Puerto de escucha |
--host |
127.0.0.1 |
Dirección de escucha |
--pin |
ninguno | Modelos que no deben descargarse de memoria |
--memory-guard |
balanced |
Nivel del techo de memoria: safe, balanced o aggressive |
--max-concurrent-requests |
8 |
Peticiones simultáneas admitidas |
--paged-ssd-cache-dir |
~/.omlx/cache |
Dónde vuelca la caché KV fría |
--no-cache |
desactivado | Apaga la caché por niveles |
--log-level |
info |
trace, debug, info, warning o error |
--api-key |
ninguna | Clave principal |
--mcp-config |
ninguno | Fichero de configuración de Model Context Protocol |
--hf-endpoint |
Hugging Face | Espejo alternativo para regiones con restricciones |
Hay más, sobre todo de red: --ms-endpoint para ModelScope, --http-proxy, --https-proxy, --ca-bundle y --sse-keepalive-mode, esta última útil cuando un intermediario corta las conexiones de streaming durante un prefill largo.
Recuerda que si gobiernas oMLX como servicio de Homebrew, ninguna de estas banderas llega: el servicio ejecuta omlx serve pelado y toda la configuración tiene que estar en ~/.omlx/settings.json o en el panel. Está desarrollado en la guía de instalación con Homebrew.
omlx launch, la orden que conecta los clientes
Esta es la parte menos conocida y probablemente la más útil. omlx launch arranca una herramienta externa con las variables de entorno y los ficheros de configuración ya preparados para hablar con tu servidor.
omlx launch claude # Claude Code
omlx launch codex # Codex
omlx launch opencode # OpenCode
omlx launch openclaw # OpenClaw
omlx launch hermes # Hermes Agent
omlx launch pi # Pi Agent
Cada una hace algo distinto por dentro:
| Herramienta | Qué configura | Endpoint que usa |
|---|---|---|
| Claude Code | ANTHROPIC_BASE_URL y ANTHROPIC_AUTH_TOKEN |
/v1/messages |
| Codex | Argumentos con ámbito de proceso | /v1/responses |
| OpenCode | ~/.config/opencode/opencode.json |
/v1/chat/completions |
| OpenClaw | ~/.openclaw/openclaw.json |
/v1/chat/completions |
| Hermes | ~/.hermes/config.yaml |
/v1/chat/completions |
| Pi | ~/.pi/agent/models.json |
/v1/chat/completions |
En el caso de Claude Code hay dos detalles que conviene conocer. El mapeo de modelos se hace con ANTHROPIC_DEFAULT_OPUS_MODEL, ANTHROPIC_DEFAULT_SONNET_MODEL y ANTHROPIC_DEFAULT_HAIKU_MODEL, así que decides qué modelo local responde a cada nivel. Y oMLX impone una ventana de contexto mínima de 48K tokens para esa integración, porque por debajo el cliente se comporta mal. Si tu modelo no llega, la integración no arranca.
Para Copilot en línea de comandos se fija COPILOT_PROVIDER_WIRE_API = "responses", que es lo que hace que hable el dialecto correcto contra un servidor local.
Preguntas frecuentes
¿Puedo usar el panel de administración de oMLX sin conexión a internet?
Sí. Las dependencias que normalmente vendrían de una red de distribución de contenidos están incorporadas en el propio paquete, así que el panel carga entero con la máquina desconectada. Lo único que necesita internet es el descargador de modelos.
¿Cómo cambio los ajustes de un solo modelo sin afectar a los demás?
En la sección de ajustes por modelo del panel. Ahí defines muestreo, plantilla de chat, alias, tipo y TTL para ese modelo concreto. Si quieres dos comportamientos distintos sobre los mismos pesos, guarda dos perfiles y llámalos como <modelo>:<perfil>.
¿Por qué no puedo entrar al panel con mi clave?
Porque probablemente sea una subclave. Las subclaves solo llaman a los endpoints de inferencia y no pueden iniciar sesión ni modificar ajustes. Usa la clave principal, la que fijaste con --api-key o en la configuración.
Conclusión
El reparto entre panel y terminal en oMLX es bastante claro: la terminal arranca el proceso y conecta clientes, el panel gobierna todo lo demás en caliente. Merece la pena dedicar diez minutos a recorrer las siete secciones antes de empezar a editar settings.json a mano, porque la mayoría de lo que se busca ahí está en la interfaz y se aplica sin reiniciar.
Lo que el panel deja al descubierto es cuánta memoria queda, y ese acaba siendo el límite real: cómo se reparte entre modelos lo cuento en gestión de modelos y memoria en oMLX. La versión inglesa de este artículo está en The oMLX admin dashboard and its command line.
Fuentes
Código fuente
Accede a todo el código fuente de este artículo en GitHub.
Ver en GitHub