feat(fleet): add local canary CLI #563

Merged
jason.woltje merged 2 commits from feat/fleet-cli-local-canary into main 2026-06-20 17:49:02 +00:00
Owner

Summary

Implements the local durable tmux fleet canary surface for issue #562:

  • adds mosaic fleet init/install/install-systemd/start/stop/restart/status/verify
  • adds mosaic agent roster/status/send/reset/tail
  • adds product-owned roster schema/examples with isolated mosaic-factory tmux socket defaults
  • installs user systemd units/helper scripts and per-agent env files for local canary use
  • documents local install, verification, and rollback path
  • keeps local roster site-owned under HOME/.config/mosaic/fleet/roster.yaml

Guardrails

  • Not production deployment.
  • Default tmux server remains out of scope; fleet targets named socket mosaic-factory.
  • mosaic fleet init --write refuses to overwrite existing roster unless --force is explicit.
  • install-systemd rejects non-default Mosaic home because checked-in user units use percent-h/.config/mosaic paths.
  • Fleet stop attempts all agent stops and holder stop before reporting aggregated failures.

Local verification

  • pnpm --filter @mosaicstack/mosaic test -- src/commands/fleet.spec.ts src/cli-smoke.spec.ts — 45 passing
  • pnpm typecheck — pass
  • pnpm lint — pass
  • push hooks also ran typecheck, lint, and format check successfully
  • Codex code review final pass — approve, 0 findings

Follow-up after merge

After CI is green and this PR is merged, perform one controlled canary install on this server and capture evidence:

  1. mosaic fleet init --profile minimal --write
  2. mosaic fleet install-systemd
  3. systemctl --user daemon-reload
  4. mosaic fleet start
  5. mosaic fleet verify
  6. tmux -L mosaic-factory ls
  7. tmux ls

Closes #562

Summary Implements the local durable tmux fleet canary surface for issue #562: - adds mosaic fleet init/install/install-systemd/start/stop/restart/status/verify - adds mosaic agent roster/status/send/reset/tail - adds product-owned roster schema/examples with isolated mosaic-factory tmux socket defaults - installs user systemd units/helper scripts and per-agent env files for local canary use - documents local install, verification, and rollback path - keeps local roster site-owned under HOME/.config/mosaic/fleet/roster.yaml Guardrails - Not production deployment. - Default tmux server remains out of scope; fleet targets named socket mosaic-factory. - mosaic fleet init --write refuses to overwrite existing roster unless --force is explicit. - install-systemd rejects non-default Mosaic home because checked-in user units use percent-h/.config/mosaic paths. - Fleet stop attempts all agent stops and holder stop before reporting aggregated failures. Local verification - pnpm --filter @mosaicstack/mosaic test -- src/commands/fleet.spec.ts src/cli-smoke.spec.ts — 45 passing - pnpm typecheck — pass - pnpm lint — pass - push hooks also ran typecheck, lint, and format check successfully - Codex code review final pass — approve, 0 findings Follow-up after merge After CI is green and this PR is merged, perform one controlled canary install on this server and capture evidence: 1. mosaic fleet init --profile minimal --write 2. mosaic fleet install-systemd 3. systemctl --user daemon-reload 4. mosaic fleet start 5. mosaic fleet verify 6. tmux -L mosaic-factory ls 7. tmux ls Closes #562
jason.woltje added 2 commits 2026-06-20 17:27:39 +00:00
feat(fleet): add local canary CLI
All checks were successful
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/pr/ci Pipeline was successful
0c95aa3e6e
jason.woltje merged commit 6dfd78f643 into main 2026-06-20 17:49:02 +00:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: mosaicstack/stack#563