9P by xguru 22시간전 | ★ favorite | 댓글과 토론
  • Vercel에서 만든 "Bash for Agents"
  • 안전하고 샌드박스 처리된 bash 환경이 필요한 AI 에이전트를 위해 설계된 TypeScript 기반 가상 Bash 환경
  • 메모리 내 가상 파일시스템(InMemoryFs) 위에서 동작하며, 실제 디스크 접근은 불가능한 샌드박스 실행 환경
  • 기본적으로 네트워크 접근은 차단되어 있으며, 필요 시 curl을 통한 허용 URL 기반의 안전한 네트워크 요청 지원
  • 제공된 파일시스템만 접근 가능하며, 무한 루프·재귀 실행 방지 기능 포함
    • 바이너리나 WASM 실행은 지원하지 않음
  • API 사용exec() 단위로 격리되어, 환경 변수나 함수, 작업 디렉터리가 호출 간에 유지되지 않음(파일시스템 상태만 지속)
  • 생성 인자로 초기 파일, 환경 변수, 작업 디렉터리, 실행 제한 등 세밀한 설정
  • Lazy 파일 로딩 지원하여, 필요 시점에만 파일 내용을 동기/비동기 방식 함수로 생성 가능
  • 사용자 정의 명령어(defineCommand) 기능으로 TypeScript 기반 커스텀 명령 추가 가능
    • CommandContext를 통해 fs, cwd, env, stdin, exec 접근 지원
  • 파일시스템 구현체 4가지 제공
    • InMemoryFs: 순수 메모리 기반
    • OverlayFs: 읽기는 디스크, 쓰기는 메모리
    • ReadWriteFs: 실제 디스크 읽기·쓰기 가능
    • MountableFs: 여러 파일시스템을 경로별로 마운트해 통합 네임스페이스 구성
  • AI SDK 통합 도구bash-tool 지원
    • generateText()와 결합해 AI 모델이 Bash 명령을 안전하게 실행하도록 설계
  • Vercel Sandbox 호환 API 제공
    • Sandbox 클래스를 통해 @vercel/sandbox와 동일한 인터페이스로 사용 가능
    • 필요 시 실제 VM 기반 샌드박스로 전환이 용이함
  • CLIjust-bash 명령 제공
    • OverlayFS 기반으로 실행 후 모든 쓰기 내용은 메모리에서 폐기
    • --json 옵션으로 프로그램적 결과 출력 지원
  • 대화형 셸 모드(pnpm shell) 제공
    • 기본적으로 인터넷 접근 허용, --no-network로 차단 가능
  • 지원하는 명령어 들
    • 파일 조작, 텍스트 처리, 데이터 처리, 압축, 네트워크 등 표준 Bash 명령 대부분 포함
    • jq, sqlite3, python3(Pyodide 기반) 등 데이터 처리 명령도 선택적 지원
    • 셸 기능으로 파이프, 리다이렉션, 조건문, 반복문, 함수, 변수, 글롭 패턴 등 Bash 문법 대부분 구현
  • 기본 디렉터리 구조/home/user, /bin, /usr/bin, /tmp유닉스 유사 환경 제공
  • 네트워크 접근 제어는 URL·HTTP 메서드 기반 화이트리스트 방식
    • dangerouslyAllowFullInternetAccess 옵션으로 전체 허용 가능
  • Python 및 SQLite 지원은 선택적 활성화
    • Pyodide 기반 Python, WASM 기반 SQLite(sql.js)로 완전한 샌드박스 실행 보장
  • 실행 보호 기능으로 함수 깊이, 명령 수, 루프 반복 횟수 등 실행 한도 설정 가능
  • Apache-2.0 라이선스