Articlestack.convex.dev·2026년 7월 7일·0

How to Give AI Agents a Bash Terminal Without Docker or VMs

Quick Summary

Convex Sandbox는 Docker나 VM 없이 Convex Node action, just bash, Convex storage를 조합해 AI 에이전트에게 상태가 유지되는 bash 터미널과 가상 파일 시스템을 제공하는 경량 샌드박스입니다.

How to Give AI Agents a Bash Terminal Without Docker or VMs 관련 대표 이미지

🖼️ 인포그래픽

How to Give AI Agents a Bash Terminal Without Docker or VMs 내용을 설명하는 본문 이미지

🖼️ 4컷 인포그래픽

How to Give AI Agents a Bash Terminal Without Docker or VMs 내용을 설명하는 본문 이미지

💡 한 줄 요약

Convex Sandbox는 Docker나 VM 없이 Convex Node action, just-bash, Convex storage를 조합해 AI 에이전트에게 상태가 유지되는 bash 터미널과 가상 파일 시스템을 제공하는 경량 샌드박스입니다.

📌 핵심 요약

  • 이 글은 Patrick Frenet이 공개한 Convex Sandbox를 소개하며, AI 코딩 어시스턴트가 Docker, VM, 컨테이너 오케스트레이션 없이도 실제에 가까운 상태 유지 bash 환경을 사용할 수 있다고 설명합니다.
  • 핵심 아이디어는 AI 모델이 이미 bash 명령어와 조합 방식을 잘 알고 있으므로, 별도의 listFiles, readFile, writeFile 같은 JSON 도구를 여러 개 설계하기보다 하나의 bash 실행 도구를 주는 편이 더 자연스럽고 강력하다는 것입니다.
  • 구현은 Node 프로세스 안에서 bash 의미론을 실행하는 just-bash, 파일 내용을 저장하는 Convex storage, 명령 실행과 파일 시스템 동기화를 맡는 Convex node action으로 구성됩니다.
  • Convex의 반응형 특성 덕분에 같은 샌드박스를 보는 여러 브라우저 탭이나 여러 에이전트가 파일 시스템 변화를 실시간으로 공유할 수 있으며, 별도의 websocket, 파일 watcher, diff 프로토콜을 직접 구축할 필요가 줄어듭니다.
  • 다만 이 방식은 텍스트 파일 처리, 문서 워크플로, 에이전트 scratchpad, 코드 리뷰 보조처럼 파일과 셸 중심의 작업에 적합하고, 신뢰할 수 없는 임의 코드 실행, 강한 격리, 네이티브 의존성, GPU 작업, 시스템 패키지가 필요한 워크로드에는 컨테이너 샌드박스가 더 적절합니다.

🧩 주요 포인트

  1. 이 글은 Patrick Frenet이 공개한 Convex Sandbox를 소개하며, AI 코딩 어시스턴트가 Docker, VM, 컨테이너 오케스트레이션 없이도 실제에 가까운 상태 유지 bash 환경을 사용할 수 있다고 설명합니다.
  2. 핵심 아이디어는 AI 모델이 이미 bash 명령어와 조합 방식을 잘 알고 있으므로, 별도의 listFiles, readFile, writeFile 같은 JSON 도구를 여러 개 설계하기보다 하나의 bash 실행 도구를 주는 편이 더 자연스럽고 강력하다는 것입니다.
  3. 구현은 Node 프로세스 안에서 bash 의미론을 실행하는 just-bash, 파일 내용을 저장하는 Convex storage, 명령 실행과 파일 시스템 동기화를 맡는 Convex node action으로 구성됩니다.
  4. Convex의 반응형 특성 덕분에 같은 샌드박스를 보는 여러 브라우저 탭이나 여러 에이전트가 파일 시스템 변화를 실시간으로 공유할 수 있으며, 별도의 websocket, 파일 watcher, diff 프로토콜을 직접 구축할 필요가 줄어듭니다.
  5. 다만 이 방식은 텍스트 파일 처리, 문서 워크플로, 에이전트 scratchpad, 코드 리뷰 보조처럼 파일과 셸 중심의 작업에 적합하고, 신뢰할 수 없는 임의 코드 실행, 강한 격리, 네이티브 의존성, GPU 작업, 시스템 패키지가 필요한 워크로드에는 컨테이너 샌드박스가 더 적절합니다.

🧠 상세 정리

1. 문제의식과 Convex Sandbox의 핵심 제안

글은 AI 에이전트에게 가장 유용한 도구가 이미 모델이 잘 알고 있는 bash일 수 있다는 질문에서 출발합니다. Patrick Frenet이 공개한 Convex Sandbox는 AI 코딩 어시스턴트에게 실제처럼 동작하는 상태 유지 bash 터미널과 가상 파일 시스템을 제공하는 오픈소스 프로젝트로 소개됩니다. 중요한 점은 이 환경이 Docker, VM, 컨테이너 오케스트레이션 없이 Convex 위에서 동작한다는 것입니다. 파일 시스템 상태는 명령 사이에 Convex storage에 보존되므로, 에이전트는 매번 초기화되는 일회성 실행 환경이 아니라 작은 머신을 쓰는 듯한 경험을 얻습니다.

2. 왜 여러 맞춤 도구보다 bash 터미널이 유리한가

글은 대형 언어 모델이 이미 방대한 bash 예제를 학습했기 때문에 ls, cat, grep, sed, pipe, redirection 같은 조작에 익숙하다고 설명합니다. 개발자가 listFiles, readFile, writeFile, searchFiles 같은 도구를 따로 만들면, 사실상 기존 셸의 기능을 재발명하면서 모델에게 새로운 JSON 계약을 다시 가르치는 셈이 됩니다. 반대로 bash 터미널 하나를 제공하면 에이전트는 명령을 연결하고, 출력을 리디렉션하고, 파일을 검사하며, 개발자가 예상하지 못한 조합까지 자연스럽게 수행할 수 있습니다. 또한 도구 스키마를 버전 관리하고 문서화하고 시스템 프롬프트에 설명해야 하는 부담도 줄어듭니다.

3. 세 가지 구성요소: just-bash, Convex storage, Node action

Convex Sandbox는 크게 just-bash, Convex storage, Convex node action 세 부분으로 구성됩니다. just-bash는 Node 프로세스 안에서 bash 의미론을 실행하는 인터프리터이며, 실제 머신의 /bin/bash를 호출하지 않고도 셸 동작을 제공한다는 점이 핵심입니다. Convex storage는 명령 사이에 파일 내용을 보존하는 디스크 역할을 하고, 일반 Convex table은 파일 경로, 크기, sandbox ID 같은 메타데이터를 관리합니다. Node action은 각 명령 실행을 오케스트레이션하고, 필요한 파일을 불러오며, 실행 후 변경 사항을 다시 저장하는 접착 계층으로 작동합니다.

4. 상태 유지 파일 시스템과 lazy-loading 방식

상태가 없는 bash 세션은 에이전트에게 큰 도움이 되지 않기 때문에, 글은 Convex storage를 디스크처럼 사용하는 설계를 강조합니다. 예를 들어 에이전트가 echo 명령으로 note.txt를 만들면, 그 파일은 action이 끝난 뒤에도 사라지지 않고 다음 명령에서 다시 접근할 수 있습니다. 파일 내용은 storage에, 파일 메타데이터는 table에 나누어 저장되며, 이 구조 덕분에 lazy-loading 최적화가 가능해집니다. 천 개의 파일을 나열할 때는 메타데이터 인덱스만 확인하고, 실제 내용은 cat note.txt처럼 bash가 해당 파일을 읽는 순간에만 storage에서 가져오는 방식입니다.

5. Convex의 반응형 특성이 만드는 공유 상태 경험

Convex는 기본적으로 reactive하므로, 같은 sandbox를 구독하는 모든 클라이언트는 동일한 파일 시스템 변화를 실시간으로 볼 수 있습니다. 글은 두 개의 브라우저 탭을 같은 sandbox에 열고 한쪽에서 에이전트가 파일을 만들면 다른 쪽 파일 브라우저에도 즉시 나타나는 예를 듭니다. 여러 에이전트가 같은 sandbox를 공유하며 협업하는 시나리오도 같은 원리로 가능하다고 설명합니다. 컨테이너 기반으로 비슷한 기능을 만들려면 websocket 서버, 컨테이너 내부 file watcher, diff 프로토콜, debounce 전략 등을 직접 설계해야 하지만, 여기서는 Convex query 하나가 상당 부분을 대체합니다.

6. 데모에서 보이는 에이전트의 bash 사용 방식

데모는 터미널, 파일 브라우저, 에이전트와 연결된 채팅 패널로 구성된 작은 UI를 중심으로 설명됩니다. 사용자는 새 sandbox를 만들고 pwd, echo, cat, cp, mv, ls 같은 명령을 실행하며 파일이 파일 브라우저에 실시간으로 나타나는 과정을 볼 수 있습니다. 이후 키보드를 에이전트에게 넘기면, 에이전트는 현재 파일 목록을 확인하기 위해 ls를 실행하고, 짧은 이야기를 만들기 위해 echo와 redirection을 사용하며, 파일을 다시 읽기 위해 cat을 사용합니다. 드래곤이 언급된 이야기를 찾으라는 요청처럼 조금 더 복합적인 작업도 별도 검색 도구 없이 grep과 pipe를 조합해 처리합니다.

7. 코드 내부 동작: Node 런타임, 파일 시스템 hook, cwd 저장

just-bash가 Node primitive를 필요로 하기 때문에, sandbox는 Convex node action 안에서 실행되며 파일에는 use node 지시문이 사용됩니다. 이 지시문은 Convex가 기본 V8 isolate 대신 Node.js 런타임에서 함수를 실행하도록 하여 Node API가 필요한 라이브러리를 사용할 수 있게 합니다. Convex Sandbox는 just-bash에 가상 파일 시스템을 넘기고, 각 파일의 메타데이터는 미리 알지만 내용은 async getter를 통해 처음 읽을 때만 불러오게 합니다. 또한 파일 쓰기, 삭제, 이름 변경 같은 작업을 hook으로 감지해 change-set에 기록한 뒤 명령 종료 시 storage와 metadata table에 반영하며, 명령 뒤의 현재 작업 디렉터리도 sandbox record에 저장해 다음 명령이 같은 위치에서 이어지게 합니다.

8. 적합한 용도와 컨테이너가 필요한 경우

이 방식은 에이전트가 메모, 초안, 중간 결과를 파일로 남기는 scratchpad, 문서를 정리하고 변환해 산출물을 만드는 워크플로, 파일을 읽고 검색한 뒤 요약을 작성하는 코드 리뷰 보조, 인간과 에이전트가 같은 파일 시스템을 공유하는 협업 세션에 잘 맞습니다. 연구 에이전트처럼 여러 턴에 걸쳐 컨텍스트를 디스크에 보관해야 하는 경우에도 유용합니다. 반면 신뢰할 수 없는 컴파일된 바이너리를 실행하거나, GPU와 하드웨어 접근이 필요하거나, 많은 fork와 장기 실행 daemon을 요구하거나, apt-get으로 설치하는 시스템 패키지에 의존하는 작업에는 적합하지 않습니다. 이런 경우에는 강한 격리와 실제 시스템 환경을 제공하는 전체 컨테이너 샌드박스를 선택해야 한다고 글은 구분합니다.

9. 현재 한계와 운영상 주의점

