THREE-MACHINE PROTOCOL

MINI · MACBOOK AIR · OFFICE iMAC ← Mission Control

Glen works from three Macs: the mini in the home office, the MacBook Air when traveling, and the office iMac at the shop (shared with Natasha). All three pull from the same GitHub repos and run the same project workflow.

The four rules below keep work from getting lost when switching between them. They cover the same ground every time: what to do first, what to do last, what to always do, and what to never do.

Rule 1First thing you do when you sit down at any machine

  1. Open Terminal.
  2. Pull the latest from every repo you might touch today. These commands pull without changing your working directory, so you stay in your home folder until you deliberately go somewhere:
    git -C ~/projects-hub pull
    git -C ~/MasseyElectric pull
    (Add a line for any other project you're going to touch — e.g. git -C ~/rebates pull.)
  3. If starting a hub session, open Mission Control in Chrome. That's the daily anchor — it shows what's on your plate across all projects.
  4. Move into the project folder and open Claude Code. This is where the directory you want matters:
    cd ~/projects-hub && claude
    Replace projects-hub with whatever project you're working in. Whatever folder you cd into is where Claude operates — that's why we kept it separate from step 2.

The whole "first thing" sequence takes under a minute. Skipping it is how out-of-sync state happens.

Rule 2Last thing you do before walking away from any machine

For every project you touched today:

  1. Check status: git status
  2. Commit anything outstanding with a clear message describing what changed.
  3. Push: git push

For hub sessions specifically, additionally:

  • Make sure Mission Control reflects what changed today (the dashboard auto-deploys on push).
  • Make sure any hub memory notes are written.
  • Make sure the README "Upcoming" / "Active projects" lines are current.

Then close the Claude Code session and the Terminal tab cleanly. Don't leave a session running overnight on a machine you might not return to.

Rule 3Always

  • Always pull before you start. Always push when you stop.
  • Always one Claude session per project at a time. Don't open Claude in ~/MasseyElectric on the mini AND on the office iMac simultaneously — they'll race each other for commits and one will overwrite the other.
  • Always use each person's own GitHub account. Glen logs in as MasseyOffice. Nat logs in as nat554. GitHub commits track who did what — sharing accounts breaks attribution and accountability.
  • Always use the shared theoffice@masseyelectric.ca identity for clasp, Google Workspace, and Claude Code. That's the company's identity for Apps Script and Workspace work. All three machines use the same Anthropic and Google account for these.
  • Always use absolute paths. ~/projects-hub, not projects-hub. ~/MasseyElectric/scripts/..., not "the project-automation folder."
  • Always write commit messages someone else could understand. "Fix bug" is not enough. "Permits.js: action-recording handler now ignores setNote() races on note-bearing rows" is.

Rule 4Never

  • Never leave uncommitted changes on a machine you might not be back to tomorrow. If you start a feature on the mini and drive to the office, push first. Otherwise the office iMac doesn't see your work and you'll either redo it or get a conflict.
  • Never git push --force unless you have thought through exactly what you would overwrite. Force-push rewrites history on the remote and can erase someone else's work silently.
  • Never run two Claude Code sessions on the same repo from two machines at once. Pick one machine, finish, push, then open elsewhere.
  • Never trust hub PM memory across machines. Memory at ~/.claude/projects/.../memory/ is per-machine and does NOT sync via git. If a memory was written on the mini, opening hub later on the office iMac will not see it. Important context goes in committed repo files (Mission Control, README, handoff briefs).
  • Never edit .git/ directories by hand. Always go through git commands.
  • Never share Anthropic or GitHub credentials between people. Each human gets their own login. The theoffice@ shared account is the exception, and only for Google Workspace, clasp, and Claude Code (the shared office identity for shared office work).
  • Never run clasp push from a directory that isn't the right clasp project. It'll either do nothing useful or push to the wrong target.

When things go wrong

"I forgot to push from one machine and now I'm on another with old code." Walk back to the first machine. Push. Then git pull on the current machine.
"git pull says I have merge conflicts." Don't panic. Don't reset. Open the conflicted files. Find the <<<<<<< / ======= / >>>>>>> markers. Decide which version is correct (or merge them by hand). Save. Then git add <file> and git commit. If unsure, open a Claude session and ask before committing — losing work to a wrong resolution is worse than waiting for an answer.
"I see [ahead 3] or [behind 2] in git status." Ahead = you have local commits not on origin — git push. Behind = origin has commits you don't — git pull. Resolve before doing anything else.
"Claude Code says 'not logged in.'" Run claude /login. Sign in as theoffice@masseyelectric.ca on any of the three machines.
"clasp push says my token is expired." Run clasp login and sign back in as theoffice@masseyelectric.ca.
"Git says my identity is wrong on a commit." Check: git config --global --get user.name and git config --global --get user.email. On any of Glen's three Macs, name should be Glen Strange and email should be theoffice@masseyelectric.ca. Reset with git config --global user.name "..." and git config --global user.email "...".
"gh repo clone fails with 'Could not resolve to a Repository.'" The GitHub account you're logged in as doesn't have access to that repo. Run gh auth status to check. On all three of Glen's machines, gh should be logged in as MasseyOffice. If it's a different account, run gh auth logout and gh auth login --web.

Quick reference — what's where

Mini (home office) MacBook Air Office iMac
macOS user glenstrange Glen's user Nat (shared)
Home directory /Users/glenstrange Glen's /Users/<name> /Users/Nat
git identity Glen Strange / theoffice@masseyelectric.ca same same
GitHub auth (gh) MasseyOffice MasseyOffice MasseyOffice
Claude Code login theoffice@masseyelectric.ca theoffice@masseyelectric.ca theoffice@masseyelectric.ca
clasp login theoffice@masseyelectric.ca theoffice@masseyelectric.ca theoffice@masseyelectric.ca
rebates repo present (origin: MasseyOffice/rebates) clone with gh repo clone MasseyOffice/rebates clone with gh repo clone MasseyOffice/rebates

What syncs across all 3 machines vs. what doesn't

✓ Syncs via git

  • Every committed file in any project repo (projects-hub, MasseyElectric, WebsiteRedesign, SystemSecurity, BusinessDev, Brand, MasseyElectric-guide, rebates)
  • Mission Control source (dashboard/index.html)
  • This protocol guide (dashboard/three-machine-protocol.html)
  • Handoff briefs, reviewer notes, plans inside repos

✗ Does NOT sync

  • Hub PM memory files (~/.claude/projects/.../memory/)
  • Claude Code session history
  • Local terminal command history
  • Anything saved outside a git repo
  • .claude/settings.local.json (per-machine permissions)
  • Browser tabs and Chrome profile state
  • macOS Keychain (clasp + Claude auth tokens live here)

If you need something to be available on all three machines, commit it to a repo. Memory and shell history won't carry over.

When in doubt

Open a Claude Code session in ~/projects-hub and ask the hub PM. The hub PM session knows the current state of all three machines (from the most recent memory) and can walk you through the right next step.