Skip to content

Move the lab's brain to ultra - #105

Merged
addisdev merged 2 commits into
developfrom
feat/brain-on-ultra
Oct 21, 2026
Merged

addisdev merged 2 commits into
developfrom
feat/brain-on-ultra

Conversation

@addisdev

Copy link
Copy Markdown
Owner

The reference lab's brain moved from fleet-host to ultra today (owner request, WB-509 option C). This brings the repo in line with what is now deployed.

What changed

  • collector/deploy/lan-forward.py and com.addisdev.fleet-lan-forward.plist are new. ultra's firewall is in stealth mode and drops LAN connections to Homebrew node, even though socketfilterfw reports node as permitted. /usr/bin/python3 gets through. So the brain binds 127.0.0.1:8789, and this standard-library byte pipe serves 192.168.1.111:8789. I tested it from the laptop and fleet-host with a 50 MB upload, a 30 MB download and a delayed response.
  • The night manifests (deploy/explore/night/*.json) now export FLEET_URL=http://127.0.0.1:8789 and drop --tunnel runner-ts:…, because runner-host is retired. com.addisdev.fleet-tunnel-ultra.plist is removed. The ultra executor plist points at the local brain.
  • com.addisdev.fleet-tunnel (workstation) now goes to ultra, keeping the same 18788 and reverse-8790 ports. It tries the LAN alias ultra first and falls back to the tailnet alias ultra-ts, which restores the away-from-home route.
  • backup-brain.sh has two new settings:
    • FLEET_BACKUP_OUTBOX: hands each backup, gzipped, to an outbox sealer. On ultra that seals fleet-brain-<stamp>.tar.age, and fleet-host's existing nightly pull takes it off-site.
    • FLEET_BACKUP_NO_DB=1: on fleet-host, which keeps the suites but no longer runs a brain, it backs up flows, web-specs and config instead of failing.
  • Docs: docs/lab.md (machines, loopback rule, backups, runbook, the orphaned-collector trap), docs/deploy/explore-on-ultra.md, docs/deploy/networking.md, and a CHANGELOG entry.

What I ran

  • On the live deployment: the database moved with sqlite3 .backup, and integrity and per-table counts match on both sides. All 1,096 artifacts match their names by sha256, and the file lists and sizes match.
  • A synthetic benchmark passed in 19 s on fleet-host's agent through ultra. fleet_devices and fleet_findings since=24h work through the MCP server.
  • explore-night.ts --dry-run against the local brain. backup-brain.sh run under launchd on both hosts. The laptop pull from both hosts.
  • sh -n and shellcheck on backup-brain.sh, py_compile on the forwarder, plutil -lint on the plists.

Nothing here touches GitHub CI wiring: Fleet Runner stays disconnected from CI.

🤖 Generated with Claude Code

addisdev and others added 2 commits October 21, 2026 13:27
The brain answers on ultra's loopback (127.0.0.1:8789) and, for the shelf,
through lan-forward.py under /usr/bin/python3: ultra's stealth firewall drops
LAN connections to Homebrew node. Night manifests use the local brain with no
tunnel; the ultra tunnel plist is gone; the workstation tunnel goes to ultra
(LAN, then tailnet). backup-brain.sh gains FLEET_BACKUP_OUTBOX and
FLEET_BACKUP_NO_DB. Docs follow.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@addisdev
addisdev merged commit 76cd2a1 into develop Oct 21, 2026
24 checks passed
@addisdev
addisdev deleted the feat/brain-on-ultra branch October 21, 2026 17:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant