Blog · Guide · 29 octobre 2026
Choisir un runtime d'agent AEGIS dans le registre standard
Transparence : chez 100monkeys.ai, nous développons AEGIS ; lisez donc ce guide comme le récit de son fabricant. Il a été rédigé par l'un de nos agents d'IA à partir de la documentation publique d'AEGIS (en anglais), principalement le Standard Runtime Registry, l'entrée aegis.runtime.list des Management Tools et la CLI Reference, et relu par l'entreprise ; cette version française est une traduction du guide original en anglais. Chaque ligne YAML, chaque appel et chaque commande ci-dessous sont copiés de ces pages ; aucun n'a été exécuté pour ce guide. Les citations restent en anglais, avec la traduction à côté. Là où la documentation laisse une question ouverte, la dernière section le dit.
AEGIS by 100monkeys.ai, in beta, exécute chaque agent dans un conteneur. Un manifeste d'agent peut nommer un langage et une version au lieu d'une image, et l'orchestrateur choisit l'image. La page du registre le dit sans détour : "Using StandardRuntime means you never specify a Docker image directly." (Avec StandardRuntime, vous n'indiquez jamais directement une image Docker.) Ce guide choisit un runtime, le vérifie avant le déploiement et montre ce qui se passe à l'exécution.
Étape 1. Savoir ce que décide le registre
Quand un manifeste donne spec.runtime.language et spec.runtime.version, l'orchestrateur "resolves them to a deterministic, pinned Docker image at execution time" (les résout en une image Docker déterministe et épinglée au moment de l'exécution). La correspondance vit dans runtime-registry.yaml, versionné dans le dépôt de l'orchestrateur et chargé au démarrage du démon. Ce qui compte pour une relecture : deux agents qui nomment le même couple tournent sur la même image, et personne ne tape de tag d'image dans un manifeste.
Étape 2. Demander au registre ce qu'il accepte
Un agent qui écrit les manifestes d'autres agents, ou une personne devant un client, peut appeler l'outil intégré aegis.runtime.list. Sans argument, il liste tous les runtimes ; avec un langage, il filtre :
{}
{ "language": "python" }
La réponse donne pour chaque runtime language, version, image, description et un drapeau deprecated, plus custom_runtime_supported. La page du registre donne la raison d'être de l'outil : il "prevents hallucinated language-version combinations from being written into manifests" (empêche d'écrire dans les manifestes des combinaisons langage-version hallucinées). Il est disponible dans le contexte de sécurité aegis-system-agent-runtime "with no additional configuration" (sans configuration supplémentaire).
Étape 3. Choisir un couple pris en charge
La matrice de la page du registre, telle qu'elle est aujourd'hui :
| Langage | Versions | Image |
|---|---|---|
python | 3.11, 3.10; 3.9 obsolète | 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, avec python3 pour le bootstrap |
Les manifestes qui nomment une version obsolète "still execute but emit a warning in the execution log" (s'exécutent encore mais émettent un avertissement dans le journal d'exécution). La page désigne python: "3.9" comme obsolète et conseille de passer à 3.10 ou 3.11. Les retraits sont annoncés "two phases in advance" (deux phases à l'avance), et une version retirée échoue à la validation.
Étape 4. L'écrire dans le manifeste
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." (Une combinaison language+version non prise en charge est refusée à la validation de l'exécution avec une erreur explicite. Il n'y a pas de repli sur une version par défaut.) C'est la dernière phrase qui sert : une faute de frappe ne tourne pas en silence sur un autre interpréteur.
Étape 5. Valider, puis déployer
aegis agent deploy ./agent.yaml --validate-only
aegis agent deploy ./agent.yaml
--validate-only analyse et valide sans déployer. Déployer deux fois le même nom et la même version échoue, sauf si vous ajoutez --force.
Étape 6. Installer ce dont l'agent a besoin, ou passer à une image personnalisée
Chaque image standard porte l'outil de paquets de son langage : pip et apt sur les images Python, npm et apk sur les images Node, go et apk sur Go, cargo et rustc sur Rust. Pour TypeScript, l'orchestrateur définit TYPESCRIPT_VERSION=5.1 et la documentation dit que votre bootstrap doit installer la chaîne d'outils avec npm install -g typescript ts-node. Quand un agent a besoin de paquets système comme ffmpeg, d'une version absente du registre, de binaires précompilés ou de dépendances privées, la réponse de la page est un Custom Runtime, votre propre image, plutôt que d'installer les mêmes choses à chaque exécution.
Étape 7. Savoir ce qui se passe au démarrage de l'agent
Pour un runtime standard, l'orchestrateur résout le couple en une image, crée le conteneur avec un processus principal qui ne fait que le maintenir en vie, y téléverse son bootstrap.py vers /usr/local/bin/aegis-bootstrap s'il n'y est pas déjà, et le lance avec le prompt. Le bootstrap se reconnecte à la passerelle de dispatch de l'orchestrateur et déroule la boucle d'itération : "generate → execute → validate → refine" (générer, exécuter, valider, affiner).
Étape 8. Sur votre propre nœud, garder le fichier du registre là où le démon le cherche
# aegis-config.yaml
spec:
runtime:
runtime_registry_path: "runtime-registry.yaml"
Le chemin par défaut est relatif au répertoire de travail du démon. Si le fichier manque ou ne se lit pas, le démon "hard-fails at boot" (échoue net au démarrage), parce que "a missing registry makes every StandardRuntime agent execution impossible." (un registre manquant rend impossible toute exécution d'agent StandardRuntime.) Indiquez un chemin absolu quand le démon tourne depuis un autre répertoire ou dans une image de conteneur.
Ce que la documentation laisse ouvert
- Deux exemples de réponse se contredisent. L'exemple de réponse d'
aegis.runtime.listsur la page du registre liste Python 3.11, 3.10 et 3.9 surpython:3.x-slim; celui de la page Management Tools liste Python3.12surghcr.io/100monkeys/runtime-python:3.12, que la matrice ne contient pas. Interrogez votre propre nœud plutôt que de vous fier à l'un ou l'autre. - Quand un mauvais couple est détecté. La page du registre dit qu'un couple non pris en charge est refusé "at execution validation time" (à la validation de l'exécution). Elle ne dit pas si
aegis agent deploy --validate-onlyle détecte déjà. - Valeurs d'isolation. Le commentaire du manifeste sur la page du registre liste
inherit | docker | firecracker; les références des workflows et des agents listent aussiprocess. - Dates. Aucune date de retrait n'est donnée pour Python 3.9 au-delà de "Phase 2".
Ensuite
Le runtime n'est qu'un champ du manifeste d'agent. Pour le reste, lisez Le manifeste d'agent AEGIS : chaque champ et ce qu'il impose. AEGIS s'installe avec la commande affichée sur 100monkeys.ai :
curl -fsSL https://get.100monkeys.ai | bash