The dotfiles are seperated by branch for each machine
Clone this repo
git clone https://github.com/highmanphil/dotfiles.gitThen run the setup script
cd dotfiles
./setup.shTurn off select the previous input source in mac settings
- → System Settings → Keyboard → Shortcuts → Input Sources
- Uncheck “Select the previous input source” (or remap it to something else).
The remote Powerlevel10k color overlay lives in zsh/.p10k-mac-ssh.zsh:
- VPS sessions from the Mac use a red prompt and an explicit
VPScontext. - Home PC sessions from the Mac use a blue prompt and an explicit
HOMEcontext. - Local terminals on the Home PC keep the normal theme.
On a Linux remote that has this repository at ~/dotfiles, run:
~/dotfiles/scripts/setup-remote-zsh.shThe setup script links the shared portable zsh/.zshrc, so shell startup
optimizations stay consistent across the Mac, Home PC, and VPS.
On the Mac, include ssh/cmux-remotes.conf from ~/.ssh/config. The remote
sshd must accept the cosmetic marker with AcceptEnv P10K_MAC_SSH. cmux-managed
SSH workspaces also provide a fallback marker for Home PC sessions.
The cmux stow package keeps the pinned Home and VPS SSH workspaces usable
when their final tab is closed or cmux restarts. The
com.phil.cmux-remote-workspace-keeper LaunchAgent checks for an idle local
or disconnected placeholder after the remote transport is ready. It uses the
cmux-tui resource API to restore one remote terminal in the same pane, verifies
that projection is live, and only then removes the exact placeholder. It leaves
working remote tabs, other tabs and panes, busy local shells, and offline
hosts alone. Checks also run at startup; failed attempts are throttled. This requires
cmux's local automation socket mode and the macOS system Python 3.
Run python3 scripts/test-cmux-workspace-keeper.py for the regression checks.
The Mac, Home PC, and VPS share global Codex instructions and the fleet skill
from the agents package. From either the Mac or Home PC:
~/.codex/skills/fleet/scripts/fleetctl status all
~/.codex/skills/fleet/scripts/fleetctl exec vps -- uptimeRun ~/dotfiles/scripts/setup-fleet.sh after pulling changes. It links global
AGENTS.md, the fleet skill, shared zsh/P10k files, Mac cmux settings, and Home
PC limux settings. It also enables the Codex features listed in
agents/.codex/features.txt while preserving each host's other Codex settings.
It also links the global Claude CLAUDE.md, merges agents/.claude/settings.json
into each host's ~/.claude/settings.json (this needs jq), and links shared
skills into ~/.claude/skills/ without replacing skills already installed there.
It never creates backup copies; an unmanaged conflicting file is refused unless
--replace-managed is explicitly supplied.
Personal skill contents and their runtime manifest are kept out of this public
repository in the private highmanphil/fleet-skills repository, checked out at
~/.local/share/fleet-skills/. Its skills-manifest.txt is the allowlist: only
listed skills are linked into Claude, Codex, and ~/.agents, and every other
personal skill is pruned. Built-in and plugin skills are never managed here. The
non-sensitive manifest is mirrored at agents/skills-manifest.txt. Every machine
pulls and applies desired state at boot or login and every 15 minutes, so
machines that were offline converge after they return. Change the set from the
Mac or Home PC:
~/dotfiles/scripts/fleet-skills.sh adopt <name> # add a skill installed locally
~/dotfiles/scripts/fleet-skills.sh remove <name> # drop it from the fleet
~/dotfiles/scripts/fleet-skills.sh capture-and-publishTo keep a skill off one machine, add a <mac|home|vps> <skill> line to
agents/skills-excludes.txt and push; that host prunes it from every agent at
the next convergence.
In interactive zsh, the skills command wraps the official Skills CLI; installed
skills stay local until adopted.