claude-unlimited

Construye proyectos enteros gastando una fracción de los tokens de Claude.

claude-unlimited saca el trabajo pesado fuera del contexto de Claude: en lugar de que Claude planee, escriba, revise e itere dentro de tu conversación —quemando tokens en cada vuelta, en cada archivo completo y en cada screenshot— delega todo el loop a una CLI que corre sobre un gateway local. Claude solo gasta tokens en una cosa: mandar el prompt y leer el resumen final.

[!TIP] Por qué gastas muchísimos menos tokens de Claude:

  • El loop no vive en el contexto de Claude. Las decenas de iteraciones (plan → code → QA → review → repetir), los contenidos completos de archivos, las capturas y las críticas ocurren en un proceso aparte. Nunca entran a tu ventana de contexto ni a tu factura de Claude.
  • Cada rol usa el combo más barato que sirve, no el modelo premium para todo: el reasoning va a auto/pro-reasoning, el código a auto/best-coding, la visión a auto/best-vision, el reformateo a auto/best-fast. OmniRoute enruta cada combo al proveedor/modelo óptimo (incluidos gratis o económicos).
  • Resultado: una tarea grande que en Claude directo costaría miles de tokens de contexto, aquí le cuesta a Claude apenas el prompt y el resumen. El resto se externaliza al gateway.

Orquestador multi-agente para desarrollo de software de cualquier tipo (frontend, backend, CLIs, scripts, librerías, config…). A partir de un solo prompt corre el loop plan → code → QA → review → iterar → cierre sobre un gateway local OpenAI-compatible, dejando que el orchestrator decida cómo verificar cada tarea.

El QA visual es opcional: cuando una tarea es de UI web renderizable y ver el resultado aporta, el orchestrator la marca para QA visual y el loop usa una skill externa de renderizado (por defecto websight) para capturar la página y dársela a un modelo con visión. Para todo lo demás la revisión es solo lógica (contenido de archivos contra criterios), sin navegador.

[!NOTE] No necesitas instalar websight. claude-unlimited y websight son skills separadas. websight (o cualquier renderizador equivalente vía RENDER_BIN) solo se usa si el orchestrator activa QA visual en alguna tarea. Si no hay renderizador disponible, el loop avisa y degrada a revisión solo lógica — nunca se cae ni te obliga a instalar nada. Para proyectos sin UI (backend, CLIs, scripts, librerías, config) websight no se toca en absoluto.

Cero dependencias de runtime (Node 24 trae fetch y web-streams nativos). El CLI solo habla con el gateway local: no pide, lee ni almacena claves de proveedores (Regla de Cero Claves). Las claves viven en el gateway, no aquí.

Gateway: OmniRoute

claude-unlimited habla con OmniRoute (de @diegosouzapw), un gateway local OpenAI-compatible que expone combos como modelos (auto/pro-reasoning, auto/best-coding, auto/best-vision, auto/best-fast, …) y enruta a los proveedores por debajo. claude-unlimited no es OmniRoute ni lo incluye; solo lo consume.

Cómo funciona

  1. plan — el orchestrator (auto/pro-reasoning) descompone el objetivo en un Blueprint JSON: tareas, archivos objetivo, criterios de QA y, por tarea, un booleano visual_qa (si esa tarea necesita QA visual con websight o no).
  2. Por cada tarea, hasta max_iterations veces:
    • code — el coder (auto/best-coding) devuelve el contenido completo de los archivos y se escriben en --target-dir (con guard de path-traversal).
    • QA visual (opcional) — si visual_qa es true, websight renderiza la página y devuelve un screenshot como data:image/...;base64 (bloque image_url).
    • review — el reviewer (auto/best-vision) recibe el contenido de los archivos
      • los criterios (y el screenshot si hubo QA visual) y responde {approved, critiques}.
    • Si aprueba, la tarea termina; si no, las críticas se realimentan al coder.
  3. cierre — resumen por tarea y código de salida (0 todo aprobado, 2 algo sin aprobar, 1 error de arranque).

Las respuestas de los roles son JSON estricto; el parseo tolera fences ```json y, si un modelo se sale del formato, un formateador hace una pasada correctiva (vía auto/best-fast) para recuperar el JSON antes de rendirse. El loop es resiliente: un fallo en una tarea no tumba la corrida ni pierde los resultados previos.

Requisitos

  • Node.js ≥ 20 (probado en v24).
  • OmniRoute corriendo en local, exponiendo al menos los combos auto/pro-reasoning, auto/best-coding, auto/best-fast (y auto/best-vision si usarás QA visual).
  • Una skill de renderizado instalada solo si vas a usar QA visual — por defecto websight (npm i -g github:luisxavierxd/websight), pero sirve cualquier CLI con el contrato render <target> --viewport <vp> --base64 → data-URI (apúntala con RENDER_BIN). No es obligatoria: si una tarea pide QA visual y no hay renderizador disponible, el loop avisa y degrada a revisión solo lógica (no falla la tarea). Si no usas QA visual, no necesitas instalar nada de esto.

Instalación

npm install -g github:luisxavierxd/claude-unlimited

O para trabajarlo localmente:

git clone https://github.com/luisxavierxd/claude-unlimited.git
cd claude-unlimited
npm link   # (opcional) expone el bin `claude-unlimited` global

Como plugin de Claude Code

El repo es también un marketplace/plugin de Claude Code autocontenido:

/plugin marketplace add luisxavierxd/claude-unlimited
/plugin install claude-unlimited@claude-unlimited

Instala una skill que enseña al agente cómo orquestar claude-unlimited y qué prompts convienen para cada tipo de proyecto (ver SKILL.md).

Uso

claude-unlimited "<prompt>" [--target-dir .] [--url URL] [--viewport desktop|mobile] [--max-iterations N]

Ejemplo (UI web → el orchestrator activará QA visual):

claude-unlimited "una landing con hero centrado, botón CTA y fondo degradado azul→rojo" \
  --target-dir ./demo
# abre ./demo/index.html en el navegador para ver el resultado

Ejemplo (backend/CLI → revisión solo lógica, sin websight):

claude-unlimited "un script Node que lea un CSV y emita un resumen JSON por columna" \
  --target-dir ./tool
  • --target-dir — dónde escribe el coder (default .). El render por defecto (si hay QA visual) es <target-dir>/index.html.
  • --url — renderiza una URL en vez del archivo local generado (QA visual).
  • --viewportdesktop (default) o mobile.
  • --max-iterations — tope de iteraciones por tarea (si no, usa el del Blueprint).

Los eventos (planeando, coder, captura, reviewer, críticas, errores, resumen) se streamean a stderr; el texto generado por los modelos va a stdout.

Variables de entorno

Variable Default Para qué
OMNIROUTE_BASE_URL http://localhost:20128/v1 Base URL del gateway.
OMNIROUTE_API_KEY (vacío) Token propio del gateway (opcional). No es clave de proveedor.
RENDER_BIN (descubre) Binario de la skill de renderizado para QA visual (websight u otra con el mismo contrato). Si no se define, se busca websight en el PATH.
WEBSIGHT_BIN websight Alias retrocompatible de RENDER_BIN.

Tests

npm test        # node --test, sin red real ni navegador

Los tests usan un mock de OmniRoute (servidor HTTP con SSE) y un stub de websight, así que corren sin gateway ni Chromium.

Limitaciones conocidas (MVP)

  • El target de QA visual debe ser una URL http(s):// simple o una ruta absoluta, sin metacaracteres de shell (& | ( ) % " ...); rutas con espacios no están soportadas (endurecimiento de seguridad del subproceso en Windows).
  • Fuera de alcance de este MVP: quality floor por tier, Graceful Exit por piso, --resume/estado, prompt caching, audit log, proyectos multi-repo.

Licencia

MIT © 2026 Luis Xavier García Pimentel Ascencio — ver LICENSE.