Skip to content
PABLO
Docs
Documentation home

Getting started

  • Quickstart
  • Installation
  • Update & uninstall

Guides

  • Managing tasks
  • Dashboard
  • Analytics
  • Backups & restore
  • Troubleshooting

Concepts

  • How it works
  • What PABLO may change
  • Task states
  • Agents
  • Runtimes & ADEs
  • Sync & rebase
  • Glossary

Reference

  • Commands
  • Configuration
  • Providers
  • Storage

Contributing

  • Development

Getting started

On this page
  • Update
  • Rolling back
  • Migrating from a clone install
  • Uninstall

Update & uninstall

Keep PABLO up to date with pablo update, move an older install made from a clone of the repository to the binary, or remove PABLO while keeping your data.

Update#

bash
pablo update           # or pablo system:update
pablo update --check   # only tell whether a newer release exists
pablo update 5b34e92   # install that release instead (an older one too)
pablo update --rollback  # go back to the binary the last update replaced

PABLO updates itself. It finds the release flagged latest (releases are named after the commit they were built from) and, when it is not the one you run:

  1. downloads its binary for your OS and processor with curl;
  2. checks it against the release's sha256sums.txt and runs it once (a failed check changes nothing);
  3. swaps it in place of the current binary;
  4. runs pablo system:install with the new binary, which picks up new agents and links and restarts the dashboard (--no-install skips this step). A dashboard you opted out of (--without-web) stays off.

If the background job is running (a sync or a poll), the update first waits up to 10 minutes for it to finish, and no new run starts until the update is done.

Your choices in ~/.pablo/config.yaml and your data in ~/.pablo/ are kept. Each version compiles its own cache in ~/.pablo/cache/container/<version>/; the install removes the caches of other versions.

Running the installer again (curl -fsSL https://getpablo.dev/installer | bash) does the same, and also takes a release with --version. The releases are listed on GitHub.

From a checkout: git pull, (cd app && composer install), then php app/bin/pablo system:install.

Rolling back#

Each update keeps the binary it replaces as ~/.local/bin/pablo.previous (only one: the next update replaces it). It sits next to pablo rather than in ~/.pablo/ because only the same directory is sure to be on the same filesystem, which the swap needs to be atomic; it is a hard link where the filesystem allows, so it takes no extra space while a service still runs it. pablo update --rollback runs it once (--version), swaps it back in place under the same lock as an update, runs its system:install (keeping --without-web) and reports PABLO rolled back: <current> → <previous>. The binary it replaces becomes the previous one in turn, so a second rollback undoes the first. --no-install skips the install, --check only tells whether a previous binary is kept. Without one (a fresh install, or one that was never updated), it says so: install an older release by name with pablo update <release> instead.

The rollback is automatic when the system:install that follows an update fails: the previous binary is restored, runs system:install in turn, and the update reports PABLO rolled back: <new> → <previous> and exits with an error. pablo system:uninstall removes pablo.previous along with pablo.

Migrating from a clone install#

Earlier versions were installed by cloning the repository (to ~/.local/share/pablo by default) and running bin/install.sh, which wrote a ~/.local/bin/pablo shim running php …/app/bin/pablo. Run the installer: it recognises that shim, replaces it with the binary, and pablo system:install takes over everything that install created. The links that pointed into the checkout now point into ~/.pablo/runtime/, the systemd units that were links into the checkout are written as files, and ~/.pablo/claude/agents.json moves to ~/.pablo/runtime/claude/. The checkout itself is never touched: delete it once everything works. Your config, projects and tasks in ~/.pablo/ carry over as they are.

Uninstall#

bash
pablo system:uninstall

It removes what the install created (the pablo command, the links under ~/.config/opencode/, ~/.claude/ and ~/.copilot/, including the links an old clone install made, the generated ~/.pablo/runtime/ and ~/.pablo/cache/container/, the PATH block, the shell completion, the scheduler and dashboard services) and keeps your data in ~/.pablo/. Delete ~/.pablo/ as well if you want a clean slate, or back it up first.

PreviousInstallation NextManaging tasks

Edit this page on GitHub

On this page

  • Update
  • Rolling back
  • Migrating from a clone install
  • Uninstall
PABLO

MIT licensed · made by Baptiste Leduc · GitHub · Docs