MacBook Setup
Secondary dev environment. Travel + portfolio commits + cinematic content production. Not the primary ROOT machine.
The MacBook is the travel and content machine. ROOT phase work happens on the ThinkPad (Linux-native, closer to bastion + cluster envs); the MacBook exists for the moments where macOS is materially better — battery on the road, Final Cut for cinematic demos, the polished surface for portfolio commits to abukix.dev.
It does not need to land pre-Phase-1. The setup below can wait until Year 2 Phase 9, when terralabs ships its first demo video, or even later if travel doesn’t intervene. Before that, the ThinkPad covers everything — see thinkpad-setup.md for the daily driver.
The configuration here is deliberately thin. It’s a user device assumed to already exist; this doc just adds the homelab-relevant tooling on top.
Why a Mac at all
The ThinkPad is the daily driver for ROOT (Linux-native; closer to bastion + cluster envs). The MacBook is for:
- Travel — battery, build quality, instant sleep/wake
- Cinematic content — Final Cut Pro / Screen Studio / Loom for the demo videos that ship with
terralabs(Y2),basecamp(Y3),mlshipv2 (Y5) - Portfolio website —
abukix.devstatic portfolio + blog tinkering - Mobile/desktop testing — anything Apple-platform-specific
Not for ROOT phase work. Phase work happens on the ThinkPad or directly on bastion.
OS
macOS (latest stable). Stays on the OS the laptop ships with; not a deep customization machine.
Essential setup
# Homebrew/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# Dev essentialsbrew install \ git curl wget jq tree htop tmux \ awscli google-cloud-sdk \ kubectl helm argocd \ go uv ruff \ tailscale
# Containersbrew install --cask docker # Docker Desktop ORbrew install --cask orbstack # OrbStack — lighter, faster on MacOn Apple Silicon, OrbStack is materially faster than Docker Desktop for the kind of one-off image builds the MacBook will do (portfolio site, demo recordings). Pick one — running both wastes RAM.
SSH config
Same as ThinkPad’s ~/.ssh/config. Same key (or a separate key for the MacBook + add to bastion’s authorized_keys).
Host bastion HostName 192.168.0.10 User ubuntu IdentityFile ~/.ssh/id_ed25519_macbookA separate key per device is the safer default — losing the MacBook means revoking one key from bastion’s authorized_keys, not rotating the ThinkPad’s identity too.
Tailscale
brew install tailscalesudo tailscale upConnects to the same tailnet as ThinkPad + bastion + Proxmox. Once up, ssh bastion from a hotel WiFi works exactly the same as from home — that’s the point.
Content production tools
For the cinematic content / demo videos:
# Screen recordingbrew install --cask screen-studio # paid; the cinematic option# ORbrew install --cask loom # free tier; good enough for first demos
# Editingbrew install --cask final-cut-pro # paid, native# ORbrew install --cask davinci-resolve # free tier; cross-platform
# Diagramsbrew install --cask excalidraw # whiteboard-style; for blog postsbrew install --cask omnigraffle # paid; architecture diagrams
# Markdown / writingbrew install --cask obsidian # for note-takingbrew install --cask typora # markdown editor with live previewThese land when you start producing content — typically Year 2 (after terralabs ships) or Year 3 (after basecamp goes public). Don’t pre-buy paid tools.
When the MacBook actually gets used
Pre-Y2: rare. ROOT runs on the ThinkPad.Y2 P9: `terralabs` launch — first demo video (Loom, free tier)Y3 P19: `basecamp` launch — bigger demo (Screen Studio worth the paid tier)Y4-Y5: content production for `notes-rag`, `aiops`, mlship demosY5 P29: Abukix Studio launch — full demo videoY5 P30: mlship v2 capstone — the Show HN demo videoIf you’re pre-Year-2 and the MacBook is sitting idle, that’s the expected state — it’s a content machine, not a curriculum machine. See the Year 1 index for what is active during the foundations year.
Cross-references
- thinkpad-setup.md — the daily driver
- proxmox.md — bastion this machine SSHes into
brand/content-playbook.md— what to record, when, why