Blog · Guía · 29 de octubre de 2026
Elige un runtime de agente AEGIS del registro estándar
Aviso: en 100monkeys.ai construimos AEGIS, así que lee esta guía como el relato de quien lo fabrica. La redactó uno de nuestros agentes de IA a partir de la documentación pública de AEGIS, sobre todo el Standard Runtime Registry, la entrada aegis.runtime.list de Management Tools y la CLI Reference, y la revisó la empresa; esta versión en español es una traducción de la guía original en inglés. Cada línea de YAML, llamada y comando de abajo están copiados de esas páginas, y ninguno se ejecutó para esta guía. Las citas van en inglés con la traducción al lado. Donde la documentación deja una pregunta abierta, la última sección lo dice.
AEGIS by 100monkeys.ai, in beta, ejecuta cada agente en un contenedor. Un manifiesto de agente puede nombrar un lenguaje y una versión en lugar de una imagen, y el orquestador elige la imagen. La página del registro lo dice claro: "Using StandardRuntime means you never specify a Docker image directly." (Usar StandardRuntime significa que nunca especificas una imagen de Docker directamente). Esta guía elige un runtime, lo comprueba antes de desplegar y muestra qué ocurre en tiempo de ejecución.
Paso 1. Entiende qué decide el registro
Cuando un manifiesto da spec.runtime.language y spec.runtime.version, el orquestador "resolves them to a deterministic, pinned Docker image at execution time." (los resuelve a una imagen de Docker determinista y fijada en el momento de la ejecución). La correspondencia vive en runtime-registry.yaml, guardado en el repositorio del orquestador y cargado cuando arranca el daemon. Lo importante para una revisión es que dos agentes que nombran el mismo par se ejecutan sobre la misma imagen, y nadie escribe una etiqueta de imagen en un manifiesto.
Paso 2. Pregunta al registro qué acepta
Un agente que escribe manifiestos de otros agentes, o una persona desde un cliente, puede llamar a la herramienta integrada aegis.runtime.list. Sin argumentos enumera todos los runtimes; con un lenguaje, filtra:
{}
{ "language": "python" }
La respuesta nombra el language, version, image, description y un indicador deprecated de cada runtime, además de custom_runtime_supported. La página del registro da el motivo de la herramienta: "prevents hallucinated language-version combinations from being written into manifests." (evita que se escriban en los manifiestos combinaciones de lenguaje y versión inventadas). Está disponible en el contexto de seguridad aegis-system-agent-runtime "with no additional configuration" (sin configuración adicional).
Paso 3. Elige un par admitido
La matriz de la página del registro, tal como está:
| Lenguaje | Versiones | Imagen |
|---|---|---|
python | 3.11, 3.10; 3.9 obsoleta | python:3.x-slim, Debian 12 |
javascript | 20, 18 | node:20-alpine, node:18-alpine |
typescript | 5.1 | node:20-alpine |
go | 1.21, 1.20 | golang:1.x-alpine |
rust | 1.75, 1.74 | rust:1.x-alpine |
bash | 5 | python:3.11-slim, con python3 para el bootstrap |
Los manifiestos que nombran una versión obsoleta "still execute but emit a warning in the execution log" (se siguen ejecutando pero emiten un aviso en el registro de ejecución). La página nombra python: "3.9" como obsoleta y dice pasar a 3.10 o 3.11. Las retiradas se anuncian "two phases in advance" (con dos fases de antelación), y una versión retirada no pasa la validación.
Paso 4. Escríbelo en el manifiesto
spec:
runtime:
language: "python" # Required (StandardRuntime)
version: "3.11" # Required (StandardRuntime)
isolation: "docker" # inherit | docker | firecracker
model: "default" # LLM model alias from aegis-config.yaml
"Specifying an unsupported language+version combination is rejected at execution validation time with a descriptive error. There is no fallback to a default version." (Indicar una combinación de language+version no admitida se rechaza al validar la ejecución con un error descriptivo. No hay recurso a una versión por defecto). La última frase es la útil: una errata no se ejecuta en silencio sobre otro intérprete.
Paso 5. Valida y luego despliega
aegis agent deploy ./agent.yaml --validate-only
aegis agent deploy ./agent.yaml
--validate-only analiza y valida sin desplegar. Desplegar dos veces el mismo nombre y versión falla salvo que añadas --force.
Paso 6. Instala lo que necesita el agente, o pasa a una imagen propia
Cada imagen estándar lleva la herramienta de paquetes de su lenguaje: pip y apt en las imágenes de Python, npm y apk en las de Node, go y apk en Go, cargo y rustc en Rust. Para TypeScript el orquestador fija TYPESCRIPT_VERSION=5.1 y la documentación dice que tu bootstrap debe instalar la cadena de herramientas con npm install -g typescript ts-node. Cuando un agente necesita paquetes del sistema como ffmpeg, una versión que el registro no tiene, binarios precompilados o dependencias privadas, la respuesta de la página es un Custom Runtime, tu propia imagen, en lugar de instalar lo mismo en cada ejecución.
Paso 7. Entiende qué ocurre cuando arranca el agente
Para un runtime estándar, el orquestador resuelve el par a una imagen, crea el contenedor con un proceso principal que solo lo mantiene vivo, sube su bootstrap.py a /usr/local/bin/aegis-bootstrap si aún no está ahí, y lo ejecuta con el prompt. El bootstrap se conecta de vuelta al gateway de despacho del orquestador y ejecuta el bucle de iteración: "generate → execute → validate → refine" (generar, ejecutar, validar, refinar).
Paso 8. En tu propio nodo, deja el archivo del registro donde lo busca el daemon
# aegis-config.yaml
spec:
runtime:
runtime_registry_path: "runtime-registry.yaml"
La ruta por defecto es relativa al directorio de trabajo del daemon. Si el archivo falta o no se puede analizar, el daemon "hard-fails at boot" (falla en el arranque sin continuar), porque "a missing registry makes every StandardRuntime agent execution impossible." (un registro ausente hace imposible toda ejecución de agentes StandardRuntime). Fija una ruta absoluta cuando el daemon se ejecuta desde otro directorio o dentro de una imagen de contenedor.
Lo que la documentación deja abierto
- Dos respuestas de ejemplo no coinciden. La respuesta de ejemplo de
aegis.runtime.listen la página del registro enumera Python 3.11, 3.10 y 3.9 sobrepython:3.x-slim; la de la página Management Tools enumera Python3.12sobreghcr.io/100monkeys/runtime-python:3.12, que la matriz no contiene. Pregunta a tu propio nodo en lugar de fiarte de cualquiera de los dos ejemplos. - Cuándo se detecta un par incorrecto. La página del registro dice que un par no admitido se rechaza "at execution validation time" (al validar la ejecución). No dice si
aegis agent deploy --validate-onlyya lo detecta. - Valores de aislamiento. El comentario del manifiesto en la página del registro enumera
inherit | docker | firecracker; las referencias de workflow y de agente también enumeranprocess. - Fechas. No se da fecha de retirada para Python 3.9 más allá de "Phase 2" (fase 2).
Siguiente
El runtime es un campo del manifiesto de agente. Para el resto, lee El manifiesto de agente de AEGIS: cada campo y qué impone. AEGIS se instala con el comando que aparece en 100monkeys.ai:
curl -fsSL https://get.100monkeys.ai | bash