remi
CLI y servidor MCP de Apple Reminders con soporte de secciones y sincronización con iCloud: la única herramienta que puede crear, gestionar y sincronizar secciones entre dispositivos.
Documentación
remi
La CLI que Apple debería haber creado para Recordatorios.
Crea listas, añade recordatorios, organízalos en secciones y sincroniza todo entre tus dispositivos Apple — desde la terminal.
¿Por qué remi?
- Secciones con sincronización de iCloud — la única CLI que admite secciones de Recordatorios de Apple. Créalas, asigna recordatorios, muévelos entre ellas, y todo se sincroniza.
- Lenguaje natural —
--due "next tuesday",--repeat "every 2 weeks on monday,friday" - Coincidencia difusa — escribe
remi list shoppingen lugar deremi list "Groceries / Shopping List" - Prioridad para agentes — salida JSON estructurada, plugin para Claude Code, skill para skills.sh, compatible con OpenClaw
- Rápido — helpers compilados en Swift, sin Electron, sin interfaz gráfica
Comparación con otras herramientas
| remi | remindctl | reminders-cli | |
|---|---|---|---|
| Secciones | Sí | No | No |
| Sincronización de secciones (iCloud) | Sí | N/A | N/A |
| Recurrencia | Sí | Sí | No |
| Fechas en lenguaje natural | Sí | Sí | No |
| Salida JSON | Sí | Sí | No |
| Integración con agentes de IA | Sí | Parcial | No |
Instalación
brew tap mattheworiordan/tap && brew install remi
O mediante npm:
npm install -g @mattheworiordan/remi
# or run without installing
npx @mattheworiordan/remi lists
Inicio rápido
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
Uso
Consulta lo que vence
remi today # Due today
remi overdue # Past due
remi upcoming --days 7 # Coming up
remi search "dentist" # Search across all lists
Gestiona recordatorios
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
Fechas: tomorrow, next tuesday, in 3 days, o YYYY-MM-DD
Recurrencia: daily, weekly, monthly, every 2 weeks, every 3 months on monday,friday
Organiza con secciones
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
Las secciones se sincronizan con iCloud mediante relojes vectoriales CRDT. Consulta cómo funciona.
Salida JSON
Cada comando admite --json para salida legible por máquinas:
remi today --json
# {"success": true, "data": [...]}
Integración con agentes de IA
remi está diseñado para agentes de IA. Úsalo como servidor MCP, plugin de Claude Code o skill:
Servidor MCP
{
"mcpServers": {
"remi": {
"command": "remi",
"args": ["--mcp"]
}
}
}
16 herramientas: remi_lists, remi_add, remi_complete, remi_move, remi_today, remi_search, y más — todas con coincidencia difusa y respuestas estructuradas.
Otras integraciones
# Claude Code plugin
claude plugin marketplace add mattheworiordan/remi
# skills.sh
npx skills add mattheworiordan/remi
# OpenClaw
clawhub install remi
Permisos
En el primer uso, macOS te pedirá que concedas acceso a Recordatorios (haz clic en Permitir). Las funciones de secciones también necesitan Acceso Total al Disco para tu aplicación de terminal.
remi authorize # Guides you through both
remi doctor # Shows what's granted
Requisitos
- macOS 13+ (Ventura o posterior)
- Node.js 18+
- Herramientas de línea de comandos de Xcode (
xcode-select --install)
Cómo funciona
remi usa tres capas porque Apple nunca expuso las secciones en su API pública:
| Capa | Qué | Por qué |
|---|---|---|
| EventKit | CRUD de recordatorios, consultas, recurrencia | API pública estable |
| ReminderKit | CRUD de secciones | Framework privado — única forma de crear secciones que se sincronicen |
| SQLite + Mapas de tokens | Pertenencia a secciones | Escrituras directas en la base de datos con relojes vectoriales CRDT para sincronización con iCloud |
La historia completa de ingeniería inversa explica lo que descubrimos sobre la arquitectura de sincronización no documentada de Apple.
Contribuciones
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)
Licencia
MIT — Matthew O'Riordan