4.2 KiB
4.2 KiB
ADR-0002: PocketBase + gVisor Platform For Agent-Built Microapps
Дата: 2026-03-23
Статус: accepted
Контекст
Нужен минимальный платформенный слой, в котором агент может собирать микро-приложения для клиентов по жёсткому шаблону:
- данные и auth живут в PocketBase;
- код приложения исполняется изолированно в Deno runtime;
- delivery идёт только из шаблонного репозитория и после валидации;
- control-plane хранится в основной Prisma-базе проекта.
Ключевые ограничения:
- агент не должен деплоить произвольный код вне шаблона;
- приложения разных клиентов должны быть логически и операционно изолированы;
- база данных и execution host разводятся в разные контуры;
- rollout и rollback должны опираться на versioned deploy records.
Решение
Принимаем MVP-схему из двух data-plane компонентов и одного control-plane:
PocketBase
- отдельный сервис данных для микро-приложений;
- каждое приложение получает собственный
pocketbaseInstanceIdи URL; - доступ из микро-приложения идёт только через разрешённый service account.
Deno runnerвgVisor
- каждое приложение исполняется как контейнер с
runsc; - runtime получает лимиты по CPU/RAM/PIDs и whitelist по env/network;
- runner запускает только Deno entrypoint из шаблона микро-приложения.
backendкак control-plane
- хранит
MicroAppProject,MicroAppRuntimeConfig,MicroAppDeployment; - выдаёт конфиг для provisioning и delivery;
- знает путь репозитория, ветку, template checksum, preview/prod URL.
Поток
- Агент создаёт проект только из
microapps/templates/pocketbase-deno-dashboard. - Валидатор проверяет структуру репозитория и
app.config.ts. - Control-plane создаёт или обновляет запись
MicroAppProject. - Delivery pipeline фиксирует новую версию в
MicroAppDeployment. - Runner поднимает Deno-контейнер через
gVisor. - Публикация идёт через preview domain, а promotion в основной домен выполняется отдельно.
Delivery
- source of truth: git-репозиторий приложения;
- deploy unit: versioned template-compliant app directory;
- preview создаётся автоматически после успешной валидации;
- production переключается через отдельный promote шаг;
- rollback выполняется redeploy предыдущей записи
MicroAppDeployment.
Домены
На первом этапе платформа хранит:
primaryDomainpreviewDomain
Привязка доменов и DNS-автоматизация выносятся в отдельный шаг интеграции с Cloudflare и не блокируют запуск control-plane MVP.
Последствия
Плюсы:
- появляется единый control-plane для клиентских микро-приложений;
- есть жёсткий шаблон и проверяемый runtime policy;
- база данных и execution host разделены;
- есть основа для preview/prod flow и rollback.
Минусы:
- runtime по-прежнему требует отдельного delivery automation поверх git;
- provisioning PocketBase instance пока остаётся внешней операцией;
- домены и TLS-автоматизация ещё не включены в MVP-каркас.