Bivack: облачный sandbox для coding agents на AWS Lambda MicroVM

Три развилки для соло с Claude Code, MCP и hooks на ноутбуке: оставить всё локально, отдать фоновые задачи hosted agents вендора или поднять свою MicroVM с домом на S3 и доступом из браузера. Gunnar Grosch в разборе Bivack разбирает третий путь: per-user AWS Lambda MicroVM, выбор между терминалом и VS Code workbench без SSH и граница изоляции, за которую платите, пока VM не уснула.
MicroVM под агента: локальный стек, дом на S3 и таймеры сна
Типичный agentic stack на личном компьютере: Claude Code с Bedrock, hooks, MCP-серверы и плагины, всё на локальном терминале и диске. Bivack переносит agent CLI на MicroVM: в образе деплоя опционально Claude, Codex, OpenCode и Kiro, плюс инфраструктурные CLI; в примере автора включён только Claude (CLAUDE=latest), остальное подключается осознанно из‑за размера image.
Один MicroVM на пользователя, не на каждого агента: все выбранные CLI делят одну машину и один workspace. Дом на Amazon S3 Files (NFS) монтируется при старте VM и переживает suspend и terminate: медленнее локального диска, но не исчезает вместе с сессией. SSH нет; вручную: tools/exec.js и tools/run-remote.js, снять стек: ./scripts/teardown.sh.
Для unattended-режима в образе жёсткие дефолты (bypass permissions у Claude, обход approvals у Codex и allow-all у Kiro): изоляция на уровне MicroVM, а не «доверчивый ноутбук».
Облачный sandbox не always-on. В deploy.env три рычага:
| Параметр | Дефолт | Смысл для agent-сессии |
|---|---|---|
IDLE_MAX_SECONDS |
2 часа без входящего трафика → suspend | Ушли с ноутбука на пару часов, VM уснула |
IDLE_SUSPEND_SECONDS |
30 минут | Окно, в котором suspend ещё можно возобновить |
MAX_LIFETIME_SECONDS |
8 часов | Потолок жизни одной VM, дальше recycle |
Travel day укладывается в дефолты; «weekend batch job» упирается в восьмичасовой потолок и idle-окно. После двух часов без трафика VM уходит в suspend, процесс агента обрывается, home на S3 остаёт. Память задаётся MEMORY_MIB: 4 GB по умолчанию, burst до 4×; отдельных цифр vCPU Grosch не называет.
VS Code в браузере: WebSocket вместо SSH
Доступ из browser terminal (xterm.js) или browser build VS Code, не SSH и не HTTP-редактор с самой VM. Узкое место ingress: endpoint MicroVM принимает auth только в заголовке X-aws-proxy-auth, обычный браузер не ставит его на navigation и subresource loads. Workbench это self-hosted клиент с authenticated WebSocket к агенту внутри VM: FileSystemProvider, терминал и watch через один сокет.
В UI кнопки terminal и editor; один home, одни логины, одна машина; клик по пути в терминале открывает файл в редакторе. Ограничения IDE жёсткие: только extensions с web entrypoint, нет Microsoft/GitHub sign-in и Settings Sync, Source Control в workbench нет, git и gh в терминале; настройки IDE в IndexedDB браузера, не на VM (workspace .vscode/settings.json на машине остаётся).
Для vibe-coding агент и файлы в облачной VM, а «редактор рядом с агентом» собирается отдельным фронтенд-проектом, не переносом локального VS Code.
Изоляция между пользователями и логины внутри sandbox
Граница между пользователями: MicroVM (Firecracker snapshot); биллинг compute, пока VM «awake». В sandbox нет credentials хостингового AWS-аккаунта: execution role умеет mount S3 Files и lookup своего endpoint; свою инфраструктуру пользователь подключает профилями в ~/.aws в home.
В шаблоне Remote Developer (rDev) в sandbox были Bedrock и широкие boundary-limited права в hosting account; Bivack убирает hosting-account access из sandbox. Компрометация агента не достаёт до AWS-аккаунта, где крутится stack, но может достать до всего, куда пользователь залогинился внутри (~/.claude, ~/.codex, ~/.kiro, gh, git, AWS SSO cache). На shared deployment оператор stack теоретически читает home в bucket: trade-off «компания vs personal deploy».
Внутри VM пользователь coder с passwordless sudo и открытым outbound internet, это не hardened jail. Cognito с admin-created users, JWT через API Gateway → Lambda выдаёт short-lived token и endpoint; sub мапится на один S3 access point и одну MicroVM.
Счёт, альтернативы и старт deploy
Абсолютной «цены соло в месяц» Grosch не фиксирует; есть ориентиры и контрасты.
- Compute: MicroVM тарифицируется пока running; в suspend compute не капает, платится storage home.
- NAT: дефолт
NAT_MODEэтоt4g.nanomasquerade («a few dollars a month»);NAT_MODE=gatewayэто managed NAT Gateway («roughly ten times» monthly cost инстанса). - Budget: при
BUDGET_EMAILопциональный AWS Budget, дефолтBUDGET_USD$25/month, алерты на 80% и 100%. - S3 Files + versioning: churn home раздувает версии; рекомендован lifecycle на noncurrent versions (expire через неделю в примере).
Сравнение: hosted agents (Claude Code/Codex in cloud, background agents Cursor/Copilot/Devin) дают меньше ops, модель и инфра вендора, код в их аккаунтах, но не вашу среду; VPS ~$5/month это shared kernel, always-on, home умирает с box; rDev это lineage (per-user Lambda MicroVMs, Cognito, WebSocket terminal, S3 home), Bivack добавляет workbench, chooser, deploy/teardown, NAT modes, budget и убирает hosting creds.
Model spend на аккаунтах провайдеров пользователя, без sandbox-level cap. Preview dev server из браузера не встроен (тот же header constraint); нужен tunnel изнутри VM. Stack single region.
Репозиторий: git clone https://github.com/gunnargrosch/bivack; первый deploy 5–10 минут на image build. Prerequisites: AWS CLI ≥2.35.10 (MicroVMs), SAM ≥1.163.0, Node 20, регион с Lambda MicroVMs (в примере us-east-1).
Перед agent-workflow стоит пройтись по пяти пунктам:
- Уложится ли типичный agent-сеанс в 8 часов VM и 2 часа idle до suspend.
- Готовы ли к медленному home на S3 Files vs локальный SSD на ноутбуке.
- Нужен ли git/PR из workbench UI или достаточно terminal +
gh. - Кто владеет секретами в
~/.claude/ SSO cache при shared deploy. - Настроены ли lifecycle на S3 и budget alert, чтобы versioning не съел счёт.
Если hosted agents вендора закрывают ваш сценарий, Bivack избыточен. Если нужны ваши MCP, hooks и образ с выбранными CLI без отдачи кода в чужой аккаунт, схема MicroVM + persistent home осмысленный эксперимент ценой ops и таймеров вместо «вечно включённого» ноутбука.
Источники
- Gunnar Grosch, «Building Bivack: A Cloud Dev Sandbox for Coding Agents on AWS Lambda MicroVMs», Dev.to: Dev.to (доступ 2026-09-21 UTC, обогащение по полному тексту поста).