# Daily-Driver Machines Applies to: `**/*` Craig runs exactly two daily-driver machines: **ratio** and **velox**. They are kept in sync, and an important change made on one usually needs to reach the other. ## The Rule When you make or notice a change that is **machine-level and important** — dotfiles, installed tooling, a synced repo's clone or timer setup, a global config, a systemd unit, a credential, a one-time bootstrap step — consider whether the *other* daily driver needs the same change, and flag it. Don't assume a change made on the current machine is live everywhere. Both machines are on the same tailnet, so the agent can usually reach the other one directly over tailscale ssh — it can sync, verify, or repair the other daily driver, not just flag the drift. Reach for that when a change needs to land on both boxes now. (This session repaired ratio's dotfiles and verified the fix over tailscale; the .emacs.d side has driven ratio the same way — `git fetch` + `reset --hard` and an `scp` across.) When tailscale is down or the other machine is offline, fall back to the original discipline: this is a prompt to think, and the point is to surface "the other daily driver may need this too" at the moment the change lands, so it doesn't silently drift to one box. ## How the sync actually happens The mechanism depends on what changed: - **A tracked repo** (rulesets, dotfiles, a project) — the other machine just needs a `git pull` (and, for rulesets, a `make install` to relink anything new). Most changes are this. - **Dotfiles** — ride the dotfiles repo; the other machine picks them up on its next stow/pull. - **A one-time setup** — a new repo clone, a new systemd timer, a freshly installed tool, a credential — has to be done by hand on each machine. These are the ones that silently drift, because nothing carries them automatically. When the change is the one-time kind, say so explicitly: name the manual step the other machine still needs. ## Reaching the other machine over tailscale `tailscale status` lists every node with its tailscale IP and online state. Connect by tailscale IP (e.g. `100.71.182.1`) or MagicDNS name (e.g. `ratio.tailf3bb8c.ts.net`) — both always resolve and connect. A bare hostname (`ssh ratio`) works only when MagicDNS is configured on the local machine; without it the bare name can fail to resolve, which makes the box look unreachable when it isn't. Prefer the IP or the full MagicDNS name when in doubt. The first connection from a new address fails host-key verification under `BatchMode`; add `-o StrictHostKeyChecking=accept-new` to clear it. ## Knowing which machine you're on `uname -n` returns the hostname (`ratio` or `velox`). Use it when a reminder is machine-specific ("on ratio, you still need to …") so the note is actionable rather than abstract — and after an ssh hop, to confirm which machine you landed on. ## Current open instance The org-roam knowledge-base clone — `git@cjennings.net:roam.git` — plus its `roam-sync` systemd timer is confirmed set up on **velox**. It still needs verifying (clone + timer) on **ratio**. This is the last piece before the "memory sync across machines" work closes (tracked in the rulesets `todo.org`). Clear this line once ratio is confirmed.