프로젝트 소개

Agent Substrate는 표준 컨테이너 런타임보다 10배 높은 밀도로 수백만 개의 샌드박스를 실행하도록 설계된 보안 기본값 에이전트 실행 런타임입니다. 자율 에이전트를 위해 특별히 제작되었으며, 초당 500회 이상의 일시 중지/재개 활성화에서 500ms 미만의 재개 작업을 제공하고, 기본 제로 트러스트 커널 및 네트워크 격리를 지원합니다. microVM 및 gVisor를 포함한 여러 샌드박스 기술을 지원하여 모든 샌드박스 유형에 대해 일관된 수명 주기 작업을 가능하게 합니다. 핵심적으로 Agent Substrate는 더 큰 '액터'(에이전트와 같은 애플리케이션) 집합을 더 작은 준비된 '워커' 집합에 매핑하며, 에이전트와 유사한 애플리케이션이 대부분의 시간 동안 유휴 상태인 경향이 있다는 사실에 의존하여 과도한 멀티플렉싱을 달성합니다. 액터의 수명 주기(예: 생성/파괴, 일시 중지/재개)를 관리하고, 실시간으로 액터를 워커에 할당하며, 들어오는 트래픽을 라우팅하는 기능을 제공합니다. Agent Substrate는 낮은 의견(低意見) 시스템을 지향합니다. 관리하는 워크로드가 반드시 문자 그대로의 AI 에이전트일 필요는 없지만, 에이전트가 설계 대상 애플리케이션의 가장 좋은 예입니다. 에이전트 구축을 위한 SDK가 아니라, 에이전트를 대규모로 실행하기 위한 시스템입니다. Agent Substrate는 인프라 프로비저닝 및 워커 수명 주기 관리(Kubernetes Pod)를 위해 Kubernetes를 활용합니다. Pod 및 Pod 자동 확장과 같은 Kubernetes 기능을 기반으로 구축하는 동시에, Agent Substrate는 더 낮은 지연 시간을 달성하기 위해 에이전트별 스케줄링 및 제어를 제공합니다. Kubernetes를 기본 시스템으로 사용하면 엔드투엔드 에이전트 배포에 필요한 모든 워크로드 유형에 걸쳐 일관된 인프라 관리를 가능하게 하고, 에이전트, 추론 및 훈련 주기를 아우르는 RL 시나리오에 대한 전체적인 인프라 최적화를 허용합니다. ## 데모 데모 비디오는 Agent Substrate 클러스터가 단 8개의 물리적 Pod에 걸쳐 약 250개의 상태 저장 액터를 멀티플렉싱하는 것을 보여줍니다. 입증된 주요 기능은 다음과 같습니다: 1. **액터 텔레포트:** 풀의 사용 가능한 워커로 액터를 1초 미만의 활성화로 고성능 일시 중지 및 재개합니다. 2. **상태 유지:** 전체 상태 스냅샷을 통해 최대 절전 주기 전반에 걸쳐 영구 작업 메모리(휘발성 RAM) 및 파일 시스템 상태가 완벽하게 보존됩니다. 3. **에이전트 멀티플렉싱:** 대규모 상태 저장 액터 레지스트리를 소규모 공유 물리적 Pod 풀에 '저글링'하여 30배 이상의 초과 구독을 입증합니다. ## 프레임워크 비종속 및 호환성 Agent Substrate는 프레임워크 및 에이전트 하네스 비종속적으로 설계되었습니다. 커널 수준(gVisor를 통해)에서 표준 OCI 컨테이너를 관리하므로 모든 스택에 구축된 에이전트를 호스팅할 수 있습니다. - **에이전트 개발 키트(ADK):** 호출 간 세션 상태를 액터 상태로 보존하는 ADK 에이전트를 지원합니다. - **LangChain:** LangChain 에이전트 및 도구 호출에 이상적인 실행 환경입니다. - **Claude Code, CodeX 및 Antigravity:** 세션 간 시스템 상태 및 파일 시스템 상태를 보존하는 고밀도 상태 저장 코딩 환경을 지원합니다. - **모델 컨텍스트 프로토콜(MCP):** 모든 모델에 지속적인 도구를 제공하기 위해 보안 샌드박스 처리된 MCP 서버를 Substrate 액터로 배포하는 것을 지원합니다. ## 생태계 및 예제 - **에이전트 실행기(google/ax):** Agent Substrate에서 보안 초고확장 에이전트 하네스를 구축하는 방법을 보여주는 분산 에이전트 런타임입니다. - **kagent:** CNCF 샌드박스 프로젝트이자 Kubernetes 네이티브 프레임워크로, Agent Substrate를 사용하여 샌드박스 처리된 상태 저장 에이전트 워크로드를 실행하는 AI 에이전트를 구축, 배포 및 관리합니다. ## 상태 및 호환성 Agent Substrate는 현재 초기 개발 단계에 있습니다. 프로덕션 사용에 적합하지 않으며, API가 변경될 가능성이 거의 확실합니다. 이 단계에서는 이전 버전과의 호환성 보장이 제공되지 않습니다. ### 지원되는 Kubernetes 릴리스 현재 최신 안정 Kubernetes 릴리스와 이전 마이너 릴리스를 지원하는 것을 목표로 합니다. ## 커뮤니티 공지 및 토론을 위해 ate-dev Google 그룹에 가입하세요. 주간 커뮤니티 회의는 매주 목요일 오전 10:00~11:00 PST에 개최됩니다. CNCF Slack 채널(#substrate-users 및 #substrate-dev)도 있습니다. ## 빠른 시작(개발) 로컬에서 전체 환경을 설정하려면: 1. Go, kubectl 및 docker가 설치되어 있는지 확인합니다. 2. 다음 단계를 실행합니다: - `hack/create-kind-cluster.sh` 클러스터 및 로컬 레지스트리 생성. - `hack/install-ate-kind.sh --deploy-ate-system` ate, PostgreSQL, rustfs 설치. - `hack/install-ate-kind.sh --deploy-demo-counter` 카운터 데모 설치. - `go install ./cmd/kubectl-ate` kubectl-ate 설치. - 카운터 액터 생성: `kubectl ate create actor my-counter-1 -a ate-demo-counter --template counter`. - 네트워크 라우터 포트 포워딩: `kubectl port-forward -n ate-system svc/atenet-router 8000:80`. 3. 별도 터미널에서 카운터를 증가시키는 HTTP 요청을 보냅니다: ```shell curl -X POST -H "ate-target-actor: ate-demo-counter/my-counter-1" -i http://localhost:8000/ ``` 워커 용량은 버전이 지정됩니다: 데이터플레인은 `ate.dev/substrate-version` 레이블이 있는 노드에서만 스케줄링하며, 설치 시 실행 시 존재하는 모든 노드에 해당 레이블을 스탬프합니다. ### GKE 빠른 시작(개발) 1. 환경 파일 복사 및 편집: `cp hack/ate-dev-env.sh.example .ate-dev-env.sh`. 2. 애플리케이션 기본 자격 증명 활성화: `gcloud auth application-default login --project=${PROJECT_ID}`. 3. GCP 리소스 프로비저닝: `go run ./tools/setup-gcp bootstrap`. 4. 시스템 배포: `./hack/install-ate.sh --deploy-ate-system`. 5. 샘플 앱 배포: `./hack/install-ate.sh --deploy-demo-counter`. 개별 단계에 대한 사용자 지정 설정 및 해체 스크립트가 제공됩니다. ## 데모 - **카운터 데모:** 일시 중지/재개 간 상태 보존을 보여주는 상태 저장 Go HTTP 서버입니다. - **샌드박스 데모(Antigravity):** 파일 시스템 상태를 보존하면서 임의 셸 실행을 허용하는 보안 샌드박스 실행 환경(Alpine Linux)입니다. - **Claude Code 멀티플렉스:** 여러 Claude Code 에이전트를 제한된 워커 풀에 멀티플렉싱하여 물리적 하드웨어를 초과 구독하는 것을 보여줍니다. - **멀티 템플릿:** 서로 다른 바이너리를 실행하는 두 개의 ActorTemplate이 하나의 WorkerPool을 공유합니다. - **요청 파킹:** 라우터가 워커가 확보될 때까지 들어오는 요청을 보류하는 초과 구독 풀입니다. - **자동 확장 WorkerPool:** prometheus-adapter가 공급하는 HPA로 할당된 워커 수에 따라 WorkerPool을 확장합니다. ## 문서 및 가이드 - 아키텍처: 제어 플레인, 노드 슈퍼바이저 및 네트워킹 스택이 어떻게 결합되는지. - API 구성 가이드: WorkerPool, ActorTemplate, Secret 및 Volume 구성에 대한 자세한 참조. - 전체 CLI 문서: kubectl-ate 설치 및 사용법. - 용어집: 핵심 용어(Actor, Atespace, ActorTemplate, WorkerPool, Worker, ate-api-server, atenet, atelet, ateom). - 통합 저장소: 통합이 위치한 곳과 수정 사항이 코어로 다시 흐르는 방법. - 관찰 가능성 가이드: 액터 로깅, 메트릭 및 분산 추적. - 인증 가이드: 신뢰할 수 있는 JWT 공급자 및 인간 자격 증명 구성. - 이그레스 트래픽: 액터가 외부 세계에 도달할 수 있는 프로토콜과 차단된 프로토콜. - 액터 이그레스 정책에 대한 MITM 가로채기 활성화. - 요청 파킹: 라우터가 일시적인 워커 풀 포화를 통해 요청을 파킹하는 방법. - 롤링 업그레이드 런북: 액터 상태를 잃지 않고 실행 중인 substrate를 노드별로 업그레이드. - 위협 모델: 신뢰 경계, 가정 및 알려진 위험. - 로드맵: 현재 제한 사항 및 향후 계획. - 벤치마킹 가이드: Locust 기반 부하 테스트, 모니터링 스택 및 오케스트레이션된 벤치마크 하네스. ## 둘러보기 주요 명령 및 구성 요소: - `cmd/ateapi`: gRPC 엔드포인트를 노출하는 핵심 제어 플레인 API 서버. - `cmd/atelet`: 물리적 워커 Pod를 감독하는 노드 수준 DaemonSet. - `cmd/atecontroller`: WorkerPool 사용자 정의 리소스를 조정하는 Kubernetes 컨트롤러. - `cmd/atenet`: Envoy 라우팅 및 프록시 사이드카를 제공하는 결합 네트워킹 컨트롤러. - `cmd/ateom-gvisor`: runsc 체크포인트 및 복원 명령을 실행하는 내부 Pod 헬퍼. - `cmd/ateom-microvm`: 액터를 cloud-hypervisor VM으로 실행하는 마이크로 VM 피어. - `cmd/podcertcontroller`: Pod 인증서 서명자용 폴리필 제공. - `cmd/kubectl-ate`: Agent Substrate 리소스 관리를 위한 CLI 도구. - `cmd/benchmarking`: 부하 테스트용 합성 워크로드. - `tools/setup-gcp`: GCP 인프라 프로비저닝 유틸리티. - `demos/`: 기능을 보여주는 샘플 애플리케이션.