shelbi reload

View as markdown
shelbi reload [OPTIONS] [TARGET] [NAME]

shelbi reload is the "I just installed a new binary, pick it up" command. It asks the orchestrator for a handoff, tells every attached TUI to re-exec (the desktop app prompts for relaunch), restarts the hub daemon on the current binary, and replaces the project's orchestrator session. Edits to the orchestrator's instructions or the shared preamble land at the same time, without tearing down the dashboard.

The orchestrator's context survives the swap. Before its session is replaced, it's asked to write agents/orchestrator/handoff.md covering its in-flight state; the new instance ingests that file (then deletes it) and resumes mid-thought rather than cold. A missing or timed-out handoff degrades to a cold start, never fatal.

Worker sessions are left running, so a worker mid-task is never interrupted. Each keeps the binary it started with until that workspace is next relaunched. The daemon restart is hub-wide: it affects every open project's daemon-side work, not just this project.

Use it any time you upgrade Shelbi (brew upgrade shelbi, apt upgrade, or ./scripts/install.sh from a source checkout) and want the long-lived surfaces to start using the new binary.

Targets

[TARGET] [NAME] (chat, tasks, activity, sidebar, workspace <name>, all) are still accepted for compatibility, but there are no per-pane reloads any more. Any target other than all prints note: targeted pane reloads no longer apply on the session runtime; reloading the whole project and runs the full reload, including the daemon restart.

An unknown target, or a bare workspace with no name, errors with the valid set so you can self-correct.

What else reload repairs

Before restarting anything, reload also:

  • Sweeps any stray .shelbi/project marker files. Project resolution reverse-looks-up against the registered project YAMLs, so these markers are redundant.
  • Re-creates the Shelbi root's standard subdirectories if they're missing.
  • Migrates legacy projects to the task and subtask workflows: it writes whichever of task.yaml and subtask.yaml is missing and, when default_workflow: is unset or the legacy default, sets it to task (✓ set default_workflow: task (migrated from the legacy `default`)). A custom default is left alone.
  • Writes workflows/statuses.yaml if it's missing.
  • Self-heals all the shipped agents. User-customized agents/*/instructions.md files are preserved. In agents/orchestrator/instructions.md and zenmode.md, Shelbi upgrades only exact stock pr-create, ci-watch, and pr-merge command snippets to carry the probe's repository, base, and head identity, while leaving surrounding custom prose intact. Both unpinned and head-only stock forms are upgraded. It also appends any missing runner-critical orchestrator sections, such as Polling-only event drain, instead of overwriting the whole file.
  • Runs the config validate-and-upgrade pass: legacy forms that can be fixed mechanically are auto-healed (each disclosed on events.log), and findings that need judgment are handed to the new orchestrator. See shelbi config.
  • Re-aligns the workspace-settings template with the shipped default. To keep a customized template, point workspace_settings_template in the project YAML at your own file.

Flags

FlagTypeDefaultDescription
--root <PATH>stringinstall-time default / $SHELBI_ROOT / ~/.shelbiOverride the Shelbi root directory. The flag wins over both the env var and the compile-time default.
-p, --project <PROJECT>stringenv / cwd lookupProject to operate on.
-y, --yesflagoffAccepted (global flag); reload has no prompt, so it has no effect here.

Examples

Upgrade with Homebrew and pick up the new binary:

brew upgrade shelbi && shelbi reload

From a source checkout, rebuild, install, and reload in one shot:

./scripts/install.sh && shelbi reload

A reload prints a summary like this:

reload · myapp (session runtime)
  · handoff   <outcome>
  ✓ clients   signalled to re-exec
  ✓ daemon    restarted on the current binary
  ✓ orch      session replaced (workers left running)

If this root's daemon pid record doesn't verify, it fails with restarting the hub daemon: <reason> instead.

Reload a specific project from outside that project's directory:

shelbi reload --project shelbi

See also

  • Install — where scripts/install.sh is documented; reload is its TUI-side counterpart.