Install the tools, start the local servers and connect Open WebUI for a unified chat interface.
Exemplos oficiais de uso do mlx-lm, incluindo server e geração.
Depois de escolher os modelos, você os transforma em serviços locais. Cada motor expõe uma API parecida com a da OpenAI, então ferramentas como Open WebUI, LangGraph ou agentes de código conseguem falar com eles sem saber qual motor está por trás.
Pense em tomadas universais: cada aparelho (modelo) tem uma tomada diferente, mas o inversor (API OpenAI-compatível) deixa tudo no mesmo padrão. Assim você liga uma única interface.
mlx_lm.server, mlx_vlm.server e mlx_audio.server expõem endpoints /v1/chat/completions, /v1/audio/transcriptions, /v1/audio/speech etc. Ollama também é OpenAI-compatível via /v1/chat/completions. Open WebUI aponta para qualquer desses backends.
A instalação base é simples: instale as bibliotecas Python da Apple e o Ollama. Para quem prefere interface gráfica, LM Studio é uma alternativa. O Open WebUI roda em Docker e aponta para os servidores locais.
Use pip install -U mlx-lm mlx-vlm mlx-audio para a stack nativa. Ollama 0.19+ já usa MLX como backend no Apple Silicon. Open WebUI pode ser iniciado com Docker apontando para http://host.docker.internal:8080/v1.
# Stack MLX nativa pip install -U mlx-lm mlx-vlm mlx-audio # Ollama (provavelmente já instalado) brew upgrade ollama # Open WebUI via Docker docker run -d -p 3000:8080 -e OPENAI_API_BASE_URL=http://host.docker.internal:8080/v1 -e OPENAI_API_KEY=not-needed ghcr.io/open-webui/open-webui:main
Com as ferramentas instaladas, você sobe cada servidor em uma porta. O servidor de texto usa mlx_lm.server; o multimodal usa mlx_vlm.server; o de áudio usa mlx_audio.server. O Open WebUI aponta para um deles por vez, ou você pode usar um proxy como LiteLLM.
Os servidores expõem API OpenAI. Você pode configurar múltiplos endpoints no Open WebUI ou usar variáveis de ambiente para alternar. Para carregamento sob demanda, o MLX descarrega e recarrega modelos rapidamente, então manter vários modelos "quentes" não é obrigatório.
# Text python -m mlx_lm.server --model mlx-community/Qwen3.6-35B-A3B-8bit --host 127.0.0.1 --port 8080 # Multimodal python -m mlx_vlm.server --model unsloth/gemma-4-26b-a4b-it-UD-MLX-4bit --port 8081 --kv-bits 8 # Audio mlx_audio.server --host 127.0.0.1 --port 8000 # Ollama ollama pull qwen3.6:35b-a3b ollama serve
Test what you learned with quick exercises.
mlx-lm, mlx-vlm, mlx-audio e o Ollama.mlx_lm.server on port 8080 with Qwen3.6-35B-A3B.mlx_vlm.server na porta 8081 com Gemma 4.http://host.docker.internal:8080/v1.http://localhost:3000 e faça uma pergunta.python -m mlx_lm.server --model <modelo> --port 8080OPENAI_API_BASE_URL=http://host.docker.internal:8080/v1 ao iniciar o container.