Remi

io.github.mattheworiordanPublished by GitHub account mattheworiordanv0.2.1Updated Oct 24, 2026

Apple Reminders CLI and MCP server with section support and iCloud sync

Overview

AI-generated overview

A local MCP server and CLI for Apple Reminders on macOS, letting an assistant create, organize, search and complete reminders and sections with iCloud sync.

What you can do
List and view reminder lists, with fuzzy name matching and JSON output for every command. Add, update, complete and delete reminders, including due dates in natural language and recurring schedules. Check what is due today, overdue or upcoming, and search across all lists. Create sections, assign reminders to them and move reminders between sections, syncing to iCloud.
When to use it
Useful when you want an assistant to manage your Apple Reminders on a Mac: capturing tasks, reviewing what is due, and organizing lists into sections that sync to your other Apple devices.
Requirements
Runs locally on macOS 13 or later with Node.js 18+ and Xcode Command Line Tools; installed via Homebrew or npm. macOS must grant Reminders access, and section features also need Full Disk Access for the terminal app.
Before you install
The assistant can write, change and delete reminders and sections in your real Reminders data, which syncs to iCloud. Section support relies on a private Apple framework and direct SQLite database writes, so it may break with macOS updates. Granting Full Disk Access to the terminal widens what it can read.

Installation

In SourceWeft

  1. Open Remi in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

[remi]

remi

The CLI that Apple should have built for Reminders.

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

[remi demo]

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

remiremindctlreminders-cli
SectionsYesNoNo
Section sync (iCloud)YesN/AN/A
RecurrenceYesYesNo
Natural language datesYesYesNo
JSON outputYesYesNo
AI agent integrationYesPartialNo

Install

bash
brew tap mattheworiordan/tap && brew install remi

Or via npm:

bash
npm install -g @mattheworiordan/remi# or run without installingnpx @mattheworiordan/remi lists

Quick start

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

Usage

Check what's due

bash
remi today                    # Due todayremi overdue                  # Past dueremi upcoming --days 7        # Coming upremi search "dentist"         # Search across all lists

Manage reminders

bash
remi add "Work" "Review PR" --due "next friday" --priority highremi add "Work" "Standup" --due tomorrow --repeat dailyremi 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

bash
remi sections "Groceries"                                # List sectionsremi create-section "Groceries" "Produce"                # Create a sectionremi add "Groceries" "Bananas" --section "Produce"       # Add to a sectionremi 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:

bash
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

json
{  "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

bash
# Claude Code pluginclaude plugin marketplace add mattheworiordan/remi
# skills.shnpx skills add mattheworiordan/remi
# OpenClawclawhub 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.

bash
remi authorize    # Guides you through bothremi 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:

LayerWhatWhy
EventKitReminder CRUD, queries, recurrenceStable public API
ReminderKitSection CRUDPrivate framework — only way to create sections that sync
SQLite + Token MapsSection membershipDirect 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

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

License

MIT — Matthew O'Riordan

Source: README.md at commit c7bd272

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

1
  1. v0.2.1LatestSep 16, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts