remi

remi

Apple Reminders CLI and MCP server with section support and iCloud sync — the only tool that can create, manage, and sync sections across devices

Category
访问服务器

README

<p align="center"> <img src="docs/logo.svg" alt="remi" width="80"> </p>

<h1 align="center">remi</h1>

<p align="center"><strong>The CLI that Apple should have built for Reminders.</strong></p>

Create lists, add reminders, organize them into sections, and have everything sync across all your Apple devices — from the terminal.

<p align="center"> <img src="docs/demo.gif" alt="remi demo" width="500"> </p>

Why remi?

  • Sections with iCloud sync — the only CLI that supports Apple Reminders sections. Create them, assign reminders, move between them, and it all syncs.
  • Natural language — --due "next tuesday", --repeat "every 2 weeks on monday,friday"
  • Fuzzy matching — type remi list shopping instead of remi list "Groceries / Shopping List"
  • Agent-first — structured JSON output, Claude Code plugin, skills.sh skill, OpenClaw compatible
  • Fast — compiled Swift helpers, no Electron, no GUI

vs other tools

remi remindctl reminders-cli
Sections Yes No No
Section sync (iCloud) Yes N/A N/A
Recurrence Yes Yes No
Natural language dates Yes Yes No
JSON output Yes Yes No
AI agent integration Yes Partial No

Install

brew tap mattheworiordan/tap && brew install remi

Or via npm:

npm install -g @mattheworiordan/remi
# or run without installing
npx @mattheworiordan/remi lists

Quick start

remi lists                                              # See all lists
remi list "Groceries"                                   # View a list (fuzzy: remi list groceries)
remi add "Groceries" "Buy milk" --section "Dairy"       # Add to a section
remi today                                              # What's due today?
remi complete "Groceries" "milk"                        # Fuzzy complete

Usage

Check what's due

remi today                    # Due today
remi overdue                  # Past due
remi upcoming --days 7        # Coming up
remi search "dentist"         # Search across all lists

Manage reminders

remi add "Work" "Review PR" --due "next friday" --priority high
remi add "Work" "Standup" --due tomorrow --repeat daily
remi complete "Work" "standup"
remi update "Work" "Review PR" --due "in 3 days"
remi delete "Work" "Review PR" --confirm

Dates: tomorrow, next tuesday, in 3 days, or YYYY-MM-DD Recurrence: daily, weekly, monthly, every 2 weeks, every 3 months on monday,friday

Organize with sections

remi sections "Groceries"                                # List sections
remi create-section "Groceries" "Produce"                # Create a section
remi add "Groceries" "Bananas" --section "Produce"       # Add to a section
remi move "Groceries" "Bananas" --to-section "Dairy"     # Move between sections

Sections sync to iCloud via CRDT vector clocks. See how it works.

JSON output

Every command supports --json for machine-readable output:

remi today --json
# {"success": true, "data": [...]}

AI agent integration

remi is designed for AI agents. Use it as an MCP server, Claude Code plugin, or skill:

MCP server

{
  "mcpServers": {
    "remi": {
      "command": "remi",
      "args": ["--mcp"]
    }
  }
}

16 tools: remi_lists, remi_add, remi_complete, remi_move, remi_today, remi_search, and more — all with fuzzy matching and structured responses.

Other integrations

# Claude Code plugin
claude plugin marketplace add mattheworiordan/remi

# skills.sh
npx skills add mattheworiordan/remi

# OpenClaw
clawhub install remi

Permissions

On first run, macOS will ask you to grant Reminders access (click Allow). Section features also need Full Disk Access for your terminal app.

remi authorize    # Guides you through both
remi doctor       # Shows what's granted

Requirements

  • macOS 13+ (Ventura or later)
  • Node.js 18+
  • Xcode Command Line Tools (xcode-select --install)

How it works

remi uses three layers because Apple never exposed sections in their public API:

Layer What Why
EventKit Reminder CRUD, queries, recurrence Stable public API
ReminderKit Section CRUD Private framework — only way to create sections that sync
SQLite + Token Maps Section membership Direct database writes with CRDT vector clocks for iCloud sync

The full reverse-engineering story explains what we discovered about Apple's undocumented sync architecture.

Contributing

git clone https://github.com/mattheworiordan/remi.git && cd remi
npm install && npm run build:swift && npm run build
npm test                        # Unit tests
npm run test:integration        # Integration tests (needs Reminders access)

License

MIT — Matthew O'Riordan

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选