shibumistack.dev

Operations.

List, update, remove, inspect, and uninstall server state safely.

Server operations

List apps#

›shis list
渋み shis (shibumi-server)
example.com (example-com)
Repository github:owner/example
Upstream 127.0.0.1:9100
Checkout /home/deploy/shibumi/example-com
Caddy managed
1 app registered
shis list 渋み shis (shibumi-server) info|example.com (example-com) answer|Repository github:owner/example answer|Upstream 127.0.0.1:9100 answer|Checkout /home/deploy/shibumi/example-com answer|Caddy managed outro|1 app registered

Shows the domain, app ID, repository, loopback upstream, checkout, and Caddy ownership.

Latest status#

›shis status example-com
渋み shis (shibumi-server)
55a26db5c43a succeeded
Stage shipped
https://example.com
shis status example-com 渋み shis (shibumi-server) success|55a26db5c43a succeeded info|Stage shipped outro|https://example.com

Machine-readable status:

shis status example-com --commit <full-sha> --json

Status stores the latest result for each app. History keeps up to 100 records.

Update#

shis update

Interactive commands check npm with a short timeout and suggest an update when a stable release exists. Registry failures do not block the command. Update installs that exact version, keeps machine config and secrets, moves the local release symlink, and reloads the service.

Installs from 0.10.6 or older live in ~/.local/bin only, which non-interactive ssh host shis ... sessions often miss. Since 0.10.8 setup symlinks shis into /usr/local/bin; shis update skips the sudo prompt and prints the fix instead. Run it once from your machine:

ssh -t your-server 'sudo ln -sf ~/.local/bin/shis /usr/local/bin/shis'

Remove app#

shis remove example.com

Removes Shibumi config, webhook secret, deployment status, deployment history, managed Caddy route, per-app environment store, and app containers. Preserves checkout, volumes, images, and GitHub webhook, and the outro names each of those so nothing preserved is a surprise later. --yes skips confirmation but never bypasses sudo. Removing the last app stops the service.

Repoint an app's repository#

shis set-repository example.com github:owner/new-repository

Moves the existing checkout to <checkout>.bak, clones the new repository in its place, and updates the registration. Caddy is untouched and the app is not re-registered. The Compose file path is re-detected in the new repository rather than reused: set-repository exists to swap in an unrelated repository, so assuming its layout matches the old one is not safe. If detection fails partway, the original checkout is restored from .bak and the registration is left as it was. The command refuses when <checkout>.bak already exists.

shis add makes the same offer when the checkout path exists but its Git origin points at a different repository: move it to .bak and clone fresh, instead of a dead-end error.

Uninstall#

shis uninstall

Asks for confirmation, then removes service, launchers, and installed releases. Preserves config, secrets, app checkouts, containers, Caddy routes, and GitHub settings. Automation can pass --yes.

shis uninstall --purge

Purge uses a stronger confirmation and also removes config and webhook secrets. Automation must pass --purge --yes explicitly.

Refresh Caddy buffering#

shis caddy-refresh <app-id>

After a server update, this command adds the current restart retry budget to an existing managed route. It preserves the route's other Caddy settings and fails closed when the managed directive cannot be identified safely.

Service logs#

journalctl --user -u shibumi-server -f

Service logs include stage starts and deployment result. Raw webhook payloads and secrets are not logged.

渋み Create a Shibumi project

Run this from the directory that will contain your project.

› bun create shibumi@latest my-app

or npm create shibumi@latest my-app