Skip to main content
Keep FluffBuzz up to date. The fastest way to update. It detects your install type (npm or git), fetches the latest version, runs fluffbuzz doctor, and restarts the gateway.
fluffbuzz update
To switch channels or target a specific version:
fluffbuzz update --channel beta
fluffbuzz update --tag main
fluffbuzz update --dry-run   # preview without applying
--channel beta prefers beta, but the runtime falls back to stable/latest when the beta tag is missing or older than the latest stable release. Use --tag beta if you want the raw npm beta dist-tag for a one-off package update. See Development channels for channel semantics.

Alternative: re-run the installer

curl -fsSL https://fluffbuzz.com/install.sh | bash
Add --no-onboard to skip onboarding. For source installs, pass --install-method git --no-onboard.

Alternative: manual npm, pnpm, or bun

npm i -g fluffbuzz@latest
pnpm add -g fluffbuzz@latest
bun add -g fluffbuzz@latest

Root-owned global npm installs

Some Linux npm setups install global packages under root-owned directories such as /usr/lib/node_modules/fluffbuzz. FluffBuzz supports that layout: the installed package is treated as read-only at runtime, and bundled plugin runtime dependencies are staged into a writable runtime directory instead of mutating the package tree. For hardened systemd units, set a writable stage directory that is included in ReadWritePaths:
Environment=FLUFFBUZZ_PLUGIN_STAGE_DIR=/var/lib/fluffbuzz/plugin-runtime-deps
ReadWritePaths=/var/lib/fluffbuzz /home/fluffbuzz/.fluffbuzz /tmp
If FLUFFBUZZ_PLUGIN_STAGE_DIR is not set, FluffBuzz uses $STATE_DIRECTORY when systemd provides it, then falls back to ~/.fluffbuzz/plugin-runtime-deps.

Auto-updater

The auto-updater is off by default. Enable it in ~/.fluffbuzz/fluffbuzz.json:
{
  update: {
    channel: "stable",
    auto: {
      enabled: true,
      stableDelayHours: 6,
      stableJitterHours: 12,
      betaCheckIntervalHours: 1,
    },
  },
}
ChannelBehavior
stableWaits stableDelayHours, then applies with deterministic jitter across stableJitterHours (spread rollout).
betaChecks every betaCheckIntervalHours (default: hourly) and applies immediately.
devNo automatic apply. Use fluffbuzz update manually.
The gateway also logs an update hint on startup (disable with update.checkOnStart: false).

After updating

1
Run doctor
2
fluffbuzz doctor
3
Migrates config, audits DM policies, and checks gateway health. Details: Doctor
4
Restart the gateway
5
fluffbuzz gateway restart
6
Verify
7
fluffbuzz health

Rollback

Pin a version (npm)

npm i -g fluffbuzz@<version>
fluffbuzz doctor
fluffbuzz gateway restart
Tip: npm view fluffbuzz version shows the current published version.

Pin a commit (source)

git fetch origin
git checkout "$(git rev-list -n 1 --before=\"2026-01-01\" origin/main)"
pnpm install && pnpm build
fluffbuzz gateway restart
To return to latest: git checkout main && git pull.

If you are stuck

  • Run fluffbuzz doctor again and read the output carefully.
  • For fluffbuzz update --channel dev on source checkouts, the updater auto-bootstraps pnpm when needed. If you see a pnpm/corepack bootstrap error, install pnpm manually (or re-enable corepack) and rerun the update.
  • Check: Troubleshooting
  • Ask in Discord: https://discord.gg/buzz