Compraste el Mac Mini para Openclaw. Perfecto.
Más tarde, Anthropic ha empujado a los usuarios de OpenClaw hacia su API de pago por token1, convirtiendo lo que alguna vez fue una compra única de hardware en un (gran) gasto continuo2. Incluso si usas OpenAI, seguirás pagando bastante mensualmente.
💵💵 Ejecutar un modelo local elimina por completo el costo mensual de sus agentes OpenClaw. 💵💵
Sin embargo, instalar y configurar todo puede resultar confuso, especialmente si eres nuevo en los LLM locales.
En este artículo, le mostraré cómo configurar un LLM local (de la manera más sencilla) en su Mac Mini que puede potenciar su agente de forma gratuita.
Puedes usarlo incluso si eres principiante.
🤨 “He oído que los LLM locales no funcionan tan bien, ¿es cierto?”
Un LLM local (correctamente configurado) funcionará de manera casi indistinguible para tareas como correos electrónicos, administración de calendarios, recordatorios, automatización de IoT en el hogar e investigación básica de Internet (cosas que realmente hace con OpenClaw).
Si necesita hacer algo más avanzado, como usar OpenClaw para ingeniería de software, hay un enlace en la parte inferior que resalta cómo configurar un modelo alternativo.
⚠️Nota: Esta guía no es un tutorial completo de OpenClaw.
Su objetivo es ayudarlo a poner en funcionamiento su LLM local con su(s) agente(s) lo más rápido posible.
Hardware
Este artículo fue probado en una Mac Mini con las siguientes especificaciones
Si estás pensando en comprar una Mac Mini, te recomendaría al menos un procesador M2+ con al menos 24 GB de RAM. Puedes salirte con la tuya con 16 GB, sin embargo, las cosas estarán bastante ajustadas y es posible que te encuentres con errores con contextos más grandes.
Configurando las cosas
Primero, instale OpenClaw usando la guía oficial. Si ya has hecho esto, omite este paso.
1. Instalar llama.cpp
Vamos a omitir el uso de Ollama (el proveedor local recomendado) y optaremos por llama.cpp. Al utilizar un modelo cuantificado junto con llama.cpp, podemos acelerar la inferencia hasta en un 70%.
Necesitamos construir llama.cpp desde la fuente con banderas de metal encendidas y cuda apagada. Esto maneja algunas de las optimizaciones necesarias para ejecutar el modelo en su Mac a máxima velocidad. Simplemente siga los pasos a continuación.
1️⃣ Primero, desde tu directorio de inicio, instala algunos requisitos previos usando brew.
# pega esto en tu terminal $ brew install cmake curl
2️⃣ Luego, construye llama.cpp con las banderas apropiadas.
# Clonar llama.cpp git clone https://github.com/ggml-org/llama.cpp # Configurar compilación con aceleración de metal cmake llama.cpp -B llama.cpp/build \ -DBUILD_SHARED_LIBS=OFF \ -DGGML_METAL=ON \ -DGGML_CUDA=OFF # Construir cmake –build llama.cpp/build \ –config Release \ -j$(sysctl -n hw.ncpu) \ –clean-first \ –target llama-cli llama-mtmd-cli llama-server llama-gguf-split
Ahora tenemos llama.cpp disponible para usar.
2. Descargue el LLM local
Como se mencionó, la clave para obtener un buen rendimiento de un modelo local es la cuantificación.
La cuantificación nos permite utilizar un modelo más grande y más capaz, “comprimido” de forma inteligente para que quepa en hardware más pequeño. Esto permite que el modelo cuantificado conserve la mayor parte del rendimiento de su modelo fuente de tamaño completo.
A menos que tengas una GPU grande o Mac con la cantidad máxima de memoria unificada (80 GB+ VRAM), la cuantificación es imprescindible
Seguir ciegamente la documentación de OpenClaw mientras intenta utilizar un modelo cuantificado le dejará confundido y frustrado.
Simplemente no existe una guía disponible que describa claramente cómo hacer que los modelos cuantificados funcionen con agentes.
A continuación se muestra una receta probada que funcionará para su agente.
Elección de modelo: Qwen 3.5-9B
Aquí estamos usando Qwen 3.5 (la versión del parámetro 9B).
En junio de 2026, tiene el mejor desempeño para los modelos locales, superando al Gemma 4-12B. Esto cabe en una Mac de 16 GB o 24 GB con un total de 6 a 8 GB de RAM necesarios. Los usuarios también califican esto altamente para OpenClaw.
Recuerde también que los agentes requieren contextos más largos, lo que nos impedirá ejecutar una versión de 27B más grande, incluso con cuantización.
1️⃣ Descarguemos el modelo.
# descargar modelo curl -L -o models/Qwen3.5-9B-UD-Q4_K_KL.gguf \ “https://huggingface.co/unsloth/Qwen3.5-9B-MTP-GGUF/resolve/main/Qwen3.5-9B-UD-Q4_K_XL.gguf?download=true”
2️⃣ Descarga la plantilla, guárdala en plantillas.
plantillas mkdir && \ curl -o templates/qwen35.jinja \ “https://huggingface.co/froggeric/Qwen-Fixed-Chat-Templates/resolve/main/chat_template.jinja”
Importante, debe utilizar una plantilla compatible con el agente para OpenClaw. Sin este paso, nada funcionará.
3. Inicie el servidor llama
Llama-server servirá como nuestra API de backend. OpenClaw utilizará este servicio web en lugar de llamar directamente a la API desde OpenAI o Anthropic.
Ya instalamos llama-server y descargamos nuestro modelo. Hagamos una prueba rápida.
1️⃣ Realiza una prueba rápida
./llama.cpp/llama-server\ -m models/Qwen3.5-9B-UD-Q4_K_XL.gguf \ –chat-template-file templates/qwen35.jinja \ –temp 0.7 \ –top-p 0.9 \ –top-k 20 \ -c 64000 \ -ngl 20 \ –host 127.0.0.1 \ –port 8080
Deberías ver algo como esto (sin errores)
srv llama_server: modelo cargado llama_server: el servidor está escuchando en http://127.0.0.1:8080 update_slots: todas las ranuras están inactivas
2️⃣ Ahora, escribamos un demonio de lanzamiento, para que su servidor LLM local se inicie automáticamente y permanezca disponible después del reinicio. Si está familiarizado con Linux, launchd es esencialmente systemd para macOS
Guarde lo siguiente como /Library/LaunchDaemons/com.openclaw.llama-server.plist. Necesitarás usar sudo para esto.
Expanda esto para el archivo plist
❗Asegúrese de reemplazar YOUR_USERNAME con su nombre de usuario real en el xml.
Etiqueta com.openclaw.llama-server Nombre de usuario YOUR_USERNAME ProgramArguments /Users/YOUR_USERNAME/llama.cpp/llama-server -m /Users/YOUR_USERNAME/models/Qwen3.5-9B-UD-Q4_K_XL.gguf –chat-template-file /Users/YOUR_USERNAME/templates/qwen35.jinja –temp 0.7 –top-p 0.9 –top-k 20 -c 64000 -ngl 20 –host 127.0.0.1 –port 8080 WorkingDirectory /Users/YOUR_USERNAME RunAtLoad KeepAlive StandardOutPath /tmp/llama-server.log StandardErrorPath /tmp/llama-server.err
Ahora, habilítelo.
sudo chown root:wheel /Library/LaunchDaemons/com.openclaw.llama-server.plist && \ sudo chmod 644 /Library/LaunchDaemons/com.openclaw.llama-server.plist && \ sudo launchctl bootstrap system /Library/LaunchDaemons/com.openclaw.llama-server.plist
Podemos comprobar si el servicio se está ejecutando correctamente siguiendo nuestro archivo de registro.
cola -f /tmp/llama-server.err
Ahora tenemos nuestro LLM local cargado y ejecutándose exitosamente como demonio. Todo lo que tenemos que hacer ahora es reconfigurar OpenClaw.
4. Reconfigure OpenClaw para usar el modelo local
Ahora necesitamos agregar este modelo local a nuestra configuración de OpenClaw para que nuestra puerta de enlace pueda utilizarlo.
1️⃣ Agregar al bloque “modelos” en .openclaw/openclaw.json
{ “modelos”: { “proveedores”: { “local”: { “baseUrl”: “http://127.0.0.1:8080/v1”, “apiKey”: “sk-local”, “api”: “openai-completions”, “modelos”: [
{
“id”: “qwen3-9b”,
“name”: “Qwen3.5 9B Local”,
“contextWindow”: 64000,
“maxTokens”: 8192
}
]
} /* ELIMINAR ESTE COMENTARIO */ /* puedes agregar proveedores adicionales, como anthropic aquí */ } } }
Nota: Es posible que sea necesario ajustar la configuración de contextWindow y maxTokens para sus flujos de trabajo específicos.
También deberás configurar el modelo predeterminado para tus agentes.
“agentes”: { “predeterminados”: { “modelo”: { “primario”: “local/qwen3-9b” }, “modelos”: { “local/qwen3-9b”: {} } }
También es útil verificar que la configuración sea precisa; ejecute este comando a continuación para verificar la sintaxis
validar la configuración de openclaw
2️⃣ Reinicie la puerta de enlace, asegurándose de que el modelo local ya esté disponible
reinicio de la puerta de enlace openclaw
3️⃣ Pruebe para ver si OpenClaw ha registrado correctamente nuestro modelo local
Lista de modelos de OpenClaw: proveedor local.
También podemos ejecutar una llamada de inferencia simple.
openclaw infer model run \ –model local/qwen3-9b \ –prompt “Responder exactamente con: pong” \ –json
Debería recibir un objeto JSON a cambio. Importante: verifique que no tenga ninguna etiqueta filtrada en la respuesta. No deberías, pero esto es doblemente importante para la seguridad.
{ “ok”: verdadero, “capacidad”: “model.run”, “transporte”: “local”, “proveedor”: “local”, “modelo”: “qwen3-9b”, “intentos”: []”salidas”: [
{
“text”: “pong”,
“mediaUrl”: null
}
]
}
Ahora hemos verificado que todas las tuberías funcionan correctamente. Para estar completamente seguro (o si este es su primer agente), configuremos una habilidad de muestra y aseguremos que el modelo razona y realiza correctamente la llamada a la herramienta como se esperaba.
5. Verifique la funcionalidad con una prueba de habilidad
Creemos una habilidad de prueba ‘python-calc’, que nos permitirá probar si nuestro modelo local puede razonar y generar llamadas a herramientas correctamente.
1️⃣ Ejecute esto para crear la habilidad. Esto agregará esta herramienta para todos sus agentes de Openclaw.
mkdir -p ~/.openclaw/workspace/skills/python-calc cat << 'EOF' > ~/.openclaw/workspace/skills/python-calc/SKILL.md — nombre: python-calc descripción: una herramienta que evalúa expresiones matemáticas mediante la ejecución de una sola línea de Python. versión: 1.0.0 — ## Instrucciones 1. Extraiga la expresión matemática exacta que el usuario desea calcular. 2. Utilice su herramienta de shell incorporada para ejecutar este comando exacto, reemplazando “ con la expresión: `python3 -c “print()”` 3. Espere a que la herramienta de shell devuelva la salida estándar. 4. DEBE generar una respuesta conversacional final para el usuario que contenga el resultado numérico exacto devuelto por el script. EOF
Nuevamente, reinicie la puerta de enlace.
2️⃣ Ahora, podemos ejecutar una llamada de agente de muestra para verificar los resultados de la herramienta correctamente:
agente openclaw –local –agent main –verbose on –thinking high –message \ “Usa la habilidad python-calc para calcular 8664 multiplicado por 222. No uses Skill_workshop. Dime la respuesta final”.
Y, después de aproximadamente un segundo, si todo funciona correctamente, deberíamos hacer algo como:
La respuesta final es 1.923.408.
¡Fantástico!
De manera realista, podemos ver velocidades de hasta 20-70 tokens por segundo*. Si bien esta no es la velocidad de Claude (130 tps+), es bastante razonable para un agente OpenClaw con hardware mínimo.
Recuerde, el modo de pensamiento se ha configurado en alto, por lo que está bien si tarda un poco más.
Si no está seguro de si openclaw está usando su modelo, en otra ventana de terminal, siga el registro del servidor llama ejecutando tail -f /tmp/llama-server.err
*Sus velocidades reales pueden variar
Concluyendo
Ejecutar un LLM local, especialmente con plantillas personalizadas y cuantificación, puede resultar bastante frustrante. ¡Configurar esto por primera vez en la Mac de un amigo tomó 2 días de ida y vuelta! Gracias a Jacob W. por la inspiración.
¡Eso es todo! Ojalá esto te ahorre mucho 💸
Si fue así, o si te ahorré algunos dolores de cabeza, también puedes invitarme a un café aquí.
☕¡Salud!
1 Tweet de Boris Cherny, sobre la “prohibición” de OpenClaw
2 El usuario gasta $420 al mes en tarifas de API
3 Usar múltiples proveedores con OpenClaw