엔비디아 OpenShell, 자율 AI 에이전트에 커널 수준 샌드박스 쥐여준다
엔비디아가 자율 AI 에이전트 여러 개를 동시에 굴릴 때 쓰는 런타임 OpenShell을 GitHub에 공개했다. Apache License 2.0으로 배포되며, 핵심은 에이전트에게 파일 읽기·패키지 설치·API 호출·자격증명 사용 권한을 주면서도 데이터와 시크릿, 네트워크에 대한 무제한 접근은 막는 것이다. 각 에이전트가 무엇을 건드릴 수 있는지를 정책으로 선언하면, 런타임이 그것을 강제한다.
강제 방식은 두 갈래다. 하나는 커널을 계측해 파일 접근과 시스템 콜, 네트워크 연결을 실행 시점에 통제하는 것이다. 에이전트는 격리된 샌드박스 안에서 돌고, 밖으로 나가는 모든 연결은 정책 검사를 통과해야 한다. 자격증명도 에이전트에게 그대로 노출되지 않는다. 승인된 엔드포인트로 향하는 요청에만 런타임이 자격증명을 붙여준다. 다른 하나는 정책 변경 자체를 형식 검증(formal verification)으로 미리 따져보는 절차다. 새 정책이 어떤 접근을 새로 열어주는지, 예컨대 자격증명을 들고 처음 보는 호스트에 나가거나 새 API 메서드를 호출하게 되는지를 표시해 사람 검토 대기로 넘긴다.
구조는 게이트웨이·슈퍼바이저·샌드박스로 나뉜다. 게이트웨이는 샌드박스와 정책, 접근을 아우르는 제어 평면 역할을 한다. 샌드박스는 이미지와 런타임, GPU, 수명주기를 다루고, 정책은 파일시스템·네트워크·프로세스 규칙에 더해 변경을 검토하는 advisor와 prover를 포함한다. 프로바이더는 승인된 엔드포인트에서만 유효한 자격증명을 관리하며 추론 엔드포인트도 여기에 들어간다. 쿠버네티스 환경에서는 Helm으로 게이트웨이를 배포하는데, 이때 CNI가 NetworkPolicy를 실제로 강제해야 한다는 전제가 붙는다.
0.1.x 라인에서는 안정적인 릴리스 주기와 함께 새로운 격리 프리미티브, 확장 표면, 새 API가 추가됐고 0.1.0 업그레이드 가이드가 별도로 제공된다. 확장 지점으로는 미들웨어와 인터셉터, 컴퓨트 드라이버가 열려 있다. 애플리케이션에서 게이트웨이로 붙는 SDK는 npm(@nvidia/openshell-sdk, GitHub Packages), Go, Rust 세 가지로 나와 있고, SDK는 CLI를 설치하지 않으므로 가능하면 게이트웨이와 같은 릴리스 버전을 맞추는 편이 권장된다.
설치는 셸 스크립트 한 줄로 CLI와 로컬 게이트웨이를 세팅하고, `openshell sandbox create --name demo`로 샌드박스를 띄우는 흐름이다. 다만 기본 샌드박스 이미지는 에이전트가 설치되지 않은 최소 우분투라서, 실제 에이전트를 돌리려면 OpenCode를 무료 OpenRouter 모델에 붙이는 첫 에이전트 튜토리얼을 따라가며 접근 승인 과정을 익혀야 한다. 구동 환경은 리눅스, 애플 실리콘 기반 맥OS, WSL 2를 쓴 윈도우(실험적)이며 Docker나 Podman, 또는 호스트 가상화가 필요하다.
코딩 에이전트를 쓰는 팀을 위한 스킬 패키지도 함께 배포된다. `npx skills add NVIDIA/OpenShell`로 설치하면 에이전트가 OpenShell CLI를 조작하고 샌드박스 정책을 작성하며 게이트웨이와 추론 라우팅을 디버깅하는 법을 익힌다. 이 스킬은 저장소의 skills/ 디렉터리에 있고 소스 체크아웃 없이도 동작한다.
배경에는 에이전트의 유용함과 위험이 같은 지점에서 갈린다는 문제의식이 있다. 파일을 읽고 패키지를 깔고 API를 부르고 자격증명을 쓰는 순간 에이전트는 쓸모 있어지지만, 그 권한을 그대로 주면 데이터와 시크릿이 통째로 노출된다. 지금까지는 전부 허용하거나 전부 차단하는 이분법에 가까웠다면, OpenShell은 정책 단위로 권한을 쪼개고 변경마다 검증과 리뷰를 끼워 넣는 쪽을 택했다. 프로젝트 자체도 에이전트 주도 워크플로로 개발된다는 점을 내세운다.
실무에서는 에이전트 실행 권한을 코드처럼 선언하고 버전 관리하며, 권한 확대가 발생하는 변경만 사람이 승인하는 구조를 만들 수 있다. 여러 에이전트를 병렬로 돌리는 파이프라인에서 사고 반경을 좁히는 수단이 생기는 셈이다. 쿠버네티스에 얹을 계획이라면 CNI의 NetworkPolicy 지원 여부를 먼저 확인해야 한다.
주의할 점도 분명하다. 윈도우 지원은 WSL 2 기반으로 실험적 단계이고, 기본 이미지에는 에이전트가 없어 직접 준비해야 한다. 텔레메트리는 기본으로 켜져 있으나 운영 범주와 카운트 수준의 익명 정보만 모으며 샌드박스 이름, 호스트명, 파일 경로, 프롬프트, 자격증명, 프로바이더·모델 이름, 사용자 콘텐츠는 수집하지 않는다고 밝힌다. 끄려면 게이트웨이에 OPENSHELL_TELEMETRY_ENABLED=false를, Helm 설치라면 server.telemetryEnabled=false를 설정하거나 아예 텔레메트리를 빌드에서 제외할 수 있다. 소프트웨어가 외부 자료를 자동으로 가져오는 만큼 그 자료의 약관과 보안·적합성 검토 책임은 사용자에게 있고, 소프트웨어는 어떠한 보증도 없이 있는 그대로 제공된다.