Google, 실험적 에이전트 오케스트레이션 테스트베드 Scion 오픈소스 공개

5 days ago 5
  • 컨테이너 안에서 동시에 실행되는 LLM 기반 에이전트들을 로컬 머신과 원격 클러스터에 걸쳐 관리하도록 설계된 실험적 플랫폼
  • 각 에이전트는 독립된 신원, 자격증명, 워크스페이스를 가진 격리된 프로세스로 동작하며, 코딩·감사·테스트 등 다양한 목표를 동적·병렬로 추진
  • "에이전트를 위한 하이퍼바이저" 로 정의되며, 행동 규칙을 맥락에 주입하는 대신 컨테이너·git 워크트리·네트워크 정책으로 외부에서 격리하는 철학을 채택
  • Gemini CLI, Claude Code, OpenCode, Codex 등 주요 에이전트를 하네스(harness) 어댑터로 통합하며, Docker·Podman·Apple Container·Kubernetes를 런타임으로 지원
  • 에이전트 수명주기(Phase), 현재 행동(Activity), 세부 상태(Detail)를 3차원 상태 모델로 추적하며, 협업 시나리오를 데모 게임 코드베이스로 시연

Scion이란?

  • 컨테이너에서 동시에 실행되는 LLM 기반 에이전트 그룹을 로컬 머신, 원격 VM, Kubernetes 클러스터 전반에서 관리하는 실험적 오케스트레이션 테스트베드
  • 에이전트별로 독립된 신원·자격증명·워크스페이스를 부여해, 리서치·코딩·감사·테스트 등 서로 다른 목표를 동적으로 진화하는 병렬 태스크 그래프로 실행
  • Google은 Scion을 "에이전트를 위한 하이퍼바이저" 로 정의하며, 에이전트 메모리·채팅룸·태스크 관리를 독립적(orthogonal) 관심사로 통합

핵심 설계 철학: 제약보다 격리

  • 에이전트 행동을 규칙으로 제한하는 대신, 컨테이너·git 워크트리·네트워크 정책 같은 인프라 레벨 경계로 안전성을 확보
  • 에이전트는 --yolo 모드로 자유롭게 실행되되, 격리 레이어가 외부에서 가드레일을 담당
  • 이 방식 덕분에 에이전트 컨텍스트에 복잡한 규칙을 주입할 필요가 없어, 에이전트가 자신의 태스크에만 집중 가능

핵심 개념 (용어 사전)

Scion은 독자적인 용어 체계를 사용하므로, 아래 개념을 먼저 이해해야 함

  • Agent: LLM + Harness 루프를 실행하는 격리된 프로세스. Scion의 기본 실행 단위이며, 독립적인 신원·자격증명·워크스페이스를 보유
  • Grove: 에이전트들이 존재하는 프로젝트 워크스페이스. 파일 시스템의 .scion 디렉터리에 대응하며, git 저장소 루트나 사용자 홈 폴더에 위치 가능
    • git 기반 Grove는 UUID v5 (저장소 URL에서 결정론적 생성), Hub 네이티브 Grove는 UUID v4 사용
  • Hub: 호스팅 Scion 아키텍처의 중앙 컨트롤 플레인. 사용자·Grove·런타임 브로커 간 상태를 조율하는 "두뇌" 역할
    • OAuth 기반 신원·인증 관리, 에이전트/Grove/템플릿 상태의 중앙 DB 저장, 수명주기 커맨드 디스패치, Web Dashboard를 통한 협업 뷰 제공
  • Profile: 특정 런타임과 Harness 설정을 묶어 정의하는 실행 환경 명세. "Local Docker", "Production Kubernetes" 등 환경 간 전환 시 템플릿 수정 없이 Profile만 교체
  • Harness: Gemini CLI·Claude Code·Codex 등 특정 LLM 도구를 Scion 생태계에 통합하는 어댑터. start, stop, attach, resume 같은 범용 Scion 커맨드가 어떤 에이전트에서도 일관되게 동작하도록 처리
  • Template: 에이전트 생성의 청사진. 기본 설정·시스템 프롬프트·툴을 정의하며 .scion/templates/에 저장
    • 기본 제공 템플릿(gemini, claude, opencode, codex) 외에 "보안 감사자", "React 전문가" 같은 커스텀 역할 템플릿 생성 가능
  • Runtime: 에이전트 컨테이너를 실행하는 인프라 레이어. Docker·Podman·Apple Container·Kubernetes를 지원
  • Runtime Broker: Hub에 등록해 실행 용량을 제공하는 컴퓨팅 노드(서버·랩톱·K8s 클러스터). 에이전트 수명주기 관리, 워크스페이스 동기화, 로그 스트리밍 담당

