Docker Compose¶
The recommended single-host install. compose.yaml runs seven services: the four app
components (api, worker, runner, web), a one-shot migrate, and bundled
postgres (pgvector) + redis. Only the web edge (Caddy) publishes ports.
Install¶
git clone https://github.com/tessio-ai/tessio.git tessio && cd tessio
cp .env.production.example .env
# set SESSION_SECRET, TESSIO_SECRET_KEY, and optionally TESSIO_ADMIN_EMAIL/PASSWORD
docker compose up -d
Images are pulled from ghcr.io/tessio-ai/tessio-*. Pin a version with
TESSIO_VERSION=X.Y.Z in .env (default latest).
What happens on start¶
postgresandrediscome up and pass health checks.migrateruns the database migrations, then seeds the first admin + default schemas ifTESSIO_ADMIN_EMAILandTESSIO_ADMIN_PASSWORDare set. It runs to completion before the app starts.apiandworkerstart oncemigratefinishes.webcomes up afterapipasses its health check, then serves the UI and proxies/apitoapi.
Open http://localhost (or your TESSIO_SITE_ADDRESS).
Using a managed Postgres / Redis¶
Point DATABASE_URL / REDIS_URL at your managed services in .env and remove the
postgres / redis services from compose.yaml. The Postgres must have the pgvector
extension available.