Claude Code
Claude Code es un componente del catálogo que no es una base de datos: es un agente al que los demás servicios del proyecto le mandan trabajo por HTTP. Conectar un servicio a él le entrega una URL y un token, igual que conectarlo a un Postgres le entrega una cadena de conexión.
Trabaja con tu suscripción de Claude (Pro, Max, Team o Enterprise): cada componente lleva la credencial de quien lo creó y nadie más gasta con ella. Lo que cuesta cada respuesta se descuenta además del crédito del agente de tu espacio.
Sacar tu token
El componente trabaja con el token de tu sesión de Claude Code, no con una clave de API. Dura un año.
Instala Claude Code y entra una vez
curl -fsSL https://claude.ai/install.sh | bash
claude
La primera vez abre el navegador para iniciar sesión. Después puedes salir con /exit.
Genera el token
claude setup-token
Tras autorizar en el navegador, imprime un token que empieza por sk-ant-oat01-. Cópialo entero.
Añadir el componente
En el lienzo, clic derecho y Claude Code dentro de Agentes. El diálogo pide el token, el modelo y el esfuerzo; sin token no se puede crear. Desde la terminal:
fundaia new tienda cerebro --template claude-code --setup-token sk-ant-oat01-… --model claude-sonnet-5 --effort high
Sin --setup-token, el CLI lo pide por teclado. A quien administra la instancia no se le pide si el servidor tiene configurado un token propio: sus componentes usan ese.
Cuando esté en marcha, conecta los servicios que vayan a usarlo. Reciben CLAUDE_CODE_URL, CLAUDE_CODE_TOKEN y CLAUDE_CODE_MODEL.
Llamarlo desde un servicio
const response = await fetch(`${process.env.CLAUDE_CODE_URL}/prompt`, {
method: 'POST',
headers: {
authorization: `Bearer ${process.env.CLAUDE_CODE_TOKEN}`,
'content-type': 'application/json',
},
body: JSON.stringify({ prompt: 'Resume este texto: …' }),
})
const { result, costUsd, tokens } = await response.json()
modelen el cuerpo pide otro modelo para esa petición, siempre que esté entre los permitidos; si no, responde400 model_not_allowedcon la lista.- Atiende dos peticiones a la vez y encola hasta ocho; con la cola llena responde
503 busyyretryAfterSeconds. Cada petición tiene diez minutos.
Modelo y esfuerzo
La lista de modelos se actualiza sola: la plataforma pregunta a la API de Anthropic qué modelos hay al arrancar y cada seis horas, así que un modelo nuevo aparece sin esperar a una versión. Además hay tres alias que Claude Code resuelve siempre al último de su familia:
| Alias | Para qué |
|---|---|
opus | El Opus más reciente: refactores grandes, trabajo agéntico largo |
sonnet | El Sonnet más reciente: casi la calidad de Opus, bastante más barato. Por defecto |
haiku | El Haiku más reciente: rápido y barato para trabajo mecánico |
También puedes fijar un modelo concreto (claude-opus-5, claude-sonnet-5…). El contenedor acepta cualquier modelo de las tres familias, también los que salgan después, sin redesplegar. Fable queda fuera: cuesta más que Opus y agotaría el crédito antes que ninguno.
Para descubrir modelos la instancia usa ANTHROPIC_API_KEY si la tiene y, si no, el token de claude setup-token de la máquina. Sin ninguno de los dos se ofrece la lista conocida.
El esfuerzo es cuánto razona el modelo antes de contestar: low, medium, high (por defecto), xhigh o max. Un nivel que el modelo no soporta se aplica como el más alto que sí soporta. Un servicio que llama puede elegir el modelo, pero no el esfuerzo.
Los dos se cambian en Ajustes → Agente o desde la terminal; el contenedor se reinicia para recogerlos:
fundaia agent tienda cerebro # qué tiene (nunca enseña el token)
fundaia agent tienda cerebro --model opus --effort max
fundaia agent tienda cerebro --setup-token sk-ant-oat01-… # cuando caduque, uno nuevo
Versión de Claude Code
El componente se mantiene al día solo. Cada seis horas la plataforma mira cuál es la última versión de Claude Code y, si es más nueva que la de la imagen, la construye con esa versión exacta. Después pasa los componentes a la imagen nueva de uno en uno y sin cortar nada: espera a que cada uno no tenga peticiones en curso ni en cola, arranca el contenedor nuevo y sólo cuando contesta retira el viejo, que termina lo que tuviera entre manos antes de apagarse. Mientras se apaga responde 503 busy con retryAfterSeconds, igual que con la cola llena.
Un componente que sigue ocupado diez minutos se queda en su versión hasta la siguiente pasada. Uno dormido también se actualiza, en la misma pasada y por turno: como no tiene nada en curso no se espera a que termine, se arranca con la imagen nueva y, si nadie le ha hecho una petición mientras tanto, se vuelve a dormir enseguida. Si le llega una petición durante el cambio, se atiende (con el contenedor viejo o con el nuevo) y el componente se queda despierto hasta su ventana de inactividad normal. No se toca uno que se paró antes de que venciera esa ventana, uno caído o uno cuyo espacio no puede arrancar ahora mismo. GET /health dice la versión que lleva cada contenedor en claudeCode.
Qué está haciendo
La pestaña Actividad del componente enseña cada petición que llegó y cómo acabó, y lo que está procesando en este momento:
| Desenlace | Qué significa |
|---|---|
| Contestada | Llegó al modelo y volvió con respuesta. Es la única que gasta |
| Fallida | Llegó al modelo y algo se rompió: tiempo agotado, error del agente, respuesta ilegible |
| Rechazada | No llegó: cola llena, modelo no permitido, cuerpo que no es JSON |
Muchas rechazadas son un componente saturado, no roto: reintenta o sube CLAUDE_MAX_CONCURRENT en sus variables. Cada petición guarda también cuánto esperó en cola y los primeros 500 caracteres del prompt (CLAUDE_PROMPT_EXCERPT_CHARS lo cambia; con 0 no se guarda texto). La respuesta no se guarda nunca.
fundaia prompts tienda cerebro --range 24h
fundaia prompts tienda cerebro --outcome rejected
Cuánto gasta
La pestaña Consumo enseña, por petición contestada, los tokens (entrada, salida, lectura y escritura de caché), el coste, la duración y el modelo, con gráficas de gasto y de tokens. La lectura de caché es la mayor parte de los tokens y la más barata.
fundaia consumption tienda cerebro --range 30d
Los números los reporta el propio Claude Code al terminar cada petición; la plataforma los recoge del contenedor cada treinta segundos, sin despertarlo, y los descuenta del crédito del espacio. Esta pestaña responde «en qué se ha ido»; Facturación responde «cuánto queda».