Guías para construir y operar agentes de IA
Código descargable y pruebas que puedes repetir, sin registro.
Guías, página 5
252 tutoriales, comparativas y checklists para continuar según tu proyecto.

Secrets Compose para un agente IA: no en el env del proceso
Cómo no dejar el token de Telegram en docker inspect: secrets de Compose con file o environment (v2.6.0+), mount /run/secrets, grant por servicio. Distinto de env y de Swarm 500 KB. uid/mode no aplican con file en Compose. Techos oficiales curl 3 de septiembre de 2026.

Compose profiles para un agente IA: migrate no es el webhook
Cómo no dejar Adminer y el job migrate 24/7 en prod: profiles de Compose, COMPOSE_PROFILES y el webhook sin profile. Distinto de depends_on healthy. Regex de nombres, --profile '*' y compose run que auto-activa. Techos oficiales Docker Compose, curl 3 de septiembre de 2026.

Redes Compose para un agente IA: postgres fuera del default bridge
Cómo no dejar la DB en el bridge default: networks internas, el agente en frontend+backend, postgres solo backend. Distinto de Fly 6PN. internal no bloquea ports. Techos oficiales Compose spec y how-to, verificados con curl el 3 de septiembre de 2026.

depends_on healthy: el agente no arranca antes que Postgres
Cómo no crashear el bot en el primer segundo: depends_on condition service_healthy, pg_isready y start_period. Distinto del /health del agente. Cifras oficiales Compose, Dockerfile HEALTHCHECK y Postgres 18, curl 3 de septiembre de 2026. Fly y Railway no equivalen a depends_on.

Logging json-file de Docker para un agente IA: max-size o el host muere
Cómo no llenar /var/lib/docker con stdout del bot: logging json-file max-size y max-file en Compose. Distinto de wrangler tail. El driver no rota solo. Techos oficiales Docker json-file, local y none, verificados con curl el 3 de septiembre de 2026.

ulimit nofile para un agente IA: EMFILE no es el modelo
Cómo no quedarte sin file descriptors: ulimits nofile en Compose, sockets a Telegram y a la API, sqlite y logs. Distinto de pids_limit. Un leak de sockets parece un bot mudo. Techos oficiales Docker del 3 de septiembre de 2026.

pids limit para un agente IA: nada de fork bomb en el VPS
Cómo no dejar que un tool spawnée mil node: pids_limit en Compose y docker run. Un agente con tools no es un systemd. 256 pids bastan. Distinto de mem_limit y cpus: es el número de procesos. Docs oficiales del 3 de septiembre de 2026.

cap_drop ALL para un agente IA en Docker
Cómo no dejar NET_ADMIN y SYS_ADMIN en el bot: cap_drop ALL, y no cap_add salvo que un proxy lo pida. Rootfs read-only y USER node no quitan capabilities. Compose cap_drop y docker run --cap-drop=ALL. Docs oficiales del 3 de septiembre de 2026.

Rootfs read-only para un agente IA en Docker
Cómo no dejar que un tool escriba en la imagen: read_only true, tmpfs en /tmp y volumen solo en /data. El sqlite no vive en el overlay. Un agente comprometido no persiste binaries. Compose y docker run, consultado el 3 de septiembre de 2026.

Init y tini en el contenedor del agente IA: PID 1 que reenvía señales
Cómo no dejar zombies ni tragarte el SIGTERM: init true en Compose, docker run --init (tini), ENTRYPOINT con -- en el Dockerfile. Node como PID 1 no recolecta hijos de tools. Fly no trae tini. Un init corto, no un while true.

Restart policy del agente IA: unless-stopped vs crash loop
Cómo no pelearte con el kill switch: restart unless-stopped en Compose, on-failure con tope, Fly auto-restart vs scale 0. Un OOM no debe reiniciar 400 veces. Un deploy tampoco debe dejar el bot apagado para siempre. Política escrita, no el default.

NODE_ENV=production para un agente IA: no dejes development en Fly
Cómo no correr Express en modo debug ni instalar devDependencies en prod: NODE_ENV=production en el runner, no en el stage de build. Vercel/Railway lo setean; Docker tienes que poner el ENV. Un next build con NODE_ENV ya production rompe el compile. Fuentes 3 sep 2026.

Bind 0.0.0.0 y puertos del agente IA en Docker
Cómo no dejar el bot sordo en el contenedor: Node debe escuchar 0.0.0.0, no 127.0.0.1. Compose publica 3000:3000, Fly y Railway mapean el puerto interno. Localhost dentro del box no es el localhost de tu Mac. Healthcheck al mismo bind.

Multi-stage Docker para un agente IA: build gordo, runtime flaco
Cómo no meter compiladores y pnpm store en prod: stage build con devDependencies, stage runtime solo node_modules de prod, COPY --from. La imagen chica arranca más rápido, filtra tools de build y no lleva el .env que ignoraste a medias. Docs Docker multi-stage, 3 sep 2026.

.dockerignore para un agente IA: el .env no va en la imagen
Cómo no hornear TELEGRAM_TOKEN en un layer: .dockerignore, COPY selectivo y build context mínimo. docker history enseña el secreto. Inyecta env en runtime (Railway, Fly, Vercel), no en el build. El digest pineado no salva un COPY de todo el repo.

Usuario no-root en el contenedor del agente IA
Cómo no correr el bot como root: USER en el Dockerfile, uid fijo, volumen con el mismo uid, HEALTHCHECK antes de dropear privilegios, y por qué npm start como PID 1 rompe SIGTERM. Root no hace el modelo más listo; solo agranda el radio de daño.

Pin de imágenes Docker para un agente IA: nada de :latest
Cómo no redeployar un agente distinto al de ayer: pin por digest sha256, no :latest ni node:22. Actions con SHA de actions, no @v4 flotante. Fly y Railway despliegan lo que el tag resuelva hoy. El tag miente; el digest no.

Cron en UTC para un agente IA: Vercel, Workers y Actions
Cómo no mandar el digest a las 3 AM en Guatemala: crons de Vercel, Cloudflare y GitHub Actions corren en UTC. America/Guatemala es UTC−6 todo el año, sin DST. Convierte 9:00 CST a 15:00 UTC y apaga el cron en Preview.