just-bash - 에이전트를 위한 Bash 시뮬레이션 환경
(github.com/vercel-labs)- 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 기반 샌드박스로 전환이 용이함
-
-
CLI인
just-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 라이선스
GeekNews Weekly에 포함된 글입니다.
에디터 코멘트 보기