아키텍처: Manager-Worker 구조

  • scion CLI: 호스트 측에서 에이전트 수명주기를 오케스트레이션하는 도구. Grove(프로젝트 워크스페이스) 관리와 템플릿 관리(scion templates) 제공
  • Agents: Docker 등의 격리된 런타임 컨테이너 안에서 Gemini CLI·Claude Code·Codex 등의 에이전트 소프트웨어를 실행
  • 기본 사용 흐름:
    1. scion init — 프로젝트 루트에서 .scion 디렉터리 생성
    2. scion start <agent-name> "<task>" — 에이전트 실행
    3. scion attach <agent-name> — 에이전트 세션에 인터랙티브 접속, 또는 scion logs로 출력 확인
    4. scion resume <agent-name> — 중단된 에이전트를 상태 보존하며 재시작

워크스페이스 전략: git 격리 방식

에이전트마다 독립된 git 워크스페이스를 부여하는 방식이 두 가지로 나뉨

  • 로컬 모드 — Git Worktrees: Hub 없이 실행 시 사용
    • ../.scion_worktrees/<grove>/<agent> 경로에 전용 브랜치를 가진 워크트리 생성
    • 컨테이너 내부의 /workspace로 마운트되어, 동일 저장소 히스토리를 공유하면서도 독립된 작업 디렉터리를 가짐
    • 작업 완료 후 git merge <agent-branch> 로 수동 병합
  • Hub 모드 — Git Init + Fetch: Hub 사용 시 적용
    • 브로커가 SCION_GIT_CLONE_URL, SCION_GIT_BRANCH, GITHUB_TOKEN을 컨테이너에 주입
    • 컨테이너 내부에서 sciontool init이 워크스페이스를 초기화하고 HTTPS로 저장소를 fetch한 뒤 scion/<agent-name> 브랜치를 체크아웃
    • 호스트의 SSH 자격증명 불필요, GITHUB_TOKEN 필요
    • 모든 브로커 머신에서 저장소 로컬 존재 여부에 관계없이 일관된 동작 보장

리소스 격리 메커니즘

  • 파일시스템: 에이전트별 전용 홈 디렉터리를 컨테이너에 마운트
  • Shadow Mounts (tmpfs): .scion 설정 데이터나 다른 에이전트 워크스페이스에 접근하지 못하도록 tmpfs 섀도 마운트로 차단
  • 자격증명: gcloud 인증 등 민감 자격증명은 읽기 전용 마운트 또는 환경변수 주입으로, 해당 에이전트에만 제한 노출
  • Grove 데이터 외부화: non-git Grove 데이터와 에이전트 홈 디렉터리는 외부화해, 에이전트가 워크스페이스에서 타 에이전트 데이터를 순회(traverse) 불가

에이전트 상태 모델 (3차원)

에이전트 상태를 세 가지 차원으로 추적해 인프라 이벤트와 에이전트 인지 상태를 구분

  • Phase (수명주기 단계): created → provisioning → cloning → starting → running → stopping → stopped (또는 error)
  • Activity (running 중 에이전트 행동): idle, thinking, executing, waiting_for_input, blocked, completed, limits_exceeded, offline
    • completed, blocked, limits_exceeded는 "sticky" 상태로, 에이전트가 명시적으로 재시작되거나 중단될 때까지 유지
    • blocked는 에이전트 스스로 설정하며, 하위 에이전트 완료를 기다리는 중임을 나타내 시스템이 오류로 오인하는 것을 방지
    • offline은 에이전트 하트비트가 일정 시간 감지되지 않을 때 발생하며, 인증 토큰 갱신 실패가 원인일 수 있음
  • Detail: 현재 Activity의 부가 컨텍스트 (툴 이름, 메시지, 태스크 요약 등 자유 형식)

플러그인 시스템

  • hashicorp/go-plugin 기반 플러그인 아키텍처로 시스템 확장 가능, gRPC 통신 사용
  • 메시지 브로커 플러그인: 에이전트 알림 및 구조화된 메시징을 위한 커스텀 메시지 전달 백엔드 제공
  • 에이전트 하네스 플러그인: 코어 코드베이스 수정 없이 새 LLM 도구를 Scion에 통합하는 커스텀 하네스 구현 가능
  • 현재 초기 단계(foundational stage) 로, 두 플러그인 타입 모두 레퍼런스 구현 제공
Read Entire Article