Cristhian Villegas
DevOps11 min read4 views

OpenCode: La Alternativa Open Source a Claude Code y Cursor

¿Qué es OpenCode?

Si trabajas en la terminal y quieres un asistente de IA que entienda tu código, ejecute comandos y edite archivos — sin salir de tu entorno — OpenCode es exactamente lo que necesitas.

OpenCode es un agente de programación con IA, open source y gratuito, diseñado para vivir en tu terminal. A diferencia de editores como Cursor o herramientas propietarias como Claude Code, OpenCode te da control total: eliges el proveedor de IA, el modelo, y todo corre en tu máquina.

Terminal con código — entorno de desarrollo

Fuente: Unsplash

📌 Dato: OpenCode tiene más de 120,000 estrellas en GitHub, más de 800 contribuidores, y es usado por más de 5 millones de desarrolladores cada mes.

¿Por qué OpenCode y no otra herramienta?

CaracterísticaOpenCodeClaude CodeCursor
Open source✅ Sí (MIT)❌ No❌ No
Corre en terminal✅ TUI nativa✅ CLI❌ IDE
Elige tu modelo✅ 75+ proveedores❌ Solo Claude⚠️ Limitado
Modelos locales✅ Ollama, LM Studio❌ No❌ No
Privacidad total✅ Tu código no se envía⚠️ Se envía a Anthropic⚠️ Se envía al servidor
PrecioGratis (pagas tu API key)SuscripciónSuscripción

Instalación

OpenCode se puede instalar en macOS, Linux y Windows (recomendado WSL en Windows). Elige tu método preferido:

Instalación rápida (recomendada)

bash
1# Script universal — funciona en macOS y Linux
2curl -fsSL https://opencode.ai/install | bash

Con gestores de paquetes

bash
1# npm
2npm install -g opencode-ai
3
4# Homebrew (macOS / Linux)
5brew install opencode
6
7# Chocolatey (Windows)
8choco install opencode
9
10# Scoop (Windows)
11scoop install opencode
12
13# Arch Linux
14pacman -S opencode

Desde código fuente (Go)

bash
1# Requiere Go 1.21+
2git clone https://github.com/opencode-ai/opencode.git
3cd opencode
4go build -o opencode
5# Asegúrate de que $(go env GOPATH)/bin esté en tu PATH

Con Docker

bash
1docker run -it --rm \
2  -v $(pwd):/workspace \
3  -w /workspace \
4  ghcr.io/opencode-ai/opencode
💡 Tip: En Windows, se recomienda usar WSL2 para la mejor experiencia. OpenCode funciona nativamente en PowerShell, pero algunas herramientas de bash pueden no estar disponibles.

Configuración Inicial

Una vez instalado, necesitas conectar al menos un proveedor de IA. OpenCode lo hace muy sencillo con el comando /connect:

bash
1# Inicia OpenCode en tu proyecto
2cd mi-proyecto
3opencode
4
5# Dentro de la TUI, escribe:
6/connect

Esto abrirá un flujo de autenticación donde puedes agregar tu API key de cualquier proveedor. Las credenciales se guardan en ~/.local/share/opencode/auth.json.

Proveedores principales soportados

  • Anthropic — Claude 4.5, Claude 4, Sonnet, Haiku
  • OpenAI — GPT-4o, o3, o4-mini
  • Google — Gemini 2.5 Pro, Flash
  • DeepSeek — DeepSeek V3, R1
  • Groq — Llama 3, Mixtral (ultra rápido)
  • Ollama — Cualquier modelo local (Llama, CodeLlama, Mistral, etc.)
  • OpenCode Zen — Selección curada y pre-testeada por el equipo de OpenCode

Configuración por proyecto

Puedes crear un archivo opencode.json en la raíz de tu proyecto para configuraciones específicas:

json
1{
2  "provider": {
3    "anthropic": {}
4  },
5  "model": "anthropic/claude-sonnet-4-6",
6  "small_model": "anthropic/claude-haiku-4-5-20251001"
7}
📌 Jerarquía de configuración: OpenCode carga configuraciones en este orden (la última gana): Config remota → Config global (~/.config/opencode/opencode.json) → Variable de entorno OPENCODE_CONFIG → Config del proyecto (opencode.json).

La Interfaz TUI: Tu Copiloto en la Terminal

Al ejecutar opencode en cualquier directorio, se abre la TUI (Terminal User Interface), una interfaz interactiva construida con Bubble Tea que se siente como un chat dentro de tu terminal.

Modos de operación

