Anatomy
When you install an app, Suji:- Renders the app’s compose file with your form input (API keys, channel tokens, subdomain…).
- Ships the rendered compose to your VM over the encrypted management channel.
- Runs
docker compose up -don the VM. - Wires the app’s container into
suji-netso cloudflared can reach it. - Updates the Cloudflare Tunnel ingress so
https://<subdomain>.suji.fr/routes to this install. - Creates a per-install named volume for the app’s persistent data.
install_<hash>. You’ll see this in URLs, file paths on the VM, and container/volume names.
Status
| Status | Meaning |
|---|---|
installing | Compose is being deployed |
running | App is up and healthy |
stopped | Containers are stopped |
restarting | Containers are being bounced |
upgrading | Mid-deploy of a new version or new config |
deleting | Install is being removed (containers + volume) |
failed | Something broke — last_error field has the reason; Logs tab usually shows it too |
What you can do with an install
From the install’s detail page in the dashboard:- Restart — bounces the containers (
docker compose restart). - Upgrade — re-deploys with the latest catalog version. For apps with
upgrade_policy: breaking-changes-flagged, you’ll see a diff to acknowledge first. - Uninstall — stops and removes the containers. By default it also deletes the app’s volume (irreversible) — or choose keep data during uninstall to preserve the volume so you can reconnect to it later.
- Edit install — change any of the form fields you filled in. Suji re-renders the compose and redeploys.
- Rotate secrets — regenerate any
auto_generatesecret (e.g. an admin token).
App data
App state lives in a Docker named volume scoped to the install. On the VM you can find it under:- Container restarts
- App upgrades (to compatible versions)
- VM snapshot/restore
- Uninstalling the app — unless you choose keep data during uninstall, which preserves the volume
- Destroying the VM (a snapshot covers this if you took one)
Versions & upgrades
Each app pins a specific image tag (e.g.ghcr.io/openclaw/openclaw:2026.2.3). Two upgrade policies:
automatic— safe to upgrade in place; the dashboard offers a one-click upgrade when a new version lands in the catalog.breaking-changes-flagged— stateful apps with schema migrations or known breaking changes. The dashboard surfaces a diff and waits for your confirmation.
:latest. Cataloged versions are immutable in spirit but mutable in practice — the Suji team may push a re-built catalog entry (same version tag, updated compose) when a packaging-layer fix is needed (e.g. correct volume mount path). Existing installs pick up the fix on the next upgrade.
App-specific guides
Some apps need first-connect setup (token URL, device pairing, webhook config). The marketplace page for each app covers this. Start at Marketplace overview.Co-existing on a VM
Multiple apps on one VM share the VM’s CPU/memory/storage. Each install:- Has its own compose project (its own containers, network identity, volume).
- Has its own
*.suji.frURL if exposed. - Shows up independently in the Logs / Terminal / Files selectors.
Next
Browse the marketplace
What apps exist and what each one is for.
VM management
Operate the machine your apps run on.