Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
nousresearch avatar

Imessage

  • 320 installs
  • 226k repo stars
  • Updated August 5, 2026
  • nousresearch/hermes-agent

Let Hermes send and receive iMessage threads so users can trigger agent tasks, get status updates, and approve actions from Apple devices.

About

The imessage skill connects Hermes to Apple's iMessage so the agent can converse, notify, and collect approvals over text, turning phones and Macs into control surfaces for autonomous coding and ops workflows.

  • Bidirectional iMessage bridge
  • Mobile-friendly agent triggers
  • Async status and approvals
  • Apple ecosystem channel
  • Hands-free task handoff

Imessage by the numbers

  • 320 all-time installs (skills.sh)
  • +9 installs in the week ending Aug 4, 2026 (Skillselion tracking)
  • Ranked #2,234 of 16,546 AI & Agent Building skills by installs in the Skillselion catalog
  • Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/nousresearch/hermes-agent --skill imessage

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs320
repo stars226k
Last updatedAugust 5, 2026
Repositorynousresearch/hermes-agent

What it does

Let Hermes send and receive iMessage threads so users can trigger agent tasks, get status updates, and approve actions from Apple devices.

Files

SKILL.mdMarkdownGitHub ↗

iMessage

Use imsg to read and send iMessage/SMS via macOS Messages.app.

Prerequisites

  • macOS with Messages.app signed in
  • Install: brew install steipete/tap/imsg
  • Grant Full Disk Access for terminal (System Settings → Privacy → Full Disk Access)
  • Grant Automation permission for Messages.app when prompted

When to Use

  • User asks to send an iMessage or text message
  • Reading iMessage conversation history
  • Checking recent Messages.app chats
  • Sending to phone numbers or Apple IDs

When NOT to Use

  • Telegram/Discord/Slack/WhatsApp messages → use the appropriate gateway channel
  • Group chat management (adding/removing members) → not supported
  • Bulk/mass messaging → always confirm with user first

Quick Reference

List Chats

imsg chats --limit 10 --json

View History

# By chat ID
imsg history --chat-id 1 --limit 20 --json

# With attachments info
imsg history --chat-id 1 --limit 20 --attachments --json

Send Messages

# Text only
imsg send --to "+14155551212" --text "Hello!"

# With attachment
imsg send --to "+14155551212" --text "Check this out" --file /path/to/image.jpg

# Force iMessage or SMS
imsg send --to "+14155551212" --text "Hi" --service imessage
imsg send --to "+14155551212" --text "Hi" --service sms

Watch for New Messages

imsg watch --chat-id 1 --attachments

Service Options

  • --service imessage — Force iMessage (requires recipient has iMessage)
  • --service sms — Force SMS (green bubble)
  • --service auto — Let Messages.app decide (default)

Rules

1. Always confirm recipient and message content before sending 2. Never send to unknown numbers without explicit user approval 3. Verify file paths exist before attaching 4. Don't spam — rate-limit yourself

Example Workflow

User: "Text mom that I'll be late"

# 1. Find mom's chat
imsg chats --limit 20 --json | jq '.[] | select(.displayName | contains("Mom"))'

# 2. Confirm with user: "Found Mom at +1555123456. Send 'I'll be late' via iMessage?"

# 3. Send after confirmation
imsg send --to "+1555123456" --text "I'll be late"

Related skills

AI & Agent Buildingagentsautomation

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.