Apple PIM

OpenClaw plugin for macOS Calendar, Reminders, Contacts, and Mail. macOS-only; depends on four native Swift CLIs (calendar-cli, reminder-cli, contacts-cli, mail-cli) you build locally from source via ./setup.sh. The registry does not download or install binaries.

Install

openclaw plugins install clawhub:apple-pim-cli

Apple PIM

OpenClaw plugin for native macOS Calendar, Reminders, Contacts, and Mail. It wraps four Swift CLIs (calendar-cli, reminder-cli, contacts-cli, mail-cli) built locally from EventKit, Contacts, and JXA. Once you approve the matching macOS permission prompts, the agent gets read/write access to all four domains, including mail send and delete.

macOS only. The registry downloads no binaries. You build the CLIs from source via ./setup.sh.

Install

  1. Install the plugin from ClawHub (or /plugin install apple-pim@apple-pim in Claude Code).

  2. Build the Swift CLIs from the plugin source:

    ./setup.sh --install
    echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrc
    source ~/.zshrc
    
  3. Approve the macOS TCC and Automation prompts the first time each domain is used. For Mail, Mail.app must be running (it is not launched automatically).

Requires macOS 13+ and Swift 5.9+ (Xcode 15+).

Tools

ToolDomain
apple_pim_calendarList, create, read, update, delete events; search by date/title; attendees; recurrence; batch create
apple_pim_reminderList lists, create, complete, update, delete reminders; search; recurrence; batch create
apple_pim_contactList groups, create, read, update, delete contacts; search by name/email/phone; birthdays
apple_pim_mailList accounts/mailboxes, read, search, send, reply, move, delete; flags; attachments; verify sender auth
apple_pim_systemPermission status and diagnostics

Configuration

KeyDescription
binDirDirectory containing the four CLIs. Auto-detected from PATH if unset (typically ~/.local/bin).
profileConfig profile name for filtering calendars / lists / contacts. See ~/.config/apple-pim/profiles/.
configDirOverride the PIM config root (default ~/.config/apple-pim/).
mailAttachmentsConfigPath to the mail attachment policy JSON.

Mail attachment safety

Mail send/reply attachments are default-denied. To allow them, point mailAttachmentsConfig at a JSON file that opts in:

{ "enabled": true, "allowedRoots": ["~/Downloads"] }

Even when enabled, sensitive paths (~/.ssh, ~/.aws, etc.) and files like id_rsa, *.pem, and *secret* are always refused.

Notes

  • Per-call isolation: profile and configDir can be overridden per call for multi-agent workspace isolation.
  • Per-domain control: each domain (calendar, reminder, contact, mail) can be enabled or disabled independently.
  • Same Swift CLIs power both the Claude Code plugin (via MCP) and this OpenClaw plugin (via native tool registration).

Full docs: github.com/omarshahine/Apple-PIM-Agent-Plugin

License

MIT (c) Omar Shahine