About apple-bridges
Apple Bridges is a set of Swift CLI tools that lets Claude Code work with Apple apps and tmux on macOS. Separate read and write tools are available through apple-bridges-mcp, with destructive deletes using a dry-run unless forced.
Key features
- 01Manage Reminders and Calendar
- 02Search and manage Contacts and Notes
- 03Read and send Mail and Messages
- 04Read and control tmux sessions
- 05Separate MCP read and write tools
Use cases
- 01Add or review reminders and calendar events
- 02Search contacts or edit notes
- 03Read inboxes or send messages
- 04Inspect tmux panes or send keystrokes
MCP support
Through apple-bridges-mcp, the bridges are exposed to Claude Desktop as separate read and write tools. Read tools reject flags that would change data.
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ more-io/ claude-apple-bridges --skill apple-bridgesAfter installing, type/apple-bridgesin Claude Code to confirm it loaded.
Bundled files
References and scripts installed along with SKILL.md.
calendar-bridge.mdcontacts-bridge.mdmail-bridge.mdmessages-bridge.mdnotes-bridge.mdreminders-bridge.mdtmux-bridge.mdDetails
From the project READMEApple Bridges
Swift CLI tools at ~/.claude/ that give Claude Code native access to Apple apps on macOS.
Quick Reference
| Bridge | Binary | Purpose |
|---|---|---|
| reminders-bridge | ~/.claude/reminders-bridge | Manage Apple Reminders — lists, items, due dates, repeats, search |
| calendar-bridge | ~/.claude/calendar-bridge | Read/write Apple Calendar — events, free slots, scheduling |
| contacts-bridge | ~/.claude/contacts-bridge | Search/manage Apple Contacts — lookup, birthdays |
| notes-bridge | ~/.claude/notes-bridge | Read/write Apple Notes — create, search, append |
| mail-bridge | ~/.claude/mail-bridge | Read/send Apple Mail — inbox, unread, compose |
| tmux-bridge | ~/.claude/tmux-bridge | Read/write tmux sessions — panes, snapshots, send keystrokes |
| messages-bridge | ~/.claude/messages-bridge | Read/send Apple Messages — chats, unread, search, send text and files |
Read the detail file for the bridge you need — each contains full command syntax, all parameters, and usage examples.
General Patterns
CLI Syntax
All bridges follow the same pattern:
~/.claude/<bridge-name> <command> [arguments...]
In Claude Desktop (via apple-bridges-mcp), each bridge is two tools: <bridge>_read for commands that only read and <bridge>_write for commands that change data, such as reminders_read and reminders_write. Pass the same arguments as the args array, one element per argument, starting with the command. A read tool refuses a flag that would write (mail read --mark-read), and tmux_write types into any pane, so it is never a tool to allow for a whole session.
Quoting
Arguments with spaces must be quoted:
~/.claude/reminders-bridge add "Shopping List" "Buy milk" "From the organic store"
~/.claude/calendar-bridge add "Work" "Team Meeting" "2026-03-01 10:00" "2026-03-01 11:00"
Destructive Operations
Delete commands use a dry-run by default pattern — they show what would be deleted without the --force flag:
# Dry run (safe preview)
~/.claude/reminders-bridge delete "Work" "Old task"
# Actually delete
~/.claude/reminders-bridge delete "Work" "Old task" --force
This applies to: reminders-bridge delete, calendar-bridge delete, contacts-bridge delete, notes-bridge delete, mail-bridge delete.
Permissions
Each bridge requires macOS permission on first use:
| Bridge | Permission | Settings Path |
|---|---|---|
| reminders-bridge | Reminders | Privacy & Security > Reminders |
| calendar-bridge | Calendars | Privacy & Security > Calendars |
| contacts-bridge | Contacts | Privacy & Security > Contacts |
| notes-bridge | Automation (Notes.app) | Privacy & Security > Automation |
| mail-bridge | Automation (Mail.app) | Privacy & Security > Automation |
| tmux-bridge | None (uses tmux CLI) | — |
| messages-bridge | Full Disk Access (read) + Automation (Messages.app) | Privacy & Security > Full Disk Access / Automation |
Allowed Tools Configuration
Add to .claude/settings.local.json:
{
"permissions": {
"allow": [
"Bash(~/.claude/reminders-bridge:*)",
"Bash(~/.claude/calendar-bridge:*)",
"Bash(~/.claude/contacts-bridge:*)",
"Bash(~/.claude/notes-bridge:*)",
"Bash(~/.claude/mail-bridge:*)",
"Bash(~/.claude/tmux-bridge:*)",
"Bash(~/.claude/messages-bridge:*)"
]
}
}