skip to content

macOS

xmsg supports aarch64-darwin and runs macOS CI on every push and pull request that changes code (.github/workflows/macos.yml).

  • Runtime directory: When XDG_RUNTIME_DIR is unset on macOS, xmsg resolves its 0700 runtime directory via getconf DARWIN_USER_TEMP_DIR.
  • Peer credentials: Unix sockets (http.sock, agent.sock, register.sock) verify peer UID via getpeereid and peer PID via LOCAL_PEEREPID, and process start times via proc_pidinfo.
  • Home Manager (launchd): Importing inputs.xmsg.homeManagerModules.xmsg on Darwin configures launchd.agents.xmsg to run xmsg 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 the PreInvocation hook (Arm B′) to trigger xmsg register agy. See Antigravity.
  • Codex on macOS: The writer-lock lease watch uses kqueue on an O_EVTONLY descriptor instead of inotify, descriptor paths come from fcntl(F_GETPATH), and the lock holder is read with proc_pidinfo. See Codex.

The macOS job builds and tests on Apple Silicon:

  • the xmsg package, whose build runs the full cargo test suite, including macOS-only tests for Claude Code start times and the Codex kqueue lease watch;
  • the shared service client checks;
  • the Codex hook check, which drives a real codex binary against xmsg;
  • the compatibility check against older xmsg releases.

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.

palette
dark
light
↑↓ select↵ apply esc close

Palettes adapted from Catppuccin (Macchiato) (MIT), Tokyo Night (Apache-2.0), gruvbox (MIT), Catppuccin (Latte) (MIT), Rosé Pine (Dawn) (MIT).