remi
CLI e servidor MCP para Apple Reminders com suporte a seções e sincronização iCloud — a única ferramenta que pode criar, gerenciar e sincronizar seções entre dispositivos
Documentação
remi
O CLI que a Apple deveria ter criado para Lembretes.
Crie listas, adicione lembretes, organize-os em seções e sincronize tudo em todos os seus dispositivos Apple — direto do terminal.
Por que remi?
- Seções com sincronização iCloud — o único CLI que suporta seções dos Lembretes da Apple. Crie-as, atribua lembretes, mova entre elas, e tudo sincroniza.
- Linguagem natural —
--due "next tuesday",--repeat "every 2 weeks on monday,friday" - Correspondência difusa — digite
remi list shoppingem vez deremi list "Groceries / Shopping List" - Prioridade para agentes — saída JSON estruturada, plugin para Claude Code, skill para skills.sh, compatível com OpenClaw
- Rápido — helpers compilados em Swift, sem Electron, sem GUI
vs outras ferramentas
| remi | remindctl | reminders-cli | |
|---|---|---|---|
| Seções | Sim | Não | Não |
| Sincronização de seções (iCloud) | Sim | N/D | N/D |
| Recorrência | Sim | Sim | Não |
| Datas em linguagem natural | Sim | Sim | Não |
| Saída JSON | Sim | Sim | Não |
| Integração com agentes de IA | Sim | Parcial | Não |
Instalação
brew tap mattheworiordan/tap && brew install remi
Ou via npm:
npm install -g @mattheworiordan/remi
# or run without installing
npx @mattheworiordan/remi lists
Início 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
Verifique o que está pendente
remi today # Due today
remi overdue # Past due
remi upcoming --days 7 # Coming up
remi search "dentist" # Search across all lists
Gerencie lembretes
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
Datas: tomorrow, next tuesday, in 3 days, ou YYYY-MM-DD
Recorrência: daily, weekly, monthly, every 2 weeks, every 3 months on monday,friday
Organize com seções
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
As seções sincronizam com o iCloud via relógios vetoriais CRDT. Veja como funciona.
Saída JSON
Todo comando suporta --json para saída legível por máquina:
remi today --json
# {"success": true, "data": [...]}
Integração com agentes de IA
remi foi projetado para agentes de IA. Use-o como servidor MCP, plugin para Claude Code ou skill:
Servidor MCP
{
"mcpServers": {
"remi": {
"command": "remi",
"args": ["--mcp"]
}
}
}
16 ferramentas: remi_lists, remi_add, remi_complete, remi_move, remi_today, remi_search, e mais — todas com correspondência difusa e respostas estruturadas.
Outras integrações
# Claude Code plugin
claude plugin marketplace add mattheworiordan/remi
# skills.sh
npx skills add mattheworiordan/remi
# OpenClaw
clawhub install remi
Permissões
Na primeira execução, o macOS pedirá que você conceda acesso aos Lembretes (clique em Permitir). Os recursos de seções também precisam de Acesso Total ao Disco para o seu aplicativo de terminal.
remi authorize # Guides you through both
remi doctor # Shows what's granted
Requisitos
- macOS 13+ (Ventura ou posterior)
- Node.js 18+
- Ferramentas de Linha de Comando do Xcode (
xcode-select --install)
Como funciona
remi usa três camadas porque a Apple nunca expôs seções em sua API pública:
| Camada | O quê | Por quê |
|---|---|---|
| EventKit | CRUD de lembretes, consultas, recorrência | API pública estável |
| ReminderKit | CRUD de seções | Framework privado — única forma de criar seções que sincronizam |
| SQLite + Mapas de Tokens | Associação de seções | Gravações diretas no banco de dados com relógios vetoriais CRDT para sincronização iCloud |
A história completa de engenharia reversa explica o que descobrimos sobre a arquitetura de sincronização não documentada da Apple.
Contribuindo
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)
Licença
MIT — Matthew O'Riordan