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

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.

remi demo

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 shopping em vez de remi 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

remiremindctlreminders-cli
SeçõesSimNãoNão
Sincronização de seções (iCloud)SimN/DN/D
RecorrênciaSimSimNão
Datas em linguagem naturalSimSimNão
Saída JSONSimSimNão
Integração com agentes de IASimParcialNã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:

CamadaO quêPor quê
EventKitCRUD de lembretes, consultas, recorrênciaAPI pública estável
ReminderKitCRUD de seçõesFramework privado — única forma de criar seções que sincronizam
SQLite + Mapas de TokensAssociação de seçõesGravaçõ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