Sentō runs on macOS, with one caveat: macOS doesn't have systemd or a persistent cron user session in the way Linux does, so the agent only runs while your Mac is on and you've launched it. For anything that needs 24/7 uptime, use a VPS or Docker instead.
macOS is the only host that supports the iMessage channel, since iMessage requires local access to the Messages database.
Prerequisites
- macOS 13 (Ventura) or later
- Node 20+ (
brew install nodeor nodejs.org) - A Claude subscription (Pro or Max) — authentication happens during setup
Install
npx sentoagent init
Same flow as the VPS install. The installer detects macOS and skips the Linux-specific cron persistence steps.
iMessage-specific setup
If you pick iMessage as the channel, you also need to grant Full Disk Access to your terminal:
- System Settings → Privacy & Security → Full Disk Access
- Click
+, navigate to Applications → Utilities → Terminal (or iTerm, Warp, Ghostty — whichever you use) - Toggle it ON
- Restart your terminal
Without this, Sentō can't read ~/Library/Messages/chat.db and the iMessage agent can't receive messages.
After install
The agent runs in a tmux session. To check on it:
tmux attach -t <agent-name>
Ctrl-b d to detach, sento status to check from outside the session.
Restarting after reboot
macOS doesn't auto-restart the agent. After a reboot, run:
sento start
Or script it yourself in ~/Library/LaunchAgents/ with a launchd plist if you want full autostart — not included by default.
Development use
macOS is the easiest environment for developing Sentō itself (contributing, testing plugin patches, etc.). Clone the repo and run node bin/sento.js init from your dev checkout instead of npx.