0% read

Gemma 4 con OpenAI Codex CLI: cómo montar un asistente de código local, gratis y privado (2026)

abr. 16, 2026

Gemma 4 con OpenAI Codex CLI: cómo montar un asistente de código local, gratis y privado (2026)

Cuando OpenAI lanzó Codex CLI a principios de abril de 2026, la primera pregunta que inundó Hacker News no fue ¿funciona?, sino ¿puedo enchufarle un modelo local y dejar de pagar por token?

La respuesta corta: sí. Codex CLI habla perfectamente con cualquier endpoint compatible con la API de OpenAI, y Gemma 4 sobre Ollama es uno de los reemplazos más limpios que se pueden poner detrás. Resultado: un agente de código en la terminal que no cuesta un céntimo, que nunca envía tu código fuente a un tercero y que sigue funcionando en un avión o detrás del cortafuegos de la empresa.

Esta guía recorre el camino completo —instalar Ollama, descargar la variante adecuada de Gemma 4, configurar las variables de entorno y probar cuatro tareas reales— para que lo tengas listo en una tarde. Si llevabas tiempo dándole vueltas a Codex pero te frenaba la factura de la API o la revisión de cumplimiento, este es el artículo que estabas esperando.

¿Qué es OpenAI Codex CLI?

Codex CLI es el agente de programación en terminal de OpenAI. Piénsalo como un primo de GitHub Copilot en línea de comandos: en lugar del editor, vives en la shell y hablas con él en lenguaje natural:

  • Generar código: codex "crea una API REST con autenticación JWT"
  • Explicar un archivo: codex explain app/main.py
  • Refactorizar: codex refactor src/cache.ts --goal "reducir memoria"
  • Corregir errores: codex fix --error "TypeError: undefined is not a function"

De fábrica apunta a api.openai.com, pero por dentro es un cliente HTTP estándar en formato OpenAI. Eso significa que cualquier cosa que hable el protocolo de chat completions —Ollama, LM Studio, vLLM, el servidor de Llama.cpp— funciona. Ese es el truco.

¿Por qué sustituir OpenAI por Gemma 4?

Tres razones que aguantan el contraste con la realidad.

Privacidad. Tu código no sale de la máquina. Ningún proveedor ve tu lógica de negocio, tus secretos ni el esquema de tu base de datos. Para equipos bajo RGPD, ISO 27001 o políticas internas de propiedad intelectual, no es un "nice to have".

Coste. OpenAI factura por token y Codex suele enviar el archivo entero al contexto. Una refactorización sobre un repositorio mediano puede consumir entre 5 y 10 dólares sin darte cuenta. Gemma 4 en tu portátil cuesta exactamente cero —puedes dejar un bucle de agente corriendo toda la noche.

Offline. Trenes, aviones, oficinas del cliente, redes aisladas. Si trabajas en entornos con conexión precaria o prohibida, un modelo local no es un lujo, es la única opción.

Hace dos años esto no era práctico por la calidad —los modelos locales no escribían código de verdad—. Gemma 4 cierra ese hueco. Los checkpoints 26B MoE y 31B Dense son lo bastante buenos en seguimiento de instrucciones, function calling y salida estructurada como para que dejes de notar que estás offline.

Requisitos previos

Antes de empezar:

  • Ollama instalado (ollama.com)
  • Gemma 4 descargado (26B o 31B —elegimos a continuación)
  • OpenAI Codex CLI instalado
  • Node.js 20+
  • Hardware: mínimo 16 GB de RAM para 26B, 24 GB+ para 31B

¿No sabes qué tamaño elegir? Versión corta: 26B MoE es el punto dulce para portátiles porque solo activa unos 4B parámetros por token. Si tienes un sobremesa con margen, 31B Dense es notablemente más inteligente en tareas largas.

Paso 1: Instalar Ollama y descargar Gemma 4

Ollama se encarga de las descargas, la cuantización y el servidor HTTP local en un solo binario.

Instalación

# macOS
brew install ollama

# Linux
curl -fsSL https://ollama.com/install.sh | sh

# Windows: descarga el instalador desde ollama.com y ejecútalo

Descarga del modelo

