Apple Reminders
Manage Apple Reminders via remindctl CLI (list, add, edit, complete, delete). Supports lists, date filters, and JSON/plain output.
remindctl is a blazing-fast CLI for Apple Reminders built by Peter Steinberger (steipete). It gives you full CRUD access to your Apple Reminders from the terminal — list, add, edit, complete, and delete reminders with support for lists, due dates, and multiple output formats (JSON, plain text, table).
What makes remindctl special is its speed. Built in Go with a native EventKit bridge via cgo, it reads directly from the Reminders store rather than going through the slow AppleScript/JXA layer. All commands complete in under 200ms, even with hundreds of reminders. It's the difference between usable and unusable for terminal workflows.
For OpenClaw users, this is the bridge between your AI assistant and Apple's native task system. Say "add a reminder to call mom tomorrow at 3pm" and it lands in your Apple Reminders, synced to your iPhone, iPad, and Apple Watch. The skill is smart about disambiguation: if you say "remind me," OpenClaw will clarify whether you want an Apple Reminder (syncs to phone) or a cron-based alert (messages you in chat).
The CLI supports natural language dates, multiple lists, date range filters (today/tomorrow/week/overdue), and JSON output for scripting. It's macOS-only since it uses EventKit, but that's the whole point — native integration with Apple's ecosystem.
Best suited for: Apple ecosystem users who want their AI to manage reminders, developers who want terminal access to their task list, anyone who prefers CLI over clicking through the Reminders app.
Tags: reminders, apple, macos, productivity, tasks
Category: Productivity
Use Cases
- Voice-style commands: 'Add a reminder to buy groceries tomorrow'
- Morning briefing: check today's reminders as part of a daily routine
- Overdue review: scan for forgotten tasks during heartbeat checks
- Project list management from the terminal
- Syncing tasks across Apple devices via AI assistant
Tips
- Run `remindctl authorize` first to trigger the system permission prompt
- Use `--json` output for scripting and automation pipelines
- Combine with OpenClaw cron to periodically check overdue reminders: `remindctl overdue --json`
- Use natural language dates: `--due tomorrow`, `--due 'next friday at 2pm'`
- Create dedicated lists for different projects: `remindctl list ProjectX --create`
- When users say 'remind me', ask if they want Apple Reminders or a cron alert
Known Issues & Gotchas
- macOS only — requires EventKit framework (no Linux/Windows support)
- First run requires granting Reminders permission in System Settings > Privacy & Security
- Don't confuse with OpenClaw's cron system — remindctl creates Apple Reminders, cron creates bot alerts
- IDs are session-specific — don't hardcode reminder IDs in scripts
- Requires Terminal (or remindctl) to be authorized in Privacy settings
Alternatives
- rem (BRO3886)
- Things 3 (things-mac)
- Todoist CLI
- OpenClaw cron
Community Feedback
I wanted to manage my Apple Reminders from the terminal. Initially using AppleScript to fetch 200+ reminders took 60+ seconds. Built a Go CLI with custom Objective-C EventKit bridge — all commands now complete in <200ms. That's a 100-500x speedup.
— Reddit r/SideProject
Reminders CLI with Commander-based command router. Show reminders with filters (today/tomorrow/week/overdue/upcoming/completed/all/date). Manage lists. Full CRUD.
— GitHub
Configuration Examples
Install and authorize
brew install steipete/tap/remindctl
remindctl authorize
remindctl statusAdd a reminder with due date
remindctl add --title "Call mom" --list Personal --due "tomorrow at 3pm"Check today's reminders as JSON
remindctl today --json | jq '.[] | {title, dueDate, list}'Batch complete
# Complete multiple reminders by ID
remindctl complete 1 2 3 4Installation
brew install steipete/tap/remindctlHomepage: https://github.com/steipete/remindctl
Source: bundled