OpenCode tiene dos modos principales que puedes alternar con Tab:

  • Build (por defecto) — El agente tiene acceso completo: puede leer, escribir, editar archivos y ejecutar comandos. Es el modo para trabajar de verdad.
  • Plan — Modo de solo lectura. El agente analiza tu código, sugiere cambios y planifica features sin modificar nada. Ideal para entender un codebase antes de tocarlo.

Interacción básica

bash
1# Simplemente escribe tu pregunta o instrucción
2> Explícame cómo funciona el módulo de autenticación
3
4# Referencia archivos con @
5> @src/auth/login.service.ts ¿por qué falla el refresh token?
6
7# Ejecuta comandos shell con !
8> !npm test
9
10# Usa slash commands
11> /models      # Ver modelos disponibles
12> /init        # Inicializar AGENTS.md en el proyecto
13> /undo        # Deshacer el último cambio
14> /redo        # Rehacer
15> /share       # Compartir la conversación con un link

Herramientas Integradas

OpenCode viene con un set poderoso de herramientas que el agente de IA usa automáticamente según lo que le pidas:

HerramientaQué hace
bashEjecuta comandos de terminal (npm install, git status, docker build, etc.)
readLee archivos de tu proyecto, soporta rangos de líneas para archivos grandes
editModifica archivos existentes con reemplazos exactos de texto
writeCrea archivos nuevos o sobrescribe existentes
grepBusca contenido en archivos usando expresiones regulares
globEncuentra archivos por patrón (**/*.ts, src/**/*.java)
listLista archivos y directorios con soporte de filtros
webfetchObtiene contenido de páginas web (documentación, APIs, etc.)
websearchBusca en internet sin necesidad de API key adicional
lspIntegración con Language Server Protocol — definiciones, referencias, hover info
todowriteGestiona listas de tareas durante sesiones complejas
questionPregunta al usuario cuando necesita aclaración
💡 Tip: Puedes controlar los permisos de cada herramienta. Por ejemplo, puedes hacer que bash siempre pida confirmación antes de ejecutar, mientras que read sea automático.

Atajos de Teclado

OpenCode usa una leader key (por defecto Ctrl+X) al estilo Vim para evitar conflictos con tu terminal. Primero presionas la leader key, luego el atajo:

AtajoAcción
<leader> nNueva sesión
<leader> lLista de sesiones
<leader> mSeleccionar modelo
<leader> aSeleccionar agente
<leader> eAbrir editor
<leader> tCambiar tema
<leader> bToggle sidebar
<leader> uDeshacer cambio
<leader> rRehacer cambio
<leader> yCopiar último mensaje
TabCiclar entre agentes (Build ↔ Plan)
F2Ciclar entre modelos
Ctrl+PCommand palette
EscapeInterrumpir respuesta actual

Uso en Modo No Interactivo

OpenCode no solo es una TUI interactiva — también puedes usarlo como herramienta de línea de comandos en scripts, CI/CD pipelines y automatizaciones:

bash
1# Ejecutar un prompt directo sin abrir la TUI
2opencode run "Explica cómo funciona el patrón Strategy en este proyecto"
3
4# Continuar la última sesión
5opencode --continue
6
7# Usar un modelo específico
8opencode -m anthropic/claude-sonnet-4-6 run "Refactoriza este servicio"
9
10# Adjuntar archivos al contexto
11opencode run -f src/main.ts -f README.md "Actualiza el README con la nueva API"
12
13# Salida en formato JSON (útil para pipelines)
14opencode run --format json "Lista todos los endpoints de la API"
15
16# Exportar una sesión completa
17opencode export session-id-123 > sesion.json

Modo servidor

OpenCode puede correr como servidor headless, permitiendo conectarse desde otros clientes:

bash
1# Iniciar servidor HTTP
2opencode serve --port 3456
3
4# Abrir interfaz web
5opencode web
6
7# Conectarse a un servidor remoto
8opencode attach http://mi-servidor:3456

Ejemplo Práctico: Refactorizando un Servicio

Veamos un flujo real de trabajo con OpenCode. Supongamos que tienes un servicio Express.js con problemas de manejo de errores:

typescript
1// src/services/user.service.ts — ANTES (con problemas)
2export class UserService {
3  async getUser(id: string) {
4    const user = await db.query('SELECT * FROM users WHERE id = $1', [id]);
5    return user.rows[0];
6  }
7
8  async createUser(data: any) {
9    const result = await db.query(
10      'INSERT INTO users (name, email) VALUES ($1, $2) RETURNING *',
11      [data.name, data.email]
12    );
13    return result.rows[0];
14  }
15}

Abrimos OpenCode y le pedimos:

