Skip to content

pi/hitl: Mac mini iOS HITL bench (catalog + nix-darwin module) - #181

Closed
fughilli wants to merge 1 commit into
mainfrom
claude/mac-ios-units
Closed

fughilli wants to merge 1 commit into
mainfrom
claude/mac-ios-units

Conversation

@fughilli

Copy link
Copy Markdown
Owner

Phase D of the reservable phone-HITL fleet: bring a Mac mini online as an iOS bench alongside the Linux rigs, using the darwin runner (hitl-reserve#7). Depends on #7 landing + its pin bump.

What's here

  • reserve/catalog-mac.json — two units, each with its own C6: ios-phone (real iPhone + c6-c) and ios-sim (c6-d + Simulator, pin_only). No devices mounts — the darwin runner has no container, so the iPhone/Simulator/C6 are reached host-native; hardware is selected by env markers (HITL_IOS_UDID, HITL_ESP_PORT). Validated against the real catalog Go parser (2 units, correct caps/components).
  • nix/hitl-darwin.nix — the nix-darwin module: a launchd daemon (hitl-reserved --runner darwin), the key-scoped shared hitl SSH user, the sshd drop-in (AuthorizedKeysFile + PermitUserEnvironment the runner needs), Tailscale, and the iOS toolbox (esptool/python/node/pnpm/cocoapods). Additive — a Mac is hand-managed/multi-tenant, no reprovision. Parses clean (nix-instantiate --parse).
  • reserve/README.md — a "Mac mini — the iOS bench" section with the full deploy handoff.

Verification boundary

This module can't be built/evaluated from the Linux container (no darwin stdenv / nix-darwin module set), so it's authored for darwin-rebuild switch on the Mac. The flake darwinConfigurations + nix-darwin input are documented, not committed, so an un-evaluatable darwin output can't break the Linux rig deploy eval. What was verifiable here is: catalog parses against the real Go parser, nix module parses, JSON/nix/md lint clean.

Deploy (on the Mac — see README)

  1. After Handle worktrees with claude-container #7 merges, bump the two hitl-reserve pins (flake input + @hitl_reserve git_override) to its SHA.
  2. Add the nix-darwin input + darwinConfigurations.mac-mini to flake.nix (block in the README).
  3. One-time Mac state: Xcode CLT + provisioning, attach the iPhone + both C6s, tailscale up.
  4. Fill the placeholder HITL_IOS_UDID + HITL_ESP_PORTs in the catalog.
  5. darwin-rebuild switch --flake .#mac-mini.

Then reserve --unit ios-phone / --unit ios-sim from the tailnet and run the journey suite — the normal remote HITL loop.

🤖 Generated with Claude Code

Phase D of the reservable phone-HITL fleet: bring the Mac mini online as an iOS
bench alongside the Linux rigs, driven by the darwin runner (hitl-reserve#7).

- reserve/catalog-mac.json — two units, each with its own C6: `ios-phone` (a real
  iPhone + c6-c; build/install the Capacitor app via devicectl, provision the C6
  over real CoreBluetooth) and `ios-sim` (c6-d + the Simulator via simctl,
  pin_only). No `devices` mounts — the darwin runner has no container, so the
  iPhone/Simulator/C6 are reached host-native; hardware is selected by env
  markers (HITL_IOS_UDID, HITL_ESP_PORT). Validated against the real catalog
  parser (2 units, correct caps/components).
- nix/hitl-darwin.nix — the nix-darwin module: a launchd daemon running
  `hitl-reserved --runner darwin`, the shared key-scoped `hitl` SSH user, the
  sshd drop-in (AuthorizedKeysFile + PermitUserEnvironment the runner needs),
  Tailscale, and the iOS toolbox (esptool/python/node/pnpm/cocoapods). Additive
  (a Mac is hand-managed/multi-tenant — no reprovision). Parses clean.
- reserve/README.md — a "Mac mini — the iOS bench" section with the deploy
  handoff: the flake darwinConfigurations + nix-darwin input to add, the two
  git_override pins to bump once hitl-reserve#7 lands, the one-time Mac state
  (Xcode CLT, iPhone/C6 attach), and the placeholders to fill.

This module can't be built/evaluated from the Linux container (no darwin stdenv
/ nix-darwin), so it's authored for `darwin-rebuild switch` ON THE MAC; the flake
wiring is documented rather than committed so it can't break the Linux rig eval.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@github-actions

github-actions Bot commented Sep 21, 2026 •

Copy link
Copy Markdown
Contributor
PR Preview Action v1.8.1
Preview removed because the pull request was closed.
2026-09-25 04:04 UTC

@fughilli

Copy link
Copy Markdown
Owner Author

Superseded by #189 (merged), which rebuilt this onto current main with the sshd PermitUserEnvironment lockout fix, the corrected flake.lock re-lock, headless ASC-key signing wiring, and the filled catalog. Closing.

@fughilli fughilli closed this Sep 25, 2026

This branch had an error being deployed

1 failed deployment
HITL — 2fac0ade Deployed Sep 21, 2026 by fughilli via hitl_tests #522
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