shelbi reload
View as markdownshelbi 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/projectmarker 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
taskandsubtaskworkflows: it writes whichever oftask.yamlandsubtask.yamlis missing and, whendefault_workflow:is unset or the legacydefault, sets it totask(✓ set default_workflow: task (migrated from the legacy `default`)). A custom default is left alone. - Writes
workflows/statuses.yamlif it's missing. - Self-heals all the shipped agents. User-customized
agents/*/instructions.mdfiles are preserved. Inagents/orchestrator/instructions.mdandzenmode.md, Shelbi upgrades only exact stockpr-create,ci-watch, andpr-mergecommand 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 asPolling-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. Seeshelbi config. - Re-aligns the workspace-settings template with the shipped default. To keep a
customized template, point
workspace_settings_templatein the project YAML at your own file.
Flags
| Flag | Type | Default | Description |
|---|---|---|---|
--root <PATH> | string | install-time default / $SHELBI_ROOT / ~/.shelbi | Override the Shelbi root directory. The flag wins over both the env var and the compile-time default. |
-p, --project <PROJECT> | string | env / cwd lookup | Project to operate on. |
-y, --yes | flag | off | Accepted (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 reloadFrom a source checkout, rebuild, install, and reload in one shot:
./scripts/install.sh && shelbi reloadA 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 shelbiSee also
- Install — where
scripts/install.shis documented;reloadis its TUI-side counterpart.