iMessage is unique among Sentō's channels. There's no bot, no token, no API. The integration reads and writes through the macOS Messages app's local SQLite database, which means the agent must run on a Mac.

Prerequisites

  • You're on the macOS install path
  • You're signed into iMessage in the Messages app
  • You're comfortable with the agent reading your Messages database — it has to, to receive messages

Grant Full Disk Access

macOS blocks access to the Messages database by default. You have to grant it manually.

  1. System Settings → Privacy & Security → Full Disk Access
  2. Click +, navigate to Applications → Utilities → Terminal (or iTerm, Warp, Ghostty, whichever terminal you use)
  3. Toggle it ON
  4. Restart your terminal for the permission to take effect

Without this, the iMessage plugin will throw SQLITE_CANTOPEN on the first message.

Run sento init

npx sentoagent init

Pick iMessage. No token to paste. The installer asks for the phone number or email tied to the iMessage account you want the agent to respond from and talk to.

How it works

  • Inbound: a background process polls ~/Library/Messages/chat.db every few seconds for new messages matching your configured identity.
  • Outbound: AppleScript tells the Messages app to send. Messages go through your actual iMessage account, so recipients see them from your number/email.

Limitations

  • Mac-only. Apple doesn't offer a public iMessage API. The Messages database is the only way in.
  • Best-effort compatibility. Apple can change the database schema in any macOS update. When that happens, Sentō may need a version bump.
  • Group chats have partial support depending on macOS version.
  • No read receipts / typing indicators — AppleScript's send API doesn't expose them.

If something breaks

  • First check: is Messages.app running and logged in?
  • Second: did you grant Full Disk Access to the terminal you launched Sentō from (not a different one)?
  • Third: sento logs -n 50 and look for SQLITE_* errors.

If Apple bumps the macOS version and the schema changes, open a GitHub issue with your macOS version and recent log output.