OpenCode Model Runner en Docker

Publicado por


OpenCode | Docker Model Runner | IA Local | Coding

OpenCode con Docker Model Runner: coding asistido con IA local

Cómo conectar OpenCode a Docker Model Runner para usar modelos de IA locales (Qwen3-Coder, Devstral-Small-2, gpt-oss) como asistente de coding. Sin dependencias cloud, control total, latencia cero.

¿Qué es OpenCode con Docker Model Runner?

OpenCode es un asistente de coding impulsado por IA que funciona en tu editor de texto o línea de comandos. Cuando lo conectas a Docker Model Runner, puedes usar modelos de IA ejecutados localmente en lugar de servicios cloud como OpenAI o Claude.

Esto significa: cero dependencias externas, latencia de milisegundos, control total de tus datos, y ahorro de costos API. Todo tu homelab.

Docker Model Runner (DMR) es una plataforma nativa que permite servir modelos de IA de manera eficiente. OpenCode se conecta a DMR mediante un endpoint OpenAI-compatible, lo que hace la integración transparente y sin fricciones.

Resultado: Un coding assistant totalmente local, con modelos especializados para código (Qwen3-Coder, Devstral-Small-2) y capacidad de usar modelos generales con contextos de 128k tokens.

Ventajas de OpenCode + Docker Model Runner

Sin dependencias cloud

Todo corre en tu hardware. Cero interacción con servidores externos.

Latencia cero

Respuestas de milisegundos. No hay espera por red ni API rate limits.

Control de datos

Tu código nunca sale de tu máquina. Privacidad total garantizada.

Modelos especializados

Qwen3-Coder y Devstral-Small-2 optimizados específicamente para código.

Contexto grande

gpt-oss empaquetado con 128k tokens para análisis de repositorios completos.

OpenAI-compatible

Usa modelos locales con la misma interfaz que OpenAI. Migración cero.

Prerrequisitos

Antes de empezar, asegúrate de tener:

  • Docker Desktop o Docker Engine: Instalados y funcionando en tu sistema.
  • Docker Model Runner habilitado: Con TCP access en puerto 12434 (requerido para OpenCode).
  • OpenCode instalado: Descárgalo de opencode.ai/docs.
  • Modelos descargados: Qwen3-Coder y/o Devstral-Small-2 (los instalaremos en Paso 1).
Para Docker Desktop: Ve a Settings → AI y activa TCP access, o ejecuta: docker desktop enable model-runner --tcp 12434

Paso 1: Descargar modelos de coding

Docker Model Runner necesita los modelos descargados antes de que OpenCode pueda usarlos. Hay dos opciones principales optimizadas para coding:

Opción A: Qwen3-Coder (recomendado)

Especialmente optimizado para código. Excelente relación velocidad/calidad.

docker model pull ai/qwen3-coder

Opción B: Devstral-Small-2

Alternativa rápida y ligera. Ideal si tienes recursos limitados.

docker model pull ai/devstral-small-2

Opción C: Descargar ambos

Lo más práctico: tener dos modelos permite cambiar entre ellos según la tarea.

docker model pull ai/qwen3-coder
docker model pull ai/devstral-small-2
Advertencia: Los modelos tardan minutos en descargarse dependiendo de tu conexión. Son ficheros de gigabytes. Ten paciencia.

Verificar descargas

docker model ls
# Debe listar: ai/qwen3-coder, ai/devstral-small-2, etc

Paso 2: Crear configuración de OpenCode

OpenCode lee su configuración de dos lugares (por orden de precedencia):

  • Global: ~/.config/opencode/opencode.json (aplica a todos los proyectos)
  • Proyecto: ./opencode.json en raíz del proyecto (sobrescribe global)

Configuración básica (2 modelos de coding)

Crea opencode.json en la raíz de tu proyecto:

{
«$schema»: «https://opencode.ai/config.json»,
«provider»: {
«dmr»: {
«npm»: «@ai-sdk/openai-compatible»,
«name»: «Docker Model Runner»,
«options»: {
«baseURL»: «http://localhost:12434/v1»
},
«models»: {
«qwen3-coder»: {
«name»: «ai/qwen3-coder»
},
«devstral-small-2»: {
«name»: «ai/devstral-small-2»
}
}
}
}
}
baseURL importante: Asegúrate de que http://localhost:12434/v1 coincida con tu configuración de Docker Model Runner. Si usas la ruta legacy, cambia a http://localhost:12434/engines/v1.

Paso 3: Verificar que Docker Model Runner está accesible

Antes de abrir OpenCode, asegúrate de que el endpoint es alcanzable. Esto evita sorpresas después.

Comprobar endpoint moderno

curl http://localhost:12434/v1/models

Si usas ruta legacy

curl http://localhost:12434/engines/v1/models

Respuesta esperada

Deberías recibir JSON listando los modelos disponibles:

# Respuesta ejemplo:
{
«data»: [
{ «id»: «ai/qwen3-coder» },
{ «id»: «ai/devstral-small-2» }
]
}
Si falla: Docker Model Runner no está escuchando en ese puerto. Verifica con docker model status.

Paso 4: Lanzar OpenCode con los modelos locales

Una vez configurado y verificado, OpenCode está listo para usar.

Iniciar desde línea de comandos

# Desde la raíz del proyecto (donde está opencode.json)
opencode

Cambiar modelo en la TUI (Terminal UI)

OpenCode proporciona una interfaz interactiva. Para cambiar de modelo mientras está ejecutándose:

/models
# Luego selecciona el modelo del proveedor ‘dmr’
Primera ejecución: OpenCode cargará la configuración, conectará a Docker Model Runner y estará listo para coding asistido. ¡Sin nubes, sin APIs externas!