글은 Convex Sandbox가 흥미로운 접근이지만 아직 제한이 있음을 명확히 적습니다. 빈 디렉터리는 파일 중심으로 keying된 파일 시스템 모델 때문에 명령 사이에 보존되지 않으며, 디렉터리 안에 파일을 넣어야 상태가 유지됩니다. sandbox당 파일 수는 약 1,000개 정도의 soft cap이 있는데, 이는 action이 files에 대해 collect를 사용하기 때문이며 더 큰 규모가 필요하면 pagination query로 바꿔야 합니다. 데모의 파일 제거 mutation은 단순화를 위해 public mutation으로 되어 있어 운영 환경에서는 인증을 걸거나 internalMutation으로 바꾸는 보강이 필요하고, Convex Component는 현재 node action을 포함할 수 없기 때문에 패키지처럼 설치하기보다 fork해 맞춰 쓰는 방식이 제안됩니다.

10. 개발자 경험과 관측 가능성

에이전트의 파일 시스템이 Convex table과 storage로 표현되기 때문에, 개발자는 Convex dashboard를 그대로 디버깅 도구로 활용할 수 있습니다. 에이전트가 쓴 모든 파일과 메타데이터 row를 확인하고, 이상한 상태가 있으면 애플리케이션의 다른 Convex 데이터와 같은 방식으로 조사할 수 있습니다. 각 bash 명령은 node action invocation으로 기록되므로 Convex logs에서 실행 시간, 오류, 인자도 확인할 수 있습니다. 글은 이런 action history를 읽으면 에이전트 세션을 되짚어볼 수 있으며, 보통 별도 프로젝트가 될 만한 관측 가능성이 Convex 기반 설계 안에 자연스럽게 따라온다고 평가합니다.

🧾 핵심 주장 / 시사점

  • AI 에이전트 도구 설계에서 모델이 이미 잘 아는 인터페이스를 활용하면, 새 도구 스키마를 많이 만드는 것보다 구현 부담과 프롬프트 부담을 동시에 줄일 수 있습니다.
  • Convex Sandbox의 핵심 가치는 bash 자체보다도 상태 유지 파일 시스템, 반응형 동기화, action 로그가 하나의 애플리케이션 런타임 안에서 결합된다는 점에 있습니다.
  • 이 접근은 컨테이너 샌드박스를 대체한다기보다, 강한 격리나 네이티브 실행이 필요 없는 파일·텍스트 중심 에이전트 워크플로에 맞춘 더 가벼운 선택지로 보는 것이 정확합니다.

✅ 액션 아이템

  • Convex Sandbox를 텍스트 기반 문서 워크플로, 코드 리뷰 보조, 에이전트 scratchpad에 한정해 상태 유지 bash 터미널 프로토타입 적용 대상을 먼저 정한다.
  • just-bash, Convex storage, node action 조합을 단일 bash 실행 API로 추상화해 listFiles/readFile/writeFile 분절 설계를 줄이고 실행 패턴 일관성 규칙을 정리한다.
  • 임의 코드 실행, 강한 격리 필요, 네이티브 의존성, GPU 또는 시스템 패키지 요구 작업은 컨테이너 샌드박스 적용으로 분기한다.

❓ 열린 질문

  • 단일 bash 실행 도구가 다중 JSON 파일 도구 대비 실제 에이전트 성능과 정확도에서 실제로 더 나은 전환점은 언제인가?
  • Convex 반응형 공유 모델에서 다중 탭 및 다중 에이전트 동시 조작 시 파일 충돌과 동기화 순서는 어떻게 판단하고 제어할 것인가?
  • 텍스트 작업이 아닌 네이티브 의존성·GPU·강한 격리 요구 워크로드는 어떤 기준으로 bash 중심 샌드박스에서 컨테이너 샌드박스로 전환해야 하는가?

관련 문서

공통 태그와 주제 흐름을 기준으로 같이 보면 좋은 문서를 이어서 제안합니다.