3.1 KiB
3.1 KiB
Software updates and lifecycle
Owner transparency
Updates are an operator concern. The salon owner does not participate in or see software updates under normal operation.
When
| Trigger | Default |
|---|---|
Scheduled host job (upgrade.sh) |
ON by default at install |
Manual ./scripts/upgrade.sh |
Always available to operator |
| Owner chat | Does not drive platform upgrades |
How
Host upgrade.sh is the parent orchestrator:
- Snapshot via
nemohermes <name> snapshot createwhen available - Record release pins; optional volume backup
- Fetch product release (git tag / image digests)
- Non-interactive only — no Hermes interactive update/setup wizards
- Compose pull/build/recreate preserving volumes
- Run migrations if state schema changed
- Re-apply policy via
openshell/nemohermes policy-* - Re-assert inference/aux via
nemohermes inference set/ config set from.env - Gateway restart if required by platform matrix
- Doctor; write operator-only upgrade journal
Suppress Hermes interactive update
| Risk | Mitigation |
|---|---|
Interactive hermes update |
Never invoked; versions pinned by product release |
| Startup config wizards | Config pre-written; non-interactive entrypoint |
| Agent-triggered host upgrade | No tools for that; no docker.sock for owner agent |
| Concurrent sealed config writes | Serialize; honor shields/busy; retry |
Update content vectors
| # | Vector | Upgrade action |
|---|---|---|
| 1 | This product git repo | Fetch/checkout release tag |
| 2 | Host scripts | Replace from release |
| 3 | Docs | Replace |
| 4 | Compose files | Replace + recreate |
| 5 | Product images (if published) | Pull digests |
| 6 | NemoClaw CLI pin | Host install to pin |
| 7 | OpenShell CLI/gateway pin | Host/bootstrap |
| 8 | Sandbox / Hermes agent image | Rebuild/recreate as required |
| 9–10 | Hermes runtime + NemoClaw integration | With image |
| 11 | Lumina skills | Sync into sandbox |
| 12 | Default identity templates | Merge; never clobber owner name/profile |
| 13–14 | Owner memory / Hermes session state | Persist + migrate |
| 15 | Managed config.yaml / placeholders | Regenerate via sealed host commands |
| 16 | OpenShell provider secrets | Persist |
| 17–18 | Policy base/overlays/presets | Merge + apply |
| 19 | Square remote MCP registration | Re-assert + health |
| 20 | QBO local MCP package pin | Upgrade process + restart |
| 21 | Vagaro webhook service | Replace |
| 22–23 | Channels + allowlists | Rebuild if matrix requires; persist allowlists |
| 24–25 | Inference main + aux slots | inference set / config from .env |
| 26 | Dashboard/API forwards | Re-bind |
| 27 | Fixtures | Replace; not live connections |
| 28 | Migrations | Run by version |
| 29 | Auto-update timer unit | Enabled by default |
| 30 | Host Docker Engine | Separate documented path |
Instrumentation
Operator-only events under state/upgrade/: upgrade.started|step|migration|policy|service|doctor|finished|failed.
Rollback
Previous pins + volumes; upgrade.sh --rollback; doctor.