macOS
xmsg supports aarch64-darwin and runs macOS CI on every push and pull request that changes
code (.github/workflows/macos.yml).
Platform specifics on Darwin
Section titled “Platform specifics on Darwin”- Runtime directory: When
XDG_RUNTIME_DIRis unset on macOS,xmsgresolves its0700runtime directory viagetconf DARWIN_USER_TEMP_DIR. - Peer credentials: Unix sockets (
http.sock,agent.sock,register.sock) verify peer UID viagetpeereidand peer PID viaLOCAL_PEEREPID, and process start times viaproc_pidinfo. - Home Manager (
launchd): Importinginputs.xmsg.homeManagerModules.xmsgon Darwin configureslaunchd.agents.xmsgto runxmsg serve. See NixOS & Home Manager. - Antigravity on macOS: Because XNU does not expose
flock(2)owner PIDs to unprivileged processes, macOS verifies--agy-exe(proc_pidpath) and open descriptor vnode(vst_dev, vst_ino)and uses thePreInvocationhook (Arm B′) to triggerxmsg register agy. See Antigravity. - Codex on macOS: The writer-lock lease watch uses
kqueueon anO_EVTONLYdescriptor instead ofinotify, descriptor paths come fromfcntl(F_GETPATH), and the lock holder is read withproc_pidinfo. See Codex.
What macOS CI exercises
Section titled “What macOS CI exercises”The macOS job builds and tests on Apple Silicon:
- the
xmsgpackage, whose build runs the fullcargo testsuite, including macOS-only tests for Claude Code start times and the Codexkqueuelease watch; - the shared service client checks;
- the Codex hook check, which drives a real
codexbinary againstxmsg; - the compatibility check against older
xmsgreleases.
The Pi, opencode, Hermes and Antigravity hook checks run on Linux only. On macOS, the daemon side of those integrations runs in the Rust test suite, but no check drives the real harness.
Palettes adapted from Catppuccin (Macchiato) (MIT), Tokyo Night (Apache-2.0), gruvbox (MIT), Catppuccin (Latte) (MIT), Rosé Pine (Dawn) (MIT).