블로그 · 가이드 · 2026년 10월 29일
표준 레지스트리에서 AEGIS 에이전트 런타임 고르기
공개: AEGIS는 100monkeys.ai가 만들고 있으므로 이 가이드는 만든 쪽의 설명으로 읽어 주세요. 이 가이드는 저희 AI 에이전트 하나가 공개 AEGIS 문서(영어), 주로 Standard Runtime Registry, Management Tools의 aegis.runtime.list 항목, CLI Reference를 바탕으로 초안을 쓰고 회사가 검토했으며, 이 한국어판은 영어 원문 가이드의 번역입니다. 아래의 YAML 줄, 호출, 명령은 모두 그 페이지들에서 복사했고, 이 가이드를 위해 실행한 것은 없습니다. 인용은 영어 그대로 두고 옆에 번역을 붙였습니다. 문서가 답하지 않는 질문은 마지막 절에서 밝힙니다.
AEGIS by 100monkeys.ai, in beta는 각 에이전트를 컨테이너에서 실행합니다. 에이전트 매니페스트는 이미지 대신 언어와 버전을 지정할 수 있고, 이미지는 오케스트레이터가 고릅니다. 레지스트리 페이지는 분명하게 말합니다. "Using StandardRuntime means you never specify a Docker image directly."(StandardRuntime을 쓰면 Docker 이미지를 직접 지정할 일이 없습니다.) 이 가이드는 런타임을 고르고, 배포 전에 확인하고, 실행 시점에 무슨 일이 일어나는지 보여 줍니다.
1단계. 레지스트리가 무엇을 정하는지 알기
매니페스트가 spec.runtime.language와 spec.runtime.version을 주면, 오케스트레이터는 "resolves them to a deterministic, pinned Docker image at execution time"(실행 시점에 이를 결정적이고 고정된 Docker 이미지로 해석합니다). 이 대응은 오케스트레이터 저장소에 커밋되어 데몬이 시작할 때 읽히는 runtime-registry.yaml에 있습니다. 검토에서 중요한 점은, 같은 쌍을 지정한 두 에이전트는 같은 이미지에서 실행되고 누구도 매니페스트에 이미지 태그를 입력하지 않는다는 것입니다.
2단계. 레지스트리에 무엇을 받는지 묻기
다른 에이전트의 매니페스트를 쓰는 에이전트나 클라이언트 앞의 사람은 내장 도구 aegis.runtime.list를 호출할 수 있습니다. 인수가 없으면 모든 런타임을 나열하고, 언어를 주면 걸러 냅니다.
{}
{ "language": "python" }
답에는 런타임마다 language, version, image, description, deprecated 플래그가 있고, 여기에 custom_runtime_supported가 붙습니다. 레지스트리 페이지는 이 도구가 있는 이유를 이렇게 밝힙니다. 이 도구는 "prevents hallucinated language-version combinations from being written into manifests"(환각으로 만들어진 언어와 버전 조합이 매니페스트에 적히는 것을 막습니다). 이 도구는 aegis-system-agent-runtime 보안 컨텍스트에서 "with no additional configuration"(추가 설정 없이) 쓸 수 있습니다.
3단계. 지원되는 쌍 고르기
현재 레지스트리 페이지의 표입니다.
| 언어 | 버전 | 이미지 |
|---|---|---|
python | 3.11, 3.10; 3.9 지원 중단 예정(deprecated) | 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, 부트스트랩용 python3 포함 |
지원 중단 예정 버전을 지정한 매니페스트는 "still execute but emit a warning in the execution log"(여전히 실행되지만 실행 로그에 경고를 남깁니다). 페이지는 python: "3.9"를 지원 중단 예정으로 표시하고 3.10이나 3.11로 옮기라고 합니다. 제거는 "two phases in advance"(두 단계 앞서) 공지되며, 제거된 버전은 검증에서 실패합니다.
4단계. 매니페스트에 적기
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."(지원되지 않는 language+version 조합은 실행 검증 시점에 설명이 붙은 오류로 거부됩니다. 기본 버전으로 대체되는 일은 없습니다.) 쓸모 있는 것은 마지막 문장입니다. 오타가 다른 인터프리터에서 조용히 실행되지 않습니다.
5단계. 검증한 뒤 배포하기
aegis agent deploy ./agent.yaml --validate-only
aegis agent deploy ./agent.yaml
--validate-only는 배포하지 않고 파싱과 검증만 합니다. 같은 이름과 버전을 두 번 배포하면 --force를 붙이지 않는 한 실패합니다.
6단계. 에이전트에 필요한 것을 설치하거나 사용자 지정 이미지로 옮기기
각 표준 이미지에는 그 언어의 패키지 도구가 들어 있습니다. Python 이미지에는 pip와 apt, Node 이미지에는 npm과 apk, Go에는 go와 apk, Rust에는 cargo와 rustc. TypeScript의 경우 오케스트레이터가 TYPESCRIPT_VERSION=5.1을 설정하며, 문서는 부트스트랩이 npm install -g typescript ts-node로 툴체인을 설치해야 한다고 합니다. 에이전트에 ffmpeg 같은 OS 패키지, 레지스트리에 없는 버전, 미리 빌드된 바이너리, 비공개 의존성이 필요하면, 페이지의 답은 실행할 때마다 같은 것을 설치하는 대신 직접 만든 이미지인 Custom Runtime입니다.
7단계. 에이전트가 시작될 때 일어나는 일 알기
표준 런타임이면 오케스트레이터는 쌍을 이미지로 해석하고, 컨테이너를 살아 있게 유지하기만 하는 메인 프로세스로 컨테이너를 만들고, 자신의 bootstrap.py가 아직 없으면 /usr/local/bin/aegis-bootstrap에 올린 뒤 프롬프트와 함께 실행합니다. 부트스트랩은 오케스트레이터의 디스패치 게이트웨이에 다시 연결해 반복 루프를 돕니다. "generate → execute → validate → refine"(생성, 실행, 검증, 개선).
8단계. 자체 노드에서는 데몬이 찾는 곳에 레지스트리 파일 두기
# aegis-config.yaml
spec:
runtime:
runtime_registry_path: "runtime-registry.yaml"
기본 경로는 데몬의 작업 디렉터리를 기준으로 한 상대 경로입니다. 파일이 없거나 파싱되지 않으면 데몬은 "hard-fails at boot"(부팅 시 바로 실패합니다). "a missing registry makes every StandardRuntime agent execution impossible."(레지스트리가 없으면 모든 StandardRuntime 에이전트 실행이 불가능해지기) 때문입니다. 데몬이 다른 디렉터리에서 또는 컨테이너 이미지 안에서 실행된다면 절대 경로를 설정하세요.
문서가 답하지 않는 것
- 두 예시 응답이 서로 다릅니다. 레지스트리 페이지의
aegis.runtime.list예시 응답은python:3.x-slim의 Python 3.11, 3.10, 3.9를 나열하고, Management Tools 페이지의 예시는 표에 없는ghcr.io/100monkeys/runtime-python:3.12의 Python3.12를 나열합니다. 어느 예시도 믿지 말고 자신의 노드에 물어보세요. - 잘못된 쌍이 언제 잡히는지. 레지스트리 페이지는 지원되지 않는 쌍이 "at execution validation time"(실행 검증 시점에) 거부된다고 합니다.
aegis agent deploy --validate-only가 이미 그것을 잡는지는 말하지 않습니다. - 격리 값. 레지스트리 페이지의 매니페스트 주석은
inherit | docker | firecracker를 나열하고, 워크플로와 에이전트 레퍼런스는process도 나열합니다. - 날짜. Python 3.9의 제거 날짜는 "Phase 2" 외에 주어지지 않습니다.
다음
런타임은 에이전트 매니페스트의 필드 하나입니다. 나머지는 AEGIS 에이전트 매니페스트: 모든 필드와 그것이 강제하는 것을 읽으세요. AEGIS는 100monkeys.ai에 적힌 명령으로 설치합니다.
curl -fsSL https://get.100monkeys.ai | bash