클라우드 샌드박스를 로컬 마이크로VM으로 교체해 OpenAI 에이전트 지연 시간을 줄인 방법
Source: Dev.to

소개
몇 일 전, 나는 새로운 OpenAI Agents SDK를 사용해 코딩 에이전트를 만들고 있었다. 공식 클라우드 샌드박스 중 하나를 연결했는데(대부분 괜찮다), 에이전트는 동작했지만 매우 느리게 느껴졌다.
로그를 보면 에이전트가 작업당 평균 15번의 도구 호출을 수행하고 있었다. 샌드박스가 클라우드에 호스팅돼 있었기 때문에 물리적인 경로는 다음과 같았다:
My Agent Runtime → Internet → Cloud Sandbox → MicroVM → Internet → My Agent Runtime
각 exec_command마다 공용 인터넷을 왕복해야 했으며, 작업당 30번의 네트워크 홉이 발생했다. 제공자는 “90 ms 콜드 스타트”를 광고했지만, 매 도구 호출마다 발생하는 지속적인 RTT 오버헤드가 사용자 경험을 크게 저해했다.
SDK의 기본 로컬 옵션(bubblewrap on Linux)을 사용해 보았다. 빠르긴 했지만 프로세스 수준 시스템 콜 필터에 의존하고, 신뢰할 수 없는 LLM‑생성 코드를 호스트 커널에서 직접 실행하는 것이 위험하게 느껴졌다.
중간 지점 찾기: BoxLite
클라우드 VM의 하드웨어 격리와 로컬 프로세스의 제로 레이턴시를 동시에 원했다. 그래서 BoxLite를 발견했다 – 샌드박싱 분야의 SQLite라고 할 수 있다. 이것은 KVM(Linux)이나 Hypervisor.framework(macOS)를 이용해 머신에 전용 게스트 커널을 바로 띄우는 임베디드 마이크로VM이다.
BoxLite는 설정할 데몬이 없고, Docker 소켓도 없으며, 루트 권한도 필요하지 않다. 단 한 줄의 pip 명령으로 설치한다:
pip install boxlite-openai-agents
1줄 교체
에이전트 로직을 다시 작성할 필요는 없었다; RunConfig 안의 샌드박스 클라이언트만 바꾸면 된다:
from boxlite_openai_agents import BoxLiteSandboxClient, BoxLiteSandboxClientOptions
# ... agent setup ...
await Runner.run(
agent,
"Write fizzbuzz.py for n=15 and run it.",
run_config=RunConfig(
sandbox=SandboxRunConfig(
client=BoxLiteSandboxClient(), # <-- Changed this line
options=BoxLiteSandboxClientOptions(
image="python:3.12-slim"
),
),
),
)
결과
레이터시가 즉시 감소했다. 마이크로VM이 에이전트 런타임과 같은 프로세스에서 실행되기 때문에 인터넷 홉이 30번에서 0으로 줄어들었다—통신이 이제 마이크로초 수준의 IPC가 되었다.
또한 BoxLite는 QCOW2 스냅샷을 사용하므로 매 세션마다 pandas 같은 패키지를 다시 설치할 필요가 없다. VM 상태를 스냅샷으로 저장해 두고 다음 날 1초 이내에 복구할 수 있다.
노트북에서 코딩 에이전트를 만들면서 클라우드 레이턴시와 타임아웃에 지쳤다면, 로컬 마이크로VM을 사용해 보라. 내 워크플로우가 완전히 바뀌었다.