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 node or 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:

  1. System Settings → Privacy & Security → Full Disk Access
  2. Click +, navigate to Applications → Utilities → Terminal (or iTerm, Warp, Ghostty — whichever you use)
  3. Toggle it ON
  4. 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.