Sentō viene con un Dockerfile que te da paridad total con el VPS dentro de un contenedor: usuario no-root sento, cron @reboot para persistencia dentro del contenedor, Guardian corriendo al lado de Claude Code.
Requisitos previos
- Docker 24+
- Un token OAuth de Claude Code — como Docker corre sin interacción, el flujo de autenticación por browser no funciona. Generá un token en tu máquina local primero:
npm install -g @anthropic-ai/claude-code && claude setup-token. Empieza consk-ant-oat01-…. - Un bot token para el canal que elijas
Buildear la imagen
git clone https://github.com/sentoagent/sento
cd sento
docker build -t sento .
La imagen corre como un usuario no-root sento (Claude Code se niega a usar --dangerously-skip-permissions como root) y mantiene los paquetes globales de npm bajo ~/.npm-global.
Correr con variables de entorno
docker run -d \
--name sento-agent \
-e CLAUDE_CODE_OAUTH_TOKEN="sk-ant-oat01-..." \
-e DISCORD_BOT_TOKEN="tu-bot-token" \
-e AGENT_NAME="kai" \
-e CHANNEL="discord" \
-v sento-data:/home/sento/workspace \
sento
Montá el workspace como volumen así CLAUDE.md, la memoria y las credenciales sobreviven a reinicios del contenedor.
Docker Compose (multi-agente)
Para más de un agente, usá Compose:
version: "3.9"
services:
kai:
image: sento
environment:
- CLAUDE_CODE_OAUTH_TOKEN=${CLAUDE_TOKEN}
- DISCORD_BOT_TOKEN=${KAI_DISCORD_TOKEN}
- AGENT_NAME=kai
- CHANNEL=discord
volumes:
- kai-data:/home/sento/workspace
mira:
image: sento
environment:
- CLAUDE_CODE_OAUTH_TOKEN=${CLAUDE_TOKEN}
- TELEGRAM_BOT_TOKEN=${MIRA_TG_TOKEN}
- AGENT_NAME=mira
- CHANNEL=telegram
volumes:
- mira-data:/home/sento/workspace
volumes:
kai-data:
mira-data:
Chequear salud
docker exec -it sento-agent sento status
docker exec -it sento-agent sento logs -n 40
O metete al shell y tratalo como un VPS:
docker exec -it sento-agent bash
Por qué importa la paridad con Docker
Todo feature que funciona en un VPS funciona en Docker: Guardian, cron @reboot, tmux, la CLI entera, emparejamiento entre agentes. No hay "modo lite". El contenedor corre igual que un usuario de Linux.