Skip to content

Upgrading

Database migrations run automatically on every start/upgrade and are idempotent, so the upgrade flow is "get the new images, restart." Back up your database first — see Backup & restore.

Docker Compose

cd tessio
# pin a version (recommended): set TESSIO_VERSION=X.Y.Z in .env
docker compose pull
docker compose up -d

The one-shot migrate service runs the new migrations before api/worker restart. Watch it with docker compose logs migrate.

All-in-one

docker compose -f compose.aio.yaml pull
docker compose -f compose.aio.yaml up -d

The all-in-one container re-runs migrations on start (the s6 migrate step) before the app processes come up.

Kubernetes (Helm)

helm upgrade tessio oci://ghcr.io/tessio-ai/charts/tessio --reuse-values \
  --set image.tag=X.Y.Z

Each upgrade creates a fresh migration Job; the api/worker pods wait for it to complete before the rollout proceeds. Roll back with helm rollback tessio.

Version pinning

Pin TESSIO_VERSION (compose) or image.tag (Helm) to a specific release rather than latest so upgrades are deliberate. Read the release notes before jumping multiple minor versions.