Skip to content

Managing stacks

A stack is a Docker Compose project managed by Kaio. Its compose.yml and generated .env live under data/stacks/<name>/, and its metadata, versions and environment live in SQLite.

Every stack row carries a single state computed from its containers:

Badge Meaning
RUNNING Every container is up
PARTIAL Some containers are up, others are not
PAUSED Every container is paused
EXITED No container is running

CPU, RAM and network RX/TX are summed across the stack’s containers, with automatic unit conversion (B/s → GB/s, MB → GB) so a busy host stays readable.

From the web UI, the ⋮ STACK dropdown groups every action; the TUI exposes the same set as single keys on the Stacks tab.

Action Web TUI CLI
Start ⋮ → Start Stack s stack start <name>
Pause / unpause ⋮ → Pause Stack p stack pause / stack unpause
Logs ⋮ → Logs l stack logs <name>
Edit compose + env ⋮ → ✎ Edit E stack deploy
Apply pending env ⋮ → ✓ Apply changes a stack apply <name>
Check for updates ⋮ → Check Updates c stack check-update <name>
Update (pull & recreate) ⋮ → Update u stack update <name>
Restart ⋮ → Restart r stack restart <name>
Version history ⋮ → Versions v stack versions <name>
Scan for CVEs ⋮ → Scan v on Images tab stack scan <name>
Delete ⋮ → Delete d stack rm <name>

Start, pause and resume act on the whole stack in a single call, backed by docker compose start, pause and unpause on the stack’s project. The web UI and the TUI read the stack’s current state to choose between pausing and resuming, so one key toggles both ways.

The edit dialog holds the compose.yml in a Monaco editor (lazy loaded) and, below it, the environment table. Deploy writes both together: the .env is rewritten, containers are recreated with docker compose up -d, and a new version is recorded.

Deletion removes the stack’s containers with --remove-orphans, then its directory and database rows. It cannot be undone: the version history goes with it.

Kaio, built by Régis Gaidot