Updating
Updating
Section titled “Updating”BuilderForce Agents is moving fast (pre “1.0”). Treat updates like shipping infra: update → run checks → restart (or use builderforce update, which restarts) → verify.
Recommended: re-run the website installer (upgrade in place)
Section titled “Recommended: re-run the website installer (upgrade in place)”The preferred update path is to re-run the installer from the website. It
detects existing installs, upgrades in place, and runs builderforce doctor when
needed.
curl -fsSL https://builderforce.ai/install.sh | bashNotes:
-
Add
--no-onboardif you don’t want the onboarding wizard to run again. -
For source installs, use:
Terminal window curl -fsSL https://builderforce.ai/install.sh | bash -s -- --install-method git --no-onboardThe installer will
git pull --rebaseonly if the repo is clean. -
For global installs, the script uses
npm install -g builderforce@latestunder the hood. -
Legacy note:
builderforceremains available as a compatibility shim.
Before you update
Section titled “Before you update”- Know how you installed: global (npm/pnpm) vs from source (git clone).
- Know how your Gateway is running: foreground terminal vs supervised service (launchd/systemd).
- Snapshot your tailoring:
- Config:
~/.builderforce/builderforce.json - Credentials:
~/.builderforce/credentials/ - Workspace:
~/.builderforce/workspace
- Config:
Update (global install)
Section titled “Update (global install)”Global install (pick one):
npm i -g builderforce@latestpnpm add -g builderforce@latestWe do not recommend Bun for the Gateway runtime (WhatsApp/Telegram bugs).
To switch update channels (git + npm installs):
builderforce update --channel betabuilderforce update --channel devbuilderforce update --channel stableUse --tag <dist-tag|version> for a one-off install tag/version.
See Development channels for channel semantics and release notes.
Note: on npm installs, the gateway logs an update hint on startup (checks the current channel tag). Disable via update.checkOnStart: false.
Then:
builderforce doctorbuilderforce gateway restartbuilderforce healthNotes:
- If your Gateway runs as a service,
builderforce gateway restartis preferred over killing PIDs. - If you’re pinned to a specific version, see “Rollback / pinning” below.
Update (builderforce update)
Section titled “Update (builderforce update)”For source installs (git checkout), prefer:
builderforce updateIt runs a safe-ish update flow:
- Requires a clean worktree.
- Switches to the selected channel (tag or branch).
- Fetches + rebases against the configured upstream (dev channel).
- Installs deps, builds, builds the Control UI, and runs
builderforce doctor. - Restarts the gateway by default (use
--no-restartto skip).
If you installed via npm/pnpm (no git metadata), builderforce update will try to update via your package manager. If it can’t detect the install, use “Update (global install)” instead.
Update (Control UI / RPC)
Section titled “Update (Control UI / RPC)”The Control UI has Update & Restart (RPC: update.run). It:
- Runs the same source-update flow as
builderforce update(git checkout only). - Writes a restart sentinel with a structured report (stdout/stderr tail).
- Restarts the gateway and pings the last active session with the report.
If the rebase fails, the gateway aborts and restarts without applying the update.
Update (from source)
Section titled “Update (from source)”From the repo checkout:
Preferred:
builderforce updateManual (equivalent-ish):
git pullpnpm installpnpm buildpnpm ui:build # auto-installs UI deps on first runbuilderforce doctorbuilderforce healthNotes:
pnpm buildmatters when you run the packagedbuilderforcebinary (builderforce.mjs) or use Node to rundist/.- If you run from a repo checkout without a global install, use
pnpm builderforce ...for CLI commands. - If you run directly from TypeScript (
pnpm builderforce ...), a rebuild is usually unnecessary, but config migrations still apply → run doctor. - Switching between global and git installs is easy: install the other flavor, then run
builderforce doctorso the gateway service entrypoint is rewritten to the current install.
Always Run: builderforce doctor
Section titled “Always Run: builderforce doctor”Doctor is the “safe update” command. It’s intentionally boring: repair + migrate + warn.
Note: if you’re on a source install (git checkout), builderforce doctor will offer to run builderforce update first.
Typical things it does:
- Migrate deprecated config keys / legacy config file locations.
- Audit DM policies and warn on risky “open” settings.
- Check Gateway health and can offer to restart.
- Detect and migrate older gateway services (launchd/systemd; legacy schtasks) to current BuilderForce Agents services.
- On Linux, ensure systemd user lingering (so the Gateway survives logout).
Details: Doctor
Start / stop / restart the Gateway
Section titled “Start / stop / restart the Gateway”CLI (works regardless of OS):
builderforce gateway statusbuilderforce gateway stopbuilderforce gateway restartbuilderforce gateway --port 18789builderforce logs --followIf you’re supervised:
- macOS launchd (app-bundled LaunchAgent):
launchctl kickstart -k gui/$UID/bot.molt.gateway(usebot.molt.<profile>; legacycom.builderforce.*still works) - Linux systemd user service:
systemctl --user restart builderforce-gateway[-<profile>].service - Windows (WSL2):
systemctl --user restart builderforce-gateway[-<profile>].servicelaunchctl/systemctlonly work if the service is installed; otherwise runbuilderforce gateway install.
Runbook + exact service labels: Gateway runbook
Rollback / pinning (when something breaks)
Section titled “Rollback / pinning (when something breaks)”Pin (global install)
Section titled “Pin (global install)”Install a known-good version (replace <version> with the last working one):
npm i -g builderforce@<version>pnpm add -g builderforce@<version>Tip: to see the current published version, run npm view builderforce version.
Then restart + re-run doctor:
builderforce doctorbuilderforce gateway restartPin (source) by date
Section titled “Pin (source) by date”Pick a commit from a date (example: “state of main as of 2026-01-01”):
git fetch origingit checkout "$(git rev-list -n 1 --before=\"2026-01-01\" origin/main)"Then reinstall deps + restart:
pnpm installpnpm buildbuilderforce gateway restartIf you want to go back to latest later:
git checkout maingit pullIf you’re stuck
Section titled “If you’re stuck”- Run
builderforce doctoragain and read the output carefully (it often tells you the fix). - Check: Troubleshooting
- Ask in Discord: https://discord.gg/9gUsc2sNG6