Repository navigation
feat(devbox): boot a Namespace macOS Devbox from the dotfiles - #13
Open
pattobrien wants to merge 15 commits into
Open
pattobrien wants to merge 15 commits into
pattobrien wants to merge 15 commits into
Conversation
…alls, TCC grants and wake.
…k, stop and seed Doppler.
…p the 1Password seeding.
…v templates block exec and shims.
… it has had time to appear.
… and drop the blind Allow click.
…nstall xcodegen, clone the devbox branch Claude-Session: https://claude.ai/code/session_01V1TYMrYuMgxW1upzD57oFX
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
Coding agents test Tinycast by driving a Mac, and today that Mac is Patt's. A Namespace macOS Devbox can take that job, but only its data volume survives a stop and start, so the box needs a boot that rebuilds the dotfiles machine onto that volume every time. This adds that boot as a dotbot profile plus a host CLI.
What changed
install.devbox.conf.yamlandbrew/devbox/Brewfilegive the Devbox its own profile, built from the essentials, macos and mise profiles without GUI casks.scripts/devbox/boot.tsruns on the guest in two phases,prepare(volume links, shell env, base install, Homebrew, Xcode, TCC grants, the replayd screen-capture approval for/opt/namespace/vmguest, no sleep) andinstall(./install devbox), so secrets can land between them.tools/scripts/src/devbox-mac.tsis the host CLI:create,up,shot,click,down.upboots, sharesghauth, mints a seven-day Doppler token on thesa-agent-builderservice account through the Doppler SDK, configures it on the guest, and screenshots. No 1Password involvement.Scope
up; several can run in parallel on the Team plan.[env]templates readplatform/prod, which does not exist in Doppler yet (the configs aredev,stg,prd,pr, and the keys live in theinfra-*projects), somise envexits 1 on the Devbox and on this Mac until the Doppler refactor lands.mise installand the shims still work on mise 2026.10.10.Tradeoffs
The macOS 15+ "bypass the system private window picker" dialog is replayd's, not TCC's, so
prepareseeds replayd'sScreenCaptureApprovals.plistfor vmguest the way GitHub's macOS 27 runner image does for its agent. Namespace documents no option for this.Homebrew stays in the image's
/opt/homebrew(17 GB, 182 formulae) and the devbox Brewfile reinstalls per boot from a cache on the volume. Relocating the prefix onto the volume would cost 17 GB of paid storage for a 13 s saving.The Doppler token is set through the binary's mise install path rather than
mise execor the shim, because mise renders the[env]templates, which calldoppler, before either runs.The token is minted per boot with a seven-day expiry and the previous
devbox-<name>token is revoked first, so nothing secret is stored on the host or in a vault.Blast Radius
Only new files plus one new symlink line in
install.conf.yamland a quoting fix in.config/pnpm/config.yamlthatvp checkalready demanded. Nothing on a non-Devbox machine runs the new code.Verification
devbox-mac up patt-mac-probefrom a stopped Devbox: 60 s to a clean desktop screenshot with no consent dialog and no click, all phases green on a warm re-run (15 s, idempotent).doppler mereports thesa-agent-builderservice account and readsplatform/prdandinfra-vercel/prd, Tinycast Dev builds with Xcode 26.6 and launches with its Accessibility row already in TCC, fullmise installof the global config completed in 97 s (17 GB on the volume).vp checkis clean on every commit.