lift update

Update an installed marketplace tool to a newer version.

lift update

Update an installed marketplace tool to a newer version. Compares the current installed version with the latest from the registry (or a specified target version) and applies the appropriate update strategy.

Usage

lift update <tool>

Options

FlagDescriptionDefault
--versionTarget version to update toLatest from registry
--dry-runShow what would be done without executingfalse
--varOverride a tool variable (KEY=VALUE)

Update Types

lift update classifies the update based on semantic versioning and applies the appropriate strategy:

Update TypeExampleStrategy
Patch1.2.3 → 1.2.4Run tool's update hook (fallback: compose pull + recreate)
Minor1.2.3 → 1.3.0Run tool's update hook (fallback: compose pull + recreate)
Major1.2.3 → 2.0.0Run migration steps defined in tool manifest

Patch / Minor Updates

For patch and minor updates, lift update first checks if the tool defines an update hook. If found, it runs that hook (which may include custom migration steps, config updates, etc.). If no update hook is defined, it falls back to:

  1. docker compose pull — pulls the new image
  2. docker compose up -d --force-recreate — recreates containers with the new image
  3. Health check — waits up to 60 seconds for containers to become healthy

Major Updates

Major version bumps require a migration definition in the tool manifest. If no migration is defined for the version range, the update is blocked and an error is shown. Use --dry-run to check if a migration exists before running.

Examples

# Update to latest version
$ lift update postgresql
Update available: postgresql v15.2.0 v16.1.0 (minor update)
Running update hook for postgresql...
postgresql updated to v16.1.0

# Update to a specific version
$ lift update redis --version 7.4.0
Update available: redis v7.2.0 v7.4.0 (minor update)
No update hook defined, using default: compose pull + recreate
Pulling new images...
Recreating containers...
Waiting for containers...
redis updated to v7.4.0

# Dry-run — see what would happen without executing
$ lift update postgresql --dry-run
Update available: postgresql v15.2.0 v16.1.0 (minor update)
Dry-run mode no changes will be made

# Already up to date
$ lift update redis
redis is already at version 7.4.0

# Override a variable during update (e.g. change memory limit)
$ lift update postgresql --var MAX_CONNECTIONS=200

How It Works

  1. Reads current tool state from /etc/lift/tools/<tool>.json on the server
  2. Loads the tool manifest from the registry
  3. Compares current version with target version (semver classification)
  4. For minor/patch: runs update hook or compose pull + recreate
  5. For major: runs the migration steps defined in the manifest
  6. Saves updated state (new version, updatedAt) back to /etc/lift/tools/<tool>.json

Dashboard

You can also update marketplace tools from the OneLift dashboard under the tool's settings panel, which triggers lift update behind the scenes and streams progress in real time.