Rivet: S3 위에서 에이전트를 확장·오케스트레이션하는 Actor 플랫폼
Launch HN: Rivet (YC W23) – Scale and Orchestrate Agents on S3
TL;DR Highlight
에이전트마다 Actor를 띄웠더니 콜드스타트 4.99ms, 메모리 72KB가 됐다
Who Should Read
에이전트마다 샌드박스 VM을 띄워 비용과 시작 지연이 부담스러운 백엔드 개발자
Core Mechanics
- 에이전트 하나가 Actor 하나
- Actor는 인메모리 상태, SQLite, WebSocket, 스케줄링을 가진 오래 사는 프로세스다.
- 에이전트·유저·세션·테넌트마다 하나씩 만들 수 있다.
- 샌드박스 대비 수치 비교
- Actor는 p99 콜드스타트 4.99ms, 메모리 72.4KB, 샌드박스(E2B)는 1.70s, 512MiB다.
- Actor는 노드 프로세스를 공유해서 서버 한 대에 수십만 개가 올라간다.
- S3가 유일한 의존성
- 데이터는 모두 S3에 저장되고, Postgres·FoundationDB·NATS는 필요 없다.
- GCS, Azure Blob, MinIO, R2 같은 S3 호환 저장소도 쓸 수 있다.
- 에이전트 루프를 샌드박스 밖으로 분리
- 에이전트는 대부분 추론을 기다리느라 VM이 놀고 있다는 게 전제다.
- 상태·메모리·컨텍스트는 Actor에 두고, 코드 실행이 필요할 때만 툴로 샌드박스에 접근한다.
- 샌드박스가 꼭 필요하진 않다
- 툴 호출·MCP·API만 쓰는 에이전트는 샌드박스 없이 돈다.
- 코드 실행이 필요하면 V8·WebAssembly 기반 경량 샌드박스 agentOS나 기존 샌드박스를 툴로 연결한다.
- Durable Objects 대안으로 소개
- 128MB 메모리 제한이 없고, SQLite 10GB 제한 대신 무제한 저장소를 쓴다고 한다.
- 커스텀 런타임 없이 Node.js·Bun에서 돌고 Apache 2.0 오픈소스다.
Community Reactions
- 스토리지 모델 설명에 대한 호응
- S3를 쓰기 경로에서 뺐다는 설명(3개 AZ 중 2곳 SSD에 기록 후 S3로 배치)이 이해하기 쉬웠다는 반응이 있었다.
- 이 구조의 S3 호환 POSIX 파일시스템이 있다면 흥미롭겠다는 의견도 있었다.
- 실사용 경험 공유
- Cloudflare Durable Object로 만든 인프라를 Rivet으로 옮겨 VPC 안에서 쓰니 만족스러웠다는 경험이 있었다.
- v3를 AWS에 셀프호스팅해 쓰는 중이라는 경험도 있었다.
- "뭘 하는 건지 모르겠다"는 비판
- 웹사이트가 벤치마크보다 해결하는 문제를 먼저 보여줘야 한다는 의견이 있었다.
- actor와 agent의 차이가 불분명하고 UX가 혼란스러워 코딩 에이전트도 헷갈려 했다는 경험이 있었다.
- 성능 주장에 대한 반론
- 에이전트는 대부분 모델을 기다리니 오케스트레이션 속도는 병목이 아니라는 의견이 있었다.
- 샌드박스가 비싸고 느리다는 주장에 근거 수치를 묻는 댓글, E2B와 보안 격리를 비교해야 한다는 의견도 있었다.
How to Apply
- 지금 쓰는 에이전트 루프의 대기 시간 측정하기
- 오늘 한 세션에서 모델 대기, 툴 실행, 샌드박스 유휴 시간을 로그로 나눠 찍어라.
- 샌드박스가 대부분 놀고 있다면 루프를 샌드박스 밖으로 뺄 후보다.
- 샌드박스가 필요한 에이전트와 아닌 에이전트 분류하기
- 고객 지원처럼 툴 호출·MCP·API만 쓰는 에이전트를 먼저 골라라.
- 이런 에이전트는 샌드박스 없이 Actor에서 돌리는 예제로 시험해라.
- 상태 저장 방식을 세션별 SQLite로 바꿔 보기
- 대화 기록과 산출물을 에이전트별 SQLite 테이블에 저장하도록 구조를 바꿔라.
- 재시작 후에도 기록이 남는지 로컬에서 확인해라.
- 코드 실행은 툴로만 연결하기
- 기존 샌드박스 제공자를 유지하고 bash 툴로 감싸 Actor가 호출하게 해라.
- 신뢰 경계를 줄이려면 코드 실행 부분만 agentOS 같은 경량 샌드박스로 분리해라.
Try It
# Claude Code, Cursor, Codex 같은 코딩 에이전트에 그대로 붙여넣기 (원문 README의 안내 프롬프트)
Run npx skills add rivet-dev/skills, then ask me what to build and run it locally.
# 실행 후 에이전트가 묻는 질문에 {{만들고 싶은 에이전트}}를 답하고, 로컬에서 돌아가는지 확인하세요
# 이어서 해 볼 것: 에이전트를 재시작한 뒤에도 대화 기록이 남는지 확인해 보세요Terminology
관련 논문
Claude Code가 User-Agent 헤더에 이메일을 실어 웹사이트로 보낸다
Claude Code가 curl 요청 User-Agent에 사용자 이메일을 넣어 스팸 피해 제보가 나왔다
Stroq: 코딩 에이전트가 한 일과 이유를 로컬에서 감사하는 도구
Stroq는 에이전트 세션에서 유출된 키를 찾고 위험 명령을 출처까지 추적해 막는다
멀티 에이전트 시스템 밑바닥부터 만들기: 아키텍처 패턴 3가지와 실패 모드
에이전트를 쪼개면 조율 문제가 생기니 코드 레벨 제한으로 막아야 한다
에이전트 매 턴마다 후보 N개 뽑아 고르기: Turn-Level Best-of-N 샘플링
매 턴 후보 액션 N개 중 LLM이 하나를 골랐더니 pass@1이 오르고 턴 수가 40~50% 줄었다
요약이 지시가 될 때: LLM 에이전트가 직접 쓴 인수인계 요약 속 근거 없는 정책
시스템 프롬프트의 승인 문장을 구체화하자 근거 없는 제한 요약이 5.0%에서 1.8%로 줄었다
AI가 40년 된 기술 부채를 갚게 만들고 있다: PHP2Shell 사건
AI가 PHP의 오래된 크래시 버그를 원격 코드 실행 취약점으로 바꿔냈다
Postman 데스크톱이 Codex·Claude Code 플러그인을 몰래 설치했다
Postman 앱을 열었더니 Codex·Claude에 플러그인과 훅이 자동 설치됐다
Octomind: 단일 Rust 바이너리 오픈소스 코딩 에이전트 하니스
Rust 바이너리 하나로 어떤 모델이든 돌리고, TOML 가드레일로 정책을 거는 코딩 에이전트