Blog · Guida · 29 ottobre 2026
Scegliere il runtime di un agente AEGIS dal registro standard
Trasparenza: AEGIS è sviluppato da 100monkeys.ai, quindi leggete questa guida come il resoconto di chi lo costruisce. L'ha scritta in bozza uno dei nostri agenti di IA a partire dalla documentazione pubblica di AEGIS, soprattutto lo Standard Runtime Registry, la voce aegis.runtime.list di Management Tools e la CLI Reference, e l'azienda l'ha rivista; questa edizione italiana è una traduzione della guida originale in inglese. Ogni riga YAML, chiamata e comando qui sotto sono copiati da quelle pagine; nessuno è stato eseguito per questa guida. Le citazioni restano in inglese con la traduzione accanto. Dove la documentazione lascia una domanda aperta, l'ultima sezione lo dice.
AEGIS by 100monkeys.ai, in beta, esegue ogni agente in un container. Un manifesto dell'agente può indicare un linguaggio e una versione invece di un'immagine, e l'immagine la sceglie l'orchestratore. La pagina del registro lo dice chiaramente: "Using StandardRuntime means you never specify a Docker image directly." (usare StandardRuntime significa non indicare mai direttamente un'immagine Docker). Questa guida sceglie un runtime, lo verifica prima della distribuzione e mostra cosa succede in esecuzione.
Passo 1. Sapere cosa decide il registro
Quando un manifesto indica spec.runtime.language e spec.runtime.version, l'orchestratore li "resolves them to a deterministic, pinned Docker image at execution time." (risolve in un'immagine Docker deterministica e fissata al momento dell'esecuzione). La corrispondenza sta in runtime-registry.yaml, versionato nel repository dell'orchestratore e caricato all'avvio del demone. Il punto, per chi rivede, è che due agenti che indicano la stessa coppia girano sulla stessa immagine, e nessuno digita un tag d'immagine in un manifesto.
Passo 2. Chiedere al registro cosa accetta
Un agente che scrive i manifesti di altri agenti, o una persona davanti a un client, può chiamare lo strumento integrato aegis.runtime.list. Senza argomenti elenca tutti i runtime; con un linguaggio filtra:
{}
{ "language": "python" }
La risposta indica per ogni runtime language, version, image, description e un flag deprecated, più custom_runtime_supported. La pagina del registro dà la ragione dello strumento: "prevents hallucinated language-version combinations from being written into manifests." (impedisce che combinazioni inventate di linguaggio e versione finiscano nei manifesti). È disponibile nel contesto di sicurezza aegis-system-agent-runtime "with no additional configuration" (senza configurazione aggiuntiva).
Passo 3. Scegliere una coppia supportata
La matrice della pagina del registro, così com'è oggi:
| Linguaggio | Versioni | Immagine |
|---|---|---|
python | 3.11, 3.10; 3.9 deprecata | 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 per il bootstrap |
I manifesti che indicano una versione deprecata "still execute but emit a warning in the execution log" (vengono comunque eseguiti, ma scrivono un avviso nel log di esecuzione). La pagina indica python: "3.9" come deprecata e consiglia di passare a 3.10 o 3.11. Le rimozioni sono annunciate "two phases in advance" (con due fasi di anticipo), e una versione rimossa non passa la validazione.
Passo 4. Scriverla nel manifesto
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." (una combinazione language+version non supportata viene rifiutata alla validazione dell'esecuzione con un errore descrittivo; non c'è ripiego su una versione predefinita). L'ultima frase è quella utile: un refuso non finisce a girare in silenzio su un altro interprete.
Passo 5. Validare, poi distribuire
aegis agent deploy ./agent.yaml --validate-only
aegis agent deploy ./agent.yaml
--validate-only analizza e valida senza distribuire. Distribuire due volte lo stesso nome e la stessa versione fallisce, a meno che non aggiungiate --force.
Passo 6. Installare ciò che serve all'agente, o passare a un'immagine personalizzata
Ogni immagine standard porta lo strumento di pacchetti del suo linguaggio: pip e apt sulle immagini Python, npm e apk su quelle Node, go e apk su Go, cargo e rustc su Rust. Per TypeScript l'orchestratore imposta TYPESCRIPT_VERSION=5.1 e la documentazione dice che il vostro bootstrap deve installare la toolchain con npm install -g typescript ts-node. Quando un agente ha bisogno di pacchetti di sistema come ffmpeg, di una versione che il registro non ha, di binari precompilati o di dipendenze private, la risposta della pagina è un Custom Runtime, un'immagine vostra, invece di installare le stesse cose a ogni esecuzione.
Passo 7. Sapere cosa succede quando l'agente parte
Per un runtime standard l'orchestratore risolve la coppia in un'immagine, crea il container con un processo principale che si limita a tenerlo in vita, carica il suo bootstrap.py in /usr/local/bin/aegis-bootstrap se non è già lì e lo esegue con il prompt. Il bootstrap si ricollega al gateway di dispatch dell'orchestratore ed esegue il ciclo di iterazione: "generate → execute → validate → refine" (genera, esegue, valida, rifinisce).
Passo 8. Sul vostro nodo, tenere il file del registro dove il demone lo cerca
# aegis-config.yaml
spec:
runtime:
runtime_registry_path: "runtime-registry.yaml"
Il percorso predefinito è relativo alla directory di lavoro del demone. Se il file manca o non si analizza, il demone "hard-fails at boot" (fallisce subito all'avvio), perché "a missing registry makes every StandardRuntime agent execution impossible." (senza registro nessun agente StandardRuntime può essere eseguito). Impostate un percorso assoluto quando il demone gira da un'altra directory o dentro un'immagine container.
Cosa lascia aperto la documentazione
- Due risposte di esempio non concordano. La risposta di esempio di
aegis.runtime.listnella pagina del registro elenca Python 3.11, 3.10 e 3.9 supython:3.x-slim; l'esempio della pagina Management Tools elenca Python3.12sughcr.io/100monkeys/runtime-python:3.12, che la matrice non contiene. Chiedete al vostro nodo invece di fidarvi di uno dei due esempi. - Quando si scopre una coppia sbagliata. La pagina del registro dice che una coppia non supportata viene rifiutata "at execution validation time" (alla validazione dell'esecuzione). Non dice se
aegis agent deploy --validate-onlyla intercetta già. - Valori di isolamento. Il commento nel manifesto della pagina del registro elenca
inherit | docker | firecracker; i riferimenti di workflow e agente elencano ancheprocess. - Date. Per la rimozione di Python 3.9 non c'è data oltre "Phase 2" (fase 2).
E poi
Il runtime è un solo campo del manifesto dell'agente. Per il resto leggete Il manifesto dell'agente AEGIS: ogni campo e cosa impone. AEGIS si installa con il comando stampato su 100monkeys.ai:
curl -fsSL https://get.100monkeys.ai | bash