bash
1> @src/services/user.service.ts Refactoriza este servicio:
2> 1. Agrega validación de entrada con Zod
3> 2. Manejo de errores apropiado con custom exceptions
4> 3. Tipado estricto en vez de "any"

OpenCode leerá el archivo, entenderá el contexto del proyecto, y aplicará los cambios directamente. Si no estás conforme, simplemente escribe /undo para revertir todo.

⚠️ Importante: Siempre revisa los cambios que el agente aplica antes de commitear. Usa /undo si algo no te convence, o trabaja primero en modo Plan para ver la propuesta antes de ejecutarla.

Usando Modelos Locales con Ollama

Una de las ventajas más grandes de OpenCode es la posibilidad de usar modelos locales. Tu código nunca sale de tu máquina:

bash
1# 1. Instala Ollama (si no lo tienes)
2curl -fsSL https://ollama.com/install.sh | sh
3
4# 2. Descarga un modelo de código
5ollama pull qwen2.5-coder:14b
6
7# 3. Configura OpenCode para usar Ollama
8# En opencode.json:
9{
10  "provider": {
11    "ollama": {
12      "options": {
13        "baseURL": "http://localhost:11434/v1"
14      }
15    }
16  },
17  "model": "ollama/qwen2.5-coder:14b"
18}
bash
1# 4. Inicia OpenCode — todo corre local
2opencode
💡 Tip: Para tareas complejas (refactorización grande, diseño de arquitectura), usa modelos cloud como Claude o GPT-4o. Para tareas simples (explicar código, generar tests unitarios), un modelo local como Qwen 2.5 Coder o DeepSeek Coder funciona sorprendentemente bien.

Comandos CLI Más Útiles

Referencia rápida de los comandos que más vas a usar:

bash
1# Gestión de autenticación
2opencode auth login          # Agregar API key de un proveedor
3opencode auth list           # Ver proveedores configurados
4opencode auth logout         # Eliminar credenciales
5
6# Modelos
7opencode models              # Listar modelos disponibles
8opencode models anthropic    # Filtrar por proveedor
9opencode models --verbose    # Ver costos y metadata
10
11# Sesiones
12opencode session list        # Ver todas las sesiones
13opencode session list -n 5   # Últimas 5 sesiones
14
15# MCP (Model Context Protocol)
16opencode mcp add my-server   # Agregar servidor MCP
17opencode mcp list            # Ver servidores conectados
18
19# Agentes personalizados
20opencode agent create        # Crear un agente personalizado
21opencode agent list          # Ver agentes disponibles
22
23# Estadísticas de uso
24opencode stats               # Tokens usados y costos
25opencode stats --days 7      # Últimos 7 días
26opencode stats --models      # Desglose por modelo
27
28# Actualización
29opencode upgrade             # Actualizar a la última versión

AGENTS.md: Instrucciones para el Agente

Al igual que otras herramientas de coding con IA, OpenCode soporta un archivo AGENTS.md en la raíz de tu proyecto. Este archivo le da contexto al agente sobre las convenciones, reglas y preferencias de tu proyecto:

markdown
1# AGENTS.md
2
3## Convenciones del proyecto
4- Usamos TypeScript estricto con ESLint + Prettier
5- Los servicios van en src/services/ con el sufijo .service.ts
6- Los tests van junto al archivo con el sufijo .spec.ts
7- Usamos Zod para validación de entrada
8
9## Stack
10- Runtime: Node.js 22
11- Framework: Express.js
12- ORM: Drizzle
13- DB: PostgreSQL
14- Testing: Vitest
15
16## Reglas
17- Nunca uses "any" — siempre usa tipos explícitos
18- Los errores se manejan con custom exceptions, no con try/catch genérico
19- Cada PR debe incluir tests

Para crear este archivo automáticamente basado en tu proyecto:

bash
1# Dentro de la TUI de OpenCode
2/init

Conclusión

OpenCode es la herramienta que muchos desarrolladores estaban esperando: un agente de IA para programar que es open source, agnóstico al modelo, y respetuoso con tu privacidad. No te ata a ningún proveedor, funciona con modelos locales, y tiene una TUI que se siente natural en cualquier flujo de trabajo de terminal.

Si ya usas la terminal como tu entorno principal de desarrollo, OpenCode se integra como si siempre hubiera estado ahí. Y si vienes de herramientas como Cursor o Claude Code, te sorprenderá lo completo y flexible que es — sin pagar suscripción.

Share:
CV

Cristhian Villegas

Software Engineer specializing in Java, Spring Boot, Angular & AWS. Building scalable distributed systems with clean architecture.

Comments

Sign in to leave a comment

No comments yet. Be the first!

Related Articles