update
Check for and apply Sibyl updates. update upgrades the CLI, moves a running container runtime to the server image that matches it, and refreshes Claude/Codex skills and hooks. It only manages easy-install deployments installed via uv tool; when run from a source checkout it tells you to git pull and re-run moon run install-dev instead.
Called with no flags, update checks every component, shows a status panel, and prompts before applying changes. Scope it to one component with --cli, --containers, or --skills.
Synopsis
bash
sibyl update [options]Options
| Option | Short | Default | Description |
|---|---|---|---|
--check | -c | false | Only check for updates, don't apply |
--cli | false | Only update the CLI | |
--containers | false | Only upgrade the container runtime | |
--skills | false | Only update skills and hooks | |
--yes | -y | false | Skip the confirmation prompt |
When none of --cli, --containers, or --skills is given, all three are considered.
Examples
bash
# Check what's available without changing anything
sibyl update --check
# Apply all available updates without prompting
sibyl update --yes
# Update only the CLI
sibyl update --cli
# Bring a running container runtime in line with the installed CLI
sibyl update --containers
# Refresh only skills and hooks
sibyl update --skillsNotes
- The CLI version check compares the installed
sibyl-devagainst PyPI. - The container check finds each runtime by its compose file:
~/.sibyl/local/forsibyl upand~/.sibyl/docker/forsibyl docker, matching running containers on the compose file that created them. Its current version is the image tag of its running API container, so an interrupted upgrade that left the pin ahead still counts as behind. The pin only speaks for a runtime with nothing running; one that runs without its API shows "no API container running" and is brought back on the target, unless the pin names a newer release than the CLI. A runtime is behind when that tag is older than the one the CLI runs, which is the CLI version (orSIBYL_IMAGE_TAGwhen set). When the CLI is upgraded in the same run, containers follow the version that actually installed, which can differ from PyPI when the tool install is pinned. A newer or custom tag is left alone, and so is every runtime when the CLI is a dev, local, or post-release build, since no image is published for those. updatehands the upgrade to the runtime's own command, run through thesibylon PATH with the tag passed explicitly:sibyl docker upgrade --tag <tag>orsibyl local upgrade --tag <tag>. Both pull the new images before they restart anything, so a failed pull leaves the running server alone.updatethen re-reads the pin and the running API image and only reports success when both reached the target, so an API that exits right after the start counts as a failure. When the new images pulled but did not start, neither command rolls back, andupdatepoints at the runtime's logs.updatenever starts a stopped runtime. A stopped local runtime runs the new tag on its nextsibyl up; a stopped Docker deployment keeps its pin until you runsibyl docker upgrade --tag <tag>, which also starts it.- If the CLI upgrade fails, the container step is skipped so the server never lands ahead of the CLI. Re-run
sibyl update --containersonce the CLI is current. - A successful CLI upgrade re-installs the skill stub automatically, so guidance stays version-matched.
- In development mode (skills symlinked, or run from the Sibyl repo)
updateexits early with the source-update instructions; nothing is changed.
Related Commands
sibyl skill- Install or refresh the skill stub directlysibyl local- Manage the local Docker instancesibyl docker- Manage a self-hosted Docker deployment