Paso 5: Empaquetar gpt-oss con contexto grande (opcional)

Este paso es totalmente opcional. Úsalo solo si necesitas analizar repositorios completos con un contexto de 128k tokens.

¿Cuándo lo necesitas?

  • Análisis de repositorio completo: Refactorización a escala del proyecto.
  • Arquitectura de sistema: Cambios que afectan múltiples ficheros.
  • Investigación de bugs complejos: Que requieren ver el contexto completo.

Descargar gpt-oss base

docker model pull ai/gpt-oss

Empaquetar con 128k de contexto

Docker Model Runner permite personalizar el tamaño de contexto. Crea una variante de gpt-oss optimizada:

docker model package –from ai/gpt-oss –context-size 128000 gpt-oss:128k

Añadir a la configuración de OpenCode

Actualiza opencode.json para incluir el modelo empaquetado:

{
«$schema»: «https://opencode.ai/config.json»,
«provider»: {
«dmr»: {
«npm»: «@ai-sdk/openai-compatible»,
«name»: «Docker Model Runner»,
«options»: {
«baseURL»: «http://localhost:12434/v1»
},
«models»: {
«qwen3-coder»: {
«name»: «ai/qwen3-coder»
},
«devstral-small-2»: {
«name»: «ai/devstral-small-2»
},
«gpt-oss:128k»: {
«name»: «gpt-oss:128k»
}
}
}
}
}
Contexto vs velocidad: Modelos con contextos grandes (128k) son más lentos pero capaces de análisis profundo. Qwen3-Coder es más rápido pero con contexto limitado. Úsalos según la tarea.

Troubleshooting y solución de problemas

OpenCode no puede conectar a Docker Model Runner

# Verificar estado de DMR
docker model status
# Si falla, reinicia Docker Desktop o daemon

OpenCode no muestra el modelo que configuré

# Listar modelos locales disponibles
docker model ls
# Si el modelo no aparece, descárgalo primero
docker model pull ai/qwen3-coder

Nombre del modelo no coincide en opencode.json

Asegúrate de que el "name" en la configuración coincide exactamente con lo que ves en docker model ls. Incluye el prefijo ai/ si es necesario.

Conexión timeout o «Connection refused»

  • Verifica que Docker Desktop/Engine está corriendo: docker ps
  • Verifica que Model Runner tiene TCP habilitado en puerto 12434
  • Si usas firewall, abre puerto 12434 (aunque sea localhost)

El modelo descarga pero tarda mucho

Es normal. Los modelos de IA son ficheros de gigabytes. Qwen3-Coder puede tardar 10-20 minutos dependiendo de tu conexión. La primera descarga es la más lenta; las posteriores son instantáneas.

Flujo de trabajo completo en 5 minutos

1. Descargar modelos (5-20 min)

docker model pull ai/qwen3-coder

2. Crear opencode.json (30 seg)

Copiar la configuración JSON en raíz del proyecto

3. Verificar endpoint (10 seg)

curl http://localhost:12434/v1/models

4. Lanzar OpenCode (5 seg)

opencode desde raíz del proyecto

5. Cambiar modelo si quieres (30 seg)

Escribe /models en la TUI para seleccionar otro

Comparativa: OpenCode local vs OpenCode cloud

Aspecto OpenCode + DMR (Local) OpenCode + OpenAI/Cloud
Latencia Milisegundos ✅ 500-2000ms (red + cloud)
Coste Gratis (hardware propio) $20-100/mes típico
Privacidad 100% local ✅ Datos a third-parties
Rate limits Ninguno ✅ Sí, según plan
Offline Sí ✅ No, requiere internet
Control Total (tu hardware) Limitado a proveedor

Casos de uso reales

1. Freelancer con múltiples clientes

No quieres usar una sola API key de OpenAI que cueste dinero por cada línea de código. Con OpenCode + DMR, tus costos son solo el hardware (una vez).

2. Desarrollador en empresa con restricciones

Algunas empresas no permiten enviar código a servidores cloud. OpenCode local resuelve esto: código + IA, todo adentro del firewall.

3. Homelab + side projects

Tienes un servidor Intel en casa. ¿Por qué no usarlo como coding assistant? Configura DMR una vez, úsalo para todos tus proyectos personales infinitamente.

4. Experimentación con múltiples modelos

Compara Qwen3-Coder vs Devstral-Small-2 en la misma tarea. Cambia en OpenCode con /models. Sin gastar dinero extra.

5. Análisis de repositorios grandes

gpt-oss con 128k contexto permite entender arquitecturas completas de código. Perfecto para onboarding a nuevos proyectos o refactorización a escala.

Recursos adicionales y mejoras futuras

  • Integraciones IDE: OpenCode puede integrase con VS Code, Vim, Neovim. Ver docs de OpenCode.
  • Personalización: Experimenta con diferentes tamaños de contexto usando docker model package.
  • Múltiples proyectos: Cada proyecto puede tener su propio opencode.json con diferentes modelos.
  • GPU acceleration: Si tu GPU es compatible, Docker Model Runner aprovecha automáticamente CUDA/ROCm.
  • Monitoreo: Usa docker model status para ver consumo de recursos de los modelos.

Conclusión: Coding asistido, 100% tuyo

OpenCode + Docker Model Runner es la combinación perfecta para desarrolladores que buscan un asistente de IA sin dependencias cloud, sin costos recurrentes, y con privacidad garantizada.

Cinco pasos simples y tienes un coding assistant local funcionando. Los modelos están especializados en código (Qwen3-Coder, Devstral-Small-2), son rápidos, y si necesitas más contexto, gpt-oss con 128k tokens está ahí.

El futuro del coding: IA que entiende tu código, sin salir de tu máquina.

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *