Hay una creencia instalada en la comunidad dev sobre los subscriptions de herramientas IA que está, con todo respeto, bastante equivocada: que el debate es puramente económico.
"Claude Code cuesta $100/mes, OpenRouter es más barato, hacé las cuentas." Sí, pero eso es como decir que cambiar de IDE es cuestión de cuánto pesa el ejecutable. El precio es el trigger, no la decisión real.
La decisión real es de arquitectura mental. Y eso nadie lo escribió cuando salió la oleada de posts de "me fui de Claude Code". Yo también me fui. Pero tardé tres semanas más que todos en publicar esto porque quería entender por qué cambié, no solo que cambié.
Claude Code alternativas costo: el análisis que falta en todos lados
Arranquemos con lo que sí es verdad: Claude Code es excepcionalmente bueno. Si en algún momento dudaste de eso, no lo usaste en serio o lo usaste mal. La integración agentica, cómo mantiene contexto de proyecto, cómo puede ejecutar comandos y leer output sin que vos hagas de middleware —es genuinamente impresionante.
Y el precio de $100/mes (Max plan) tiene una lógica: estás pagando por tokens de Sonnet 4 y Opus 4 con rate limits generosos y una UX que casi no te hace pensar en el modelo subyacente.
Ese "casi" es importante. Volvamos.
Cuando escribí sobre el mes que Anthropic no respondió, la queja central era vendor lock-in y soporte. Pero lo que quedó sin resolver en ese post era esto: ¿qué pasa cognitivamente cuando sabés que cada prompt tiene un costo invisible?
La respuesta es: te autocensurás. Empezás a "guardar" los prompts buenos para proyectos importantes. Dejás de explorar. Y explorar es exactamente donde está el valor de la IA en desarrollo.
Eso fue lo que me rompió el esquema.
Zed + OpenRouter: cómo lo configuré en la práctica
Zed ahora soporta cualquier proveedor compatible con OpenAI API. OpenRouter expone exactamente eso. El setup es sorprendentemente directo:
// ~/.config/zed/settings.json
{
"assistant": {
"version": "2",
"default_model": {
"provider": "openai", // Zed usa el adaptador OpenAI para OpenRouter
"model": "anthropic/claude-sonnet-4" // Igual tengo Sonnet, pero ahora elijo cuándo
},
"openai_api_url": "https://openrouter.ai/api/v1", // El truco está acá
"api_key": "sk-or-v1-..." // Tu key de OpenRouter
}
}
Lo que esto habilita es algo que Claude Code no tiene: selección de modelo por tarea. Y eso cambia todo.
# Mi workflow actual en Zed
# Para review de código y explicaciones: Gemini 2.5 Flash
# Para arquitectura y razonamiento complejo: Claude Sonnet 4 o DeepSeek R1
# Para generación rápida de boilerplate: Qwen 2.5 Coder 32B (GRATIS en OpenRouter ahora mismo)
# Para análisis de logs largos: Gemini 2.5 Pro (ventana de contexto enorme)
Ese Qwen 2.5 Coder que mencioné: nadie lo menciona en los posts de "alternativas a Claude Code" y es un error. Para generar tipos TypeScript, escribir tests unitarios, hacer refactors mecánicos —es sorprendentemente capaz y en OpenRouter tenés requests gratis mientras el proveedor lo subsidia.
Los modelos raros que encontré explorando OpenRouter (y que no hubiera probado si cada request me costara plata "real"):
- Mistral Codestral: especializado en código, velocísimo para completions cortas
- DeepSeek R1: razonamiento encadenado, ideal cuando tenés un bug que no entendés
- Nous: Hermes 3: para prompts de sistema complejos y few-shot learning
- Qwen 2.5 72B: multilingüe, útil cuando tenés que documentar en inglés algo que pensaste en español
La diferencia psicológica es brutal: cuando el costo es visible y por uso, explorás más, no menos. Paradoja de la abundancia percibida.
Lo que perdí al salir de Claude Code (sin romanticismo)
Acá me pongo honesto porque si no, este post es propaganda.
Perdí la agenticidad sin fricción. Claude Code puede correr tu test suite, leer el output, iterar, commitear. Zed + OpenRouter no hace eso. Tenés que hacer de puente vos. Copiás output, pegás en el chat, pedís análisis. Es más trabajo.
Perdí el contexto de proyecto persistente. Claude Code sabe que tu proyecto usa PostgreSQL, que tu convención de nombres es camelCase, que tenés un lib/utils.ts con helpers comunes. Todo eso lo re-contextualizás en Zed con un system prompt o un archivo CLAUDE.md (que ahora renombré AI_CONTEXT.md), pero es setup manual.
Perdí velocidad en los picos. Cuando estoy en flow y mando 50 prompts en una hora, Claude Code no parpadea. Con OpenRouter, dependiendo del modelo, aparecen rate limits del proveedor subyacente. No siempre, pero pasa.
Esto importa decirlo porque en Project Glasswing argumenté que entender qué hace el código que usás es responsabilidad tuya. Lo mismo aplica acá: entender exactamente qué perdés cuando optimizás costos es parte de la decisión. Si tu trabajo es mayoritariamente agentico —builds, deployments, iteración rápida— quedáte en Claude Code. En serio.
Los gotchas que nadie te avisa
El gotcha de los rate limits silenciosos: Algunos modelos en OpenRouter tienen rate limits que no están claramente documentados. Tu request no falla —espera. Y Zed no siempre te muestra que está esperando de forma obvia. Perdí 10 minutos pensando que Zed se había colgado.
// Tip: si usás OpenRouter desde código propio, siempre manejá el retry
async function completarConOpenRouter(prompt: string, modelo: string) {
const maxReintentos = 3;
for (let intento = 0; intento < maxReintentos; intento++) {
try {
const respuesta = await fetch('https://openrouter.ai/api/v1/chat/completions', {
method: 'POST',
headers: {
'Authorization': `Bearer ${process.env.OPENROUTER_API_KEY}`,
'HTTP-Referer': 'https://tu-sitio.com', // OpenRouter lo pide para analytics
'Content-Type': 'application/json'
},
body: JSON.stringify({
model: modelo,
messages: [{ role: 'user', content: prompt }]
})
});
// 429 = rate limit, esperamos con backoff exponencial
if (respuesta.status === 429) {
const espera = Math.pow(2, intento) * 1000;
console.log(`Rate limit en intento ${intento + 1}, esperando ${espera}ms`);
await new Promise(r => setTimeout(r, espera));
continue;
}
return await respuesta.json();
} catch (error) {
if (intento === maxReintentos - 1) throw error;
}
}
}
El gotcha del contexto entre modelos: Si empezás una conversación con Sonnet 4 y la continuás con Gemini Flash, el contexto no se transfiere mágicamente en Zed. Zed sí manda el historial completo de la conversación, pero el modelo nuevo lo interpreta diferente. Para trabajo de continuidad, hay que quedarse en el mismo modelo por sesión.
El gotcha de los precios en tiempo real: Los precios de modelos en OpenRouter fluctúan. No dramáticamente, pero fluctúan. El mismo modelo que costaba $0.30/M tokens input la semana pasada puede estar a $0.40 esta semana. Configuré una alerta básica para monitorear esto —no sea cosa que el ahorro se evapore.
El gotcha de HTTP-Referer: OpenRouter técnicamente requiere que mandes un header HTTP-Referer con la URL de tu app. Si no lo mandás no falla, pero afecta sus analytics internos y potencialmente tus rate limits a largo plazo. Lo aprendí leyendo los docs a fondo, no de ningún tutorial.
Lo que gané que no esperaba
Hay algo que no anticipé: cuando empezás a pensar en términos de "qué modelo es el correcto para esta tarea" en lugar de "uso el modelo que tengo", empezás a pensar mejor sobre la tarea misma.
Es como lo que pasó cuando metí el historial de git de Linux en una base de datos: el proceso de preparar los datos para el análisis me enseñó más sobre el kernel que el análisis mismo. La fricción fue el aprendizaje.
Ahora tengo un workflow documentado. Sé cuándo uso cada modelo. Sé cuánto gasto por tipo de tarea. Y ese conocimiento se transfiere: cuando algún cliente me pregunta si debería integrar IA en su producto, tengo respuestas concretas sobre costos operativos reales, no estimaciones.
En paralelo, Zed como editor tiene ventajas propias que no tienen que ver con IA: es rápido de forma ridícula, la colaboración en tiempo real funciona sin setup de servidor, y el modelo de extensiones en Rust/WASM es interesante para cuando tenga ganas de meterme ahí como hice con HAProxy.
FAQ: Claude Code alternativas costo, Zed y OpenRouter
¿Zed con OpenRouter reemplaza completamente a Claude Code?
No, y no lo pretende. Reemplaza el caso de uso de "chat con IA mientras programo" muy bien. No reemplaza la agenticidad de Claude Code —correr comandos, iterar sobre output, mantener contexto de proyecto automáticamente. Si tu workflow depende mucho de eso, el ahorro no vale la fricción.
¿Cuánto estoy gastando realmente con OpenRouter comparado con $100/mes de Claude Code?
Mi gasto del último mes fue $23. Pero trabajo en proyectos Next.js/TypeScript medianos, no en agentes que corren solos horas. Si trabajás en proyectos de ML training como los que describí en el post de MegaTrain, los números cambian mucho.
¿Por qué Zed y no Cursor o Windsurf que también soportan múltiples modelos?
Cursor y Windsurf agregan su propia capa de abstracción y precio. Zed es más directo: editor + tu key de API. Menos magia, más control. Para mi estilo de trabajo —entender qué está pasando en cada capa— eso importa.
¿Los modelos de OpenRouter tienen la misma calidad que los mismos modelos directo de Anthropic/Google?
Sí, son los mismos modelos. OpenRouter es un router, no un fine-tuning o una copia. Mandás una request a anthropic/claude-sonnet-4 en OpenRouter y llega a la API de Anthropic. Lo que OpenRouter agrega es la capa de routing, billing unificado y fallbacks. La calidad del output es idéntica.
¿Cómo manejo el contexto de proyecto si no tengo la integración automática de Claude Code?
Tengo un archivo AI_CONTEXT.md en la raíz de cada proyecto. Describe el stack, las convenciones de código, los módulos principales, y qué no hacer (ej: "no uses axios, el proyecto usa fetch nativo"). Al arrancar una sesión nueva en Zed, pego ese contenido como system prompt. Tarda 30 segundos y el modelo tiene contexto suficiente para el 90% de las tareas.
¿Tiene sentido usar OpenRouter si ya tengo acceso directo a las APIs de Anthropic y Google?
Depende de cuántos modelos usés activamente. Si usás solo Claude, no hay ventaja real —pagás un markup por el routing. Si alternás entre Claude, Gemini, DeepSeek y modelos open-source, OpenRouter te ahorra mantener 4 keys, 4 billing dashboards y 4 implementaciones de cliente. Para mí ese overhead vale el markup.
Conclusión: la decisión real no es de precio
Te repito lo que dije al principio porque ahora tiene más carga: esto no es sobre $100/mes. Es sobre qué tipo de relación querés tener con tus herramientas de IA.
Claude Code te abstrae el modelo, el costo, la infraestructura. Esa abstracción tiene valor —te deja focalizarte en el problema. Pero también te saca información. No sabés cuánto cuesta tu workflow real. No tenés incentivo para experimentar con otros modelos. Y no desarrollás el juicio sobre cuándo usar qué.
Yo aprobé Análisis II en el cuarto intento cursando con el traje puesto porque laburaba full time. Cada intento fallido me enseñó algo que el primero no me iba a enseñar de ninguna manera. No romanticizo el sufrimiento innecesario —si hubiera aprobado en el primero, mejor. Pero sí creo que la fricción que elegís conscientemente te hace más fuerte que la que evitás a cualquier costo.
Optimizar ciegamente hacia cero fricción en tus herramientas de desarrollo es elegir no desarrollar juicio. Lo que haría diferente: empezar con Claude Code para entender qué querés, migrar a OpenRouter cuando tenés criterio para elegir modelos. En ese orden.
Si ya pasaste por el proceso de cuestionar en qué confiás en tu supply chain de código, este es el mismo proceso aplicado a tus herramientas de IA. No es nihilismo ni minimalismo —es entender exactamente qué pagás y por qué.
Este artículo fue publicado originalmente en juanchi.dev
Top comments (0)