Para la mayoría del trabajo de código, Gemma 4 26B (MoE) es la mejor relación calidad-precio:

ollama pull gemma4:26b-a4b

Si tienes memoria de sobra (24 GB+ unificados o una GPU de 24 GB) y quieres máxima calidad:

ollama pull gemma4:31b

La descarga ronda los 15–20 GB. Verifica que funciona:

ollama run gemma4:26b-a4b "Escribe una función Python que invierta un string"

Si obtienes una respuesta razonable, este paso está hecho.

Paso 2: Levantar el servidor de Ollama

Ollama expone una API compatible con OpenAI en http://localhost:11434/v1. Arráncalo en una terminal dedicada:

ollama serve

Deja esa ventana abierta. En otra terminal, confirma que la API responde:

curl http://localhost:11434/v1/models

Deberías ver una lista JSON que incluya gemma4:26b-a4b. Si curl se cuelga o rechaza la conexión, revisa que el puerto 11434 no esté ocupado.

Paso 3: Instalar OpenAI Codex CLI

Codex CLI se distribuye vía npm:

npm install -g @openai/codex-cli
codex --version

Deberías ver 1.x.x o superior. Si la instalación falla, confirma que tu Node.js es 20 o más reciente —Codex usa APIs de fetch nuevas.

Paso 4: Apuntar Codex CLI hacia Gemma 4

Codex CLI respeta las variables de entorno estándar del SDK de OpenAI. Sobrescribe tres y lo redirigirás a Ollama.

macOS / Linux

Añade a ~/.zshrc o ~/.bashrc:

export OPENAI_API_BASE="http://localhost:11434/v1"
export OPENAI_API_KEY="ollama"   # cualquier string no vacío
export CODEX_MODEL="gemma4:26b-a4b"

Recarga: source ~/.zshrc.

Windows (PowerShell)

$env:OPENAI_API_BASE = "http://localhost:11434/v1"
$env:OPENAI_API_KEY  = "ollama"
$env:CODEX_MODEL     = "gemma4:26b-a4b"

Prueba de humo

codex "imprime hello world en Python"

Salida esperada:

print("Hello, World!")

Si ves Model not found o Connection refused, salta a Resolución de problemas.

Paso 5: Cuatro tareas reales

Hello World es un mal benchmark. Estas cuatro tareas sí reflejan el día a día.

1. Crear un endpoint REST

codex "crea un endpoint FastAPI que reciba email y password, los valide y devuelva un JWT"

Gemma 4 26B genera algo como:

from fastapi import FastAPI, HTTPException
from pydantic import BaseModel, EmailStr
from datetime import datetime, timedelta
import jwt

app = FastAPI()
SECRET_KEY = "your-secret-key"

class UserLogin(BaseModel):
    email: EmailStr
    password: str

@app.post("/login")
def login(user: UserLogin):
    if user.email == "user@example.com" and user.password == "password123":
        token = jwt.encode(
            {"sub": user.email, "exp": datetime.utcnow() + timedelta(hours=1)},
            SECRET_KEY, algorithm="HS256",
        )
        return {"access_token": token, "token_type": "bearer"}
    raise HTTPException(status_code=401, detail="Invalid credentials")

2. Explicar código desconocido

Guárdalo como complex.py:

def f(n): return n if n < 2 else f(n-1) + f(n-2)

Luego:

codex explain complex.py

Gemma 4 identificará la Fibonacci recursiva ingenua, marcará la complejidad O(2^n) y propondrá memoización.

3. Refactorizar por rendimiento

codex refactor complex.py --goal "optimize for speed"

Reescritura esperada:

from functools import lru_cache

@lru_cache(maxsize=None)
def f(n):
    return n if n < 2 else f(n-1) + f(n-2)

De O(2^n) a O(n) con un decorador. Solución de manual.

4. Corregir un error real

codex fix --error "TypeError: 'NoneType' object is not subscriptable" --file app.py

Gemma 4 recorrerá app.py, encontrará la línea que indexa un retorno que puede ser None y emitirá un parche con la guarda que faltaba.

Gemma 4 local vs. OpenAI en la nube: ¿qué se pierde?

DimensiónGemma 4 26B (local)Gemma 4 31B (local)GPT-4 (nube)
Calidad de generación~nivel GPT-3.5~nivel GPT-4Máxima
Velocidad20–40 t/s (M1/M2)15–30 t/s100+ t/s
Latencia de red0 ms0 ms200–500 ms
Coste por tarea$0$0$0.15–$0.30
Coste mensual (100/semana)$0$0$60–$120
PrivacidadLocalLocalPrompt subido
OfflineNo

La diferencia de throughput asusta sobre el papel, pero sin latencia de red las tareas cortas se perciben casi igual. Donde la nube todavía gana claro es en bucles de agente multietapa sobre repositorios enormes: ahí los 100+ t/s se acumulan.

Para números de hardware concretos, mira Gemma 4 en Mac: rendimiento de M1 a M4 y la guía para NVIDIA RTX.

Resolución de problemas

"Connection refused"

Ollama no está corriendo o escucha en otro puerto. Prueba curl http://localhost:11434/v1/models. Si falla, reinicia ollama serve y revisa que el puerto 11434 no esté ocupado.

"Model not found"

ollama list muestra la etiqueta exacta que instalaste. CODEX_MODEL tiene que coincidir carácter a carácter (gemma4:26b-a4b, no gemma4-26b).

Codex se cuelga o hace timeout

Probablemente estás paginando a disco porque el modelo no cabe en RAM. Cambia 31B por 26B o baja a Q4. También puedes subir el timeout con --timeout 120.

Salida incoherente

Los prompts vagos afectan más al modelo local que a GPT-4. No escribas "mejóralo"; escribe "convierte esta función a async/await y añade manejo de errores estructurado".

Nivel avanzado: function calling

Gemma 4 soporta tool calls estilo OpenAI, así que Codex CLI puede accionar de verdad cosas externas: consultar tus issues de GitHub, ejecutar tu suite de tests, atacar una base de datos de staging. Define las herramientas como JSON Schema y pásaselas con --tools tools.json. Tutorial completo en Function calling con Gemma 4 en la práctica.

Preguntas frecuentes

¿Puedo usar Gemma 4 E2B o E4B en lugar de 26B? Técnicamente sí, en la práctica no. Los edge variants generan fragmentos válidos, pero se rompen en cuanto hay contexto real. Para Codex, quédate con 26B o 31B.

¿Funciona en Windows? Sí. Ollama corre nativo en Windows 11 y Codex CLI es Node.js. La única diferencia es usar la sintaxis $env: de PowerShell para las variables de entorno.

¿Puedo usar el mismo montaje con Cursor, Continue o Aider? Sí —cualquier herramienta compatible con la API de OpenAI sirve—. Apunta su base URL a http://localhost:11434/v1, configura el nombre del modelo y listo. Tenemos guías específicas para Aider y Claude Code Router.

¿Cuánto cuesta todo esto? Cero euros. Ollama, Gemma 4 y Codex CLI son gratis. Lo único que sube es la factura de la luz.

Gemma 4 vs. Qwen 3 para programar, ¿cuál es mejor? Gemma 4 va mejor en seguimiento de instrucciones y JSON estructurado; Qwen 3 a veces es más rápido en el mismo hardware y maneja mejor el chino. Comparativa completa en Gemma 4 vs Qwen 3.

¿Corre en una Raspberry Pi? Solo el modelo E2B, y únicamente para prompts de juguete. Para Codex hace falta una máquina con 16 GB+ de RAM.

¿Y si 31B sigue sin dar el nivel? Desactiva OPENAI_API_BASE y vuelves a la nube de OpenAI. Muchos equipos usan un modelo híbrido: local para lo cotidiano, nube para los uno o dos problemas difíciles de la semana.

Artículos relacionados

gemma4 — interact

Stop reading. Start building.

~/gemma4 $ Get hands-on with the models discussed in this guide. No deployment, no friction, 100% free playground.

Launch Playground />
Gemma 4 AI

Gemma 4 AI

Related Guides

Gemma 4 con OpenAI Codex CLI: cómo montar un asistente de código local, gratis y privado (2026) | Blog