Summary
Publish prebuilt Trinity images (platform services and the agent base image) to a public registry on every release, ship a pull-only hosted compose file, and make first boot fully unattended from cloud-init — so a fresh VM comes up serving Trinity in ~2 minutes with no on-box builds. This is the prerequisite for every one-click / marketplace channel (DigitalOcean, Vultr, Hostinger, Elestio, Dokploy, and the #835 Packer image).
Context
Today scripts/deploy/start.sh builds the agent base image on the host (scripts/deploy/build-base-image.sh → docker/base-image/Dockerfile, 5–10 minutes) and docker-compose.prod.yml uses build: blocks — no workflow pushes images to a registry. A marketplace 1-click that spends ten minutes compiling on first boot fails the "one click" bar, and managed hosts (Elestio) and template catalogs (Dokploy/Coolify/Hostinger Docker Manager) only accept pull-only compose files.
Findings from the 2026-08-18 hosting-channels research: every VM marketplace already ships Docker-socket-mounting apps (Coolify, CapRover, Dokku, OpenClaw), so Trinity's shape is accepted; the only blocker is packaging. #835 (Packer image for GCP + Hetzner) becomes thin once images are prebuilt — its "clone to /opt/trinity and build" acceptance criteria should be revisited to depend on this issue.
Acceptance Criteria
Technical Notes
Summary
Publish prebuilt Trinity images (platform services and the agent base image) to a public registry on every release, ship a pull-only hosted compose file, and make first boot fully unattended from cloud-init — so a fresh VM comes up serving Trinity in ~2 minutes with no on-box builds. This is the prerequisite for every one-click / marketplace channel (DigitalOcean, Vultr, Hostinger, Elestio, Dokploy, and the #835 Packer image).
Context
Today
scripts/deploy/start.shbuilds the agent base image on the host (scripts/deploy/build-base-image.sh→docker/base-image/Dockerfile, 5–10 minutes) anddocker-compose.prod.ymlusesbuild:blocks — no workflow pushes images to a registry. A marketplace 1-click that spends ten minutes compiling on first boot fails the "one click" bar, and managed hosts (Elestio) and template catalogs (Dokploy/Coolify/Hostinger Docker Manager) only accept pull-only compose files.Findings from the 2026-08-18 hosting-channels research: every VM marketplace already ships Docker-socket-mounting apps (Coolify, CapRover, Dokku, OpenClaw), so Trinity's shape is accepted; the only blocker is packaging. #835 (Packer image for GCP + Hetzner) becomes thin once images are prebuilt — its "clone to
/opt/trinityand build" acceptance criteria should be revisited to depend on this issue.Acceptance Criteria
latestimages for backend, frontend, mcp-server, scheduler and the agent base image to a public registry (e.g. GHCR); multi-arch (amd64 required, arm64 desirable — Hetzner CAX / Umbrel).docker-compose.hosted.yml(name TBD) pulls those images only — nobuild:blocks — and works with the same.envcontract asdocker-compose.prod.yml.start.sh --unattended(or the hosted compose) never asks for input:SECRET_KEY/INTERNAL_API_SECRET/ADMIN_PASSWORDauto-generated when absent and printed once; the setup form is never reachable unauthenticated on a public IP (either the admin exists at boot or the form is bound to a one-time token).trinity-ops-public/provision/cloud-init.sh) takes admin password / domain / optional Cloudflare Tunnel token and results in a serving instance; documented indocs/DEPLOYMENT.md.docs/AGENT_INSTALL_GUIDE.mdanddocs/DEPLOYMENT.mdreference the pull-only path as the default for servers.Technical Notes
docker-compose.yml(dev, build-from-source) unchanged; the hosted file is additive.