Comenzar con Claude Managed Agents autoalojado
Inicia Claude Managed Agents autoalojado en una sola máquina con Docker Compose y ejecuta una primera sesión en un contenedor de sandbox.
En esta guía de inicio rápido, inicias Claude Managed Agents autoalojado en una sola máquina con Docker Compose. El stack de Compose consta del servidor, su base de datos PostgreSQL y un conjunto de workers que ejecutan cada sesión en su propio contenedor de sandbox. Después, chateas con un agente desde tu terminal y confirmas que sus llamadas a herramientas se ejecutaron en un contenedor de sandbox. Luego puedes abrir la sesión en la consola de tu servidor.
Para producción, Anthropic recomienda los dos charts de Helm de la versión. Consulta Implementar en Kubernetes.
Claude Code
Deja que Claude Code ejecute esta guía de inicio rápido por ti
Configura Claude Managed Agents autoalojado en esta máquina siguiendo https://platform.claude.com/docs/en/managed-agents/self-hosted/quickstart.md. Ya descargué el archivo de la versión.Requisitos previos
- El archivo de la versión: Para solicitar acceso a la descarga, contacta al equipo de tu cuenta de Anthropic.
- Una clave de API de Claude: El servidor la usa para las llamadas al modelo. Crea una en la Claude Console.
- Docker: La versión más reciente de Docker Engine con el plugin de Compose (
docker compose, no el antiguodocker-compose). - Un host con al menos dos CPU: x86-64 o Arm. En un host más pequeño, establece
CMA_SANDBOX_CPUSen su número de CPU cuando crees.env. - Acceso a la red en el primer inicio: La primera compilación descarga contenido de Docker Hub, los repositorios de paquetes de Alpine y las versiones de GitHub.
- Herramientas: En la máquina donde ejecutas Docker, necesitas
openssly la CLIant.
Iniciar el stack
Extraer el archivo
Extrae el archivo y trabaja desde su directorio
compose. En el comando, reemplaza<archive>con el nombre de tu archivo, sin.tar.gz.tar -xzf <archive>.tar.gz && cd <archive>/composeSi tu umask es más estricto que
022, los binarios pierden su permiso de ejecución para otros usuarios y el contenedor del servidor no puede iniciarlos. En ese caso, establécelo en022y vuelve a extraer el archivo.Crear el archivo .env
Compose lee los secretos del stack desde un archivo
.envjunto adocker-compose.yml. Crea el archivo:cat > .env <<EOF CMA_PG_PASSWORD=$(openssl rand -hex 32) ANTHROPIC_API_KEY=sk-ant-... CMA_SERVER__API_KEY=$(openssl rand -hex 32) CMA_STORE__CREDENTIALS_ENCRYPTION_KEY=$(openssl rand -base64 32) EOF chmod 600 .envAbre
.enven un editor y reemplazask-ant-...con tu clave de API de Claude. El bloque genera el resto: la contraseña de la base de datos, la clave de API del servidor que envían tus aplicaciones y la clave que cifra los secretos almacenados del servidor.Iniciar los contenedores
Compila e inicia el stack y luego sigue el registro del servidor:
docker compose up --build -d docker compose logs -f cma-serverCuando el registro muestre una línea con
msg="cma-server listening", presiona Ctrl+C para dejar de seguirlo.Comprobar que el servidor está listo
curl -s http://127.0.0.1:8400/cma-server/readyzUn servidor listo responde con
"status":"ready". Justo después del inicio, puede responder"status":"degraded"durante unos segundos mientras se ejecutan sus primeras comprobaciones. Si permanece endegradedo responde"status":"not_ready", consulta Solución de problemas.
Ejecutar tu primera sesión
Crea un agente y chatea con él desde tu terminal con la CLI ant.
Apuntar la CLI a tu servidor
Abre una segunda terminal en el mismo directorio y resérvala para
ant. Los siguientes comandos establecenANTHROPIC_API_KEYen la clave de API de tu servidor, no en tu clave de API de Claude, como explica Llamar a la API en un servidor autoalojado:export ANTHROPIC_BASE_URL=http://127.0.0.1:8400 export ANTHROPIC_API_KEY=$(grep '^CMA_SERVER__API_KEY=' .env | cut -d= -f2)Mantén los comandos
docker composeen la primera terminal. Si ejecutasdocker compose upen esta terminal, Compose pasa estas variables al servidor, y el servidor se llama a sí mismo en lugar de a la API de Claude.Crear un agente
Guarda el archivo que sigue al comando como
quickstart-agent.mdy luego ejecuta el comando. El archivo le da al agente las herramientas integradas y le permite ejecutarlas sin preguntarte primero.CLIant apply --yes quickstart-agent.mdquickstart-agent.md--- name: Quickstart agent model: claude-opus-5-5 tools: - type: agent_toolset_20260401 --- You are a helpful assistant.El comando primero imprime una advertencia de que
could not determine the organization and workspace, con un error404, y luego crea el agente. Eso es lo esperado en tu propio servidor.Iniciar una sesión
Estos comandos encuentran el agente y el entorno del stack, inician una sesión y guardan el ID de la sesión en
SESSION_ID. El stack nombra su entornocompose-sandbox.AGENT_ID=$(ant beta:agents list --format raw \ --transform 'data.#(name=="Quickstart agent").id' --raw-output) ENVIRONMENT_ID=$(ant beta:environments list --format raw \ --transform 'data.#(name=="compose-sandbox").id' --raw-output) SESSION_ID=$(ant beta:sessions create --agent "$AGENT_ID" \ --environment-id "$ENVIRONMENT_ID" --transform id --raw-output)Pedirle al agente que ejecute un comando
Conecta tu terminal a la sesión:
ant beta:sessions connect "$SESSION_ID"El comando abre una vista de chat de la sesión. Envía este mensaje:
Run `hostname` with the bash tool and tell me the output.El agente responde con un nombre de host que comienza con
cma-sandbox-. Ese es el nombre del contenedor de sandbox que ejecutó el comando, lo que confirma que la herramienta se ejecutó en un sandbox y no en tu máquina.Encontrar el contenedor de sandbox
Deja el chat abierto. En la primera terminal, enumera los contenedores de sandbox:
docker ps --filter label=cma-server.sandboxLa lista muestra el contenedor que informó el agente. El contenedor termina aproximadamente un minuto después de que termine un turno, y el siguiente mensaje de la sesión inicia un contenedor nuevo. Si la lista está vacía, pídele al agente que ejecute
hostnamede nuevo y vuelve a enumerar los contenedores mientras responde.Para salir del chat, presiona Ctrl+C en su terminal. La sesión sigue ejecutándose.
Probar la consola en tu servidor
Esta sección es opcional. La consola requiere inicio de sesión único. Para probarla, reinicia el stack con el proveedor de inicio de sesión simulado de la versión. El puerto 8080 de tu máquina debe estar libre.
Reiniciar el stack con el proveedor de inicio de sesión simulado
Ejecuta estos comandos en la primera terminal:
export COMPOSE_FILE=docker-compose.yml:docker-compose.oidc.yml docker compose up --build -dLa línea
exportse aplica solo a la primera terminal, así que vuelve a ejecutarla en cualquier terminal nueva que abras paradocker compose. Para cambiar los ajustes del servidor en este stack, editacompose.config.oidc.yaml, nocompose.config.yaml, y luego ejecutadocker compose restart cma-server.Abrir la sesión
En un navegador en la misma máquina, abre
http://127.0.0.1:8400/, haz clic en Continue with SSO y selecciona alice, el administrador de demostración. En la barra lateral, selecciona Sessions y luego selecciona la sesión.La página se actualiza a medida que el agente trabaja, y puedes enviarle un mensaje al agente desde ella.
Para crear agentes e iniciar sesiones también en la consola, consulta Ejecutar un agente desde la consola.
Detener el stack
En la primera terminal, ejecuta este comando:
docker compose down --remove-orphansEl comando elimina los contenedores y conserva la base de datos. Para eliminar también la base de datos, con todos los agentes, sesiones e historial de las sesiones que contiene, ejecuta docker compose down --remove-orphans -v.
Solución de problemas
- Tu archivo no tiene un directorio
compose: El archivo contiene una versión anterior, y los comandos de esta página no coinciden con ella. Pide la versión actual al equipo de tu cuenta de Anthropic. Para mover una implementación en ejecución a la versión actual, consulta Actualizar Claude Managed Agents autoalojado. - El servidor nunca se inicia: Ejecuta
docker compose logs migrate. El contenedormigratede un solo uso crea las tablas de la base de datos. Debe terminar con el estado0antes de que se inicie el servidor. - La comprobación de disponibilidad permanece en
degraded, o todos los turnos fallan: Si ejecutastedocker compose upen una terminal dondeANTHROPIC_BASE_URLeshttp://127.0.0.1:8400, el servidor se llama a sí mismo en lugar de a la API de Claude. Ejecutadocker compose up -dde nuevo en la primera terminal, donde la variable no está establecida. De lo contrario, el registro del servidor muestra qué falló. Para leerlo, vuelve a ejecutardocker compose logs -f cma-server. - La comprobación de disponibilidad responde
not_ready: En la respuesta, busca la comprobación con el estadofailed:upstream: La API de Claude rechazó tu clave de API de Claude. CorrigeANTHROPIC_API_KEYen.envy luego ejecutadocker compose up -dde nuevo en la primera terminal. Si tu shell también estableceANTHROPIC_API_KEY, Compose usa el valor del shell, así que ejecuta primerounset ANTHROPIC_API_KEY.database: O bien la base de datos rechazó el inicio de sesión del servidor, por ejemplo debido a una contraseña incorrecta, o bien se interrumpió una conexión abierta con la base de datos. Para ver cuál de los dos, vuelve a ejecutardocker compose logs -f cma-server.
- El agente responde, pero su llamada a herramienta nunca termina: Ningún worker está sondeando el entorno. Revisa el registro de los workers con
docker compose logs sandbox. Un worker que no puede acceder al socket del daemon de Docker termina con un mensaje que mencionaCMA_DOCKER_SOCKET. Establece esa variable en.envcon la ruta del socket de tu daemon y luego ejecutadocker compose up -dde nuevo en la primera terminal. - Los workers se están ejecutando, pero una llamada a herramienta sigue sin terminar nunca: El stack inicia 10 workers, y cada uno ejecuta el contenedor de una sola sesión a la vez. Una sesión ocupa un worker libre cuando la creas, y una sesión que nunca recibe un mensaje conserva su worker durante hasta una hora. Con los 10 ocupados, las llamadas a herramientas de cualquier otra sesión esperan a un worker. Si el comando
docker psdel paso “Encontrar el contenedor de sandbox” enumera 10 contenedores, archiva las sesiones que no uses:- En la primera terminal, ejecuta
docker ps --filter label=cma-server.sandbox --format '{{.Label "cma-server.session"}}'. Imprime el ID de la sesión detrás de cada contenedor. La sesión que espera aún no tiene contenedor, así que no está en la lista. - En la segunda terminal, presiona Ctrl+C para salir del chat y ejecuta
ant beta:sessions archive --session-id <session-id>para cada sesión enumerada que no uses. - Ejecuta
ant beta:sessions connect "$SESSION_ID"de nuevo. La llamada a herramienta termina cuando un worker toma su sesión.
- En la primera terminal, ejecuta
Próximos pasos
Apunta el SDK y la CLI ant a tu servidor.
Comprueba qué funciones se comportan de forma diferente o no están disponibles.
Configura el inicio de sesión, y crea agentes y ejecuta sesiones en un navegador.
¿Te resultó útil esta página?