Updates
Self-host updates are operator-run. An AI agent can prepare values and explain the process, but ordinary admin MCP does not get deploy or restore tools.
Release Contract
Section titled “Release Contract”A release publishes:
- API image digest, for example
ghcr.io/premierstudio/agentful-api@sha256:.... - Web image digest, for example
ghcr.io/premierstudio/agentful-web@sha256:.... - Release manifest JSON containing those exact digests.
- Optional manifest SHA-256 for pinning the manifest bytes.
The updater rejects mutable image tags such as latest. Image references must
use image@sha256:<64 hex chars>.
Run An Update
Section titled “Run An Update”Prepare the host env once:
cp deploy/update.env.example .env.production$EDITOR .env.productionRun a local manifest:
vp run release:update -- \ --manifest deploy/update-manifest.example.json \ --env-file .env.productionRun a published manifest:
vp run release:update -- \ --manifest https://github.com/PremierStudio/Agentful/releases/download/v0.1.0/update-manifest.json \ --expected-manifest-sha256 <64-hex-checksum> \ --env-file .env.productionWhat The Updater Does
Section titled “What The Updater Does”- Validates the manifest.
- Writes a generated env under
.shop/release/. - Starts Postgres if needed.
- Creates a
pg_dump -Fcbackup under.shop/backups/. - Pulls pinned API and web images.
- Runs tracked SQL migrations from the pinned API image.
- Starts API and web containers.
- Health-checks both services.
- Promotes
.shop/release/current.env.
Agent Boundary
Section titled “Agent Boundary”The update command is an operator tool. Do not add it to the normal admin MCP server. If an operations plugin later exposes updates, make it local-only, separately scoped, and confirmation-heavy.