pipx upgrade. px0 update wraps both, along with the parts that are easy to forget: store-schema migrations, restarting a running daemon, and a health check afterwards.
Check without changing anything
--check touches nothing on disk. It reads the published versions from PyPI and compares them against what you have installed.
The daemon also checks once a week during its nightly pass and records the answer, which is what px0 doctor reports. That way neither command hits the network on every invocation, and doctor stays usable offline:
Update
1
Resolves the newest version on your channel
stable by default. See channels below.2
Upgrades with the mechanism you installed with
It detects pipx or pip and uses that one -
pipx upgrade px0, or pip install --upgrade px0.3
Applies pending store-schema migrations
Each is recorded as a change in the store’s own history. A migration that fails stops the update there, with the store left at the last schema it fully reached. It never half-migrates.
4
Appends the result to update history
In
.state/update-history.json. Nothing is written unless the install itself succeeded, so a failed update leaves no misleading breadcrumb.5
Restarts the daemon if it was running
So the new binary is the one doing the scheduling.
6
Runs a quick doctor pass
And prints the summary, so you find out immediately if something needs attention.
Roll back
update-history.json, not guessed - and pops that entry, so repeated rollbacks walk back through your history one step at a time. With no history it says so and exits rather than doing something arbitrary.
One caveat it prints when it applies: schema migrations are forward-only. If the update you are undoing migrated the store, the older binary is now looking at a newer store schema. px0 doctor is what tells you:
Channels
Two related settings:
Uninstall
KeepAlive - or a systemd service - would otherwise keep trying to run a px0 that is no longer installed. launchd plists and systemd user units are removed for you; a cron entry cannot be edited safely on your behalf, so px0 tells you it is still there.
By default, uninstall never deletes the store itself. ~/.px0 is a plain directory of Markdown and TOML - your guidelines, your library, your run history - so removing it is your call, and it is yours to back up or move somewhere else first:
--yes to skip interactive confirmation:
Pinning a version
The installer takes a version, which is the cleanest way to hold a machine at a known release:PX0_CHANNEL=beta installs pre-releases, and PX0_PREFIX chooses where the binary lands. See Installation.
