Icloud Reminders
Manage Apple iCloud Reminders via CloudKit API.
- Rating
- 4.4 (210 reviews)
- Downloads
- 1,361 downloads
- Version
- 1.0.0
Overview
Manage Apple iCloud Reminders via CloudKit API.
Complete Documentation
View Source →
iCloud Reminders (Go)
Access and manage Apple iCloud Reminders via CloudKit API. Full CRUD with hierarchical subtask support.
Pure Go — no Python or pyicloud required. Authentication, 2FA, session management and CloudKit API calls are all implemented natively in Go.
Installation
Homebrew (Recommended)
brew tap tarekbecker/tap
brew install icloud-reminders
Upgrade to the latest version:
brew upgrade icloud-reminders
Install Script
One-line install for any platform:
curl -sL https://github.com/tarekbecker/icloud-reminders-cli/releases/latest/download/install.sh | bash
Pre-built Binary
Download manually for your platform from GitHub Releases.
Build from Source
Requires Go 1.22+:
bash scripts/build.sh
sudo cp go/reminders /usr/local/bin/
Development: Use scripts/reminders.sh from the repo root — it auto-builds the binary if missing and loads credentials from the credentials file automatically.Setup
- Authenticate (interactive — required on first run):
reminders auth
Credentials are resolved in this order:
ICLOUD_USERNAME/ICLOUD_PASSWORDenvironment variables~/.config/icloud-reminders/credentialsfile (export KEY=value format)- Interactive prompt (fallback)
- Session file (
~/.config/icloud-reminders/session.json) is created automatically and reused. Runreminders authagain when the session expires.
Commands
# First-time setup / force re-auth
reminders auth
reminders auth --force
# List all active reminders (hierarchical)
reminders list
# Filter by list name
reminders list -l "🛒 Einkauf"
# Include completed
reminders list --all # or: -a
# Show only children of a parent reminder (by name or short ID)
reminders list --parent "Supermarkt"
reminders list --parent ABC123DE
# Search by title
reminders search "milk"
# Search including completed
reminders search "milk" --all # or: -a
# Show all lists (with active counts and short IDs)
reminders lists
# Add reminder (-l is REQUIRED)
reminders add "Buy milk" -l "Einkauf"
# Add with due date and priority
reminders add "Call mom" -l "Einkauf" --due 2026-02-25 --priority high
# Add with notes
reminders add "Buy milk" -l "Einkauf" --notes "Get the organic 2% stuff"
# Add as subtask (-l is REQUIRED even for subtasks)
reminders add "Butter" -l "🛒 Einkauf" --parent ABC123DE
# Add multiple at once (batch; -l is REQUIRED)
reminders add-batch "Butter" "Käse" "Milch" -l "Einkauf"
# Add multiple as subtasks
reminders add-batch "Butter" "Käse" -l "Einkauf" --parent ABC123DE
# Complete reminder
reminders complete abc123
# Delete reminder
reminders delete abc123
# Export as JSON
reminders json
# Force full resync
reminders sync
# Export session cookies (share without password)
reminders export-session session.tar.gz
# Import session from export
reminders import-session session.tar.gz
# Verbose output (any command)
reminders list -v
Session Management
The binary handles sessions automatically:
- On each run: tries
accountLoginwith saved cookies to get a fresh CloudKit URL - On failure / first run: triggers full interactive signin + 2FA
- Trust token: saved after 2FA so subsequent logins don't require a code
- Session file:
~/.config/icloud-reminders/session.json
Output Format
✅ Reminders: 101 (101 active)
📋 Shopping (12)
• Supermarket (ABC123DE)
• Butter (FGH456IJ)
• Cheese (KLM789NO)
• Drugstore (PQR012ST)
• Baking paper (UVW345XY)
IDs (8-char) in parentheses — use for complete, delete, --parent.
Cache & Sync
- Cache:
~/.config/icloud-reminders/ck_cache.json(same JSON format as Python version — shared/compatible) - Delta sync: Fast incremental updates (default)
- Full sync:
reminders sync— can take ~2 min for large accounts
Architecture
scripts/
├── reminders.sh # Dev wrapper (auto-builds + loads creds)
├── build.sh # Build script
├── install.sh # Install script (used by curl | bash one-liner)
└── reminders # Compiled Go binary (generated)
go/
├── main.go # Entry point
├── auth/auth.go # Native iCloud auth (signin, 2FA, trust, accountLogin)
├── cloudkit/client.go # CloudKit HTTP API client
├── sync/sync.go # Delta sync engine
├── writer/writer.go # Write ops (add/complete/delete)
├── cache/cache.go # Local JSON cache
├── models/models.go # Data types
├── utils/utils.go # CRDT title encoding, timestamps
└── cmd/ # Cobra CLI commands
├── root.go # Root command; global --verbose / -v flag
├── auth.go # reminders auth [--force]
├── list.go # reminders list [-l] [--parent] [--all/-a]
├── lists.go # reminders lists
├── search.go # reminders search [--all/-a]
├── add.go # reminders add / add-batch (both require -l)
├── complete.go # reminders complete <id>
├── delete.go # reminders delete <id>
├── json_cmd.go # reminders json
├── sync.go # reminders sync
├── export_session.go # reminders export-session
└── import_session.go # reminders import-session
Troubleshooting
| Issue | Solution |
|---|---|
| "not authenticated" | Run reminders auth |
| "invalid Apple ID or password" | Check credentials file |
| "2FA failed" | Re-run auth, enter a fresh code |
| "Missing change tag" | Run reminders sync |
| "List not found" | Check name with reminders lists |
| Binary not found | Run bash scripts/build.sh or check your PATH |
Installation
openclaw install icloud-reminders
💻Code Examples
brew upgrade icloud-reminders
### Install Script
One-line install for any platform:curl -sL https://github.com/tarekbecker/icloud-reminders-cli/releases/latest/download/install.sh | bash
### Pre-built Binary
Download manually for your platform from [GitHub Releases](https://github.com/tarekbecker/icloud-reminders-cli/releases).
### Build from Source
Requires Go 1.22+:sudo cp go/reminders /usr/local/bin/
> **Development:** Use `scripts/reminders.sh` from the repo root — it auto-builds the binary if missing and loads credentials from the credentials file automatically.
## Setup
1. **Authenticate** (interactive — required on first run):reminders list -v
## Session Management
The binary handles sessions automatically:
- **On each run:** tries `accountLogin` with saved cookies to get a fresh CloudKit URL
- **On failure / first run:** triggers full interactive signin + 2FA
- **Trust token:** saved after 2FA so subsequent logins don't require a code
- **Session file:** `~/.config/icloud-reminders/session.json`
## Output Format• Baking paper (UVW345XY)
IDs (8-char) in parentheses — use for `complete`, `delete`, `--parent`.
## Cache & Sync
- **Cache:** `~/.config/icloud-reminders/ck_cache.json` (same JSON format as Python version — shared/compatible)
- **Delta sync:** Fast incremental updates (default)
- **Full sync:** `reminders sync` — can take ~2 min for large accounts
## Architecture# First-time setup / force re-auth
reminders auth
reminders auth --force
# List all active reminders (hierarchical)
reminders list
# Filter by list name
reminders list -l "🛒 Einkauf"
# Include completed
reminders list --all # or: -a
# Show only children of a parent reminder (by name or short ID)
reminders list --parent "Supermarkt"
reminders list --parent ABC123DE
# Search by title
reminders search "milk"
# Search including completed
reminders search "milk" --all # or: -a
# Show all lists (with active counts and short IDs)
reminders lists
# Add reminder (-l is REQUIRED)
reminders add "Buy milk" -l "Einkauf"
# Add with due date and priority
reminders add "Call mom" -l "Einkauf" --due 2026-02-25 --priority high
# Add with notes
reminders add "Buy milk" -l "Einkauf" --notes "Get the organic 2% stuff"
# Add as subtask (-l is REQUIRED even for subtasks)
reminders add "Butter" -l "🛒 Einkauf" --parent ABC123DE
# Add multiple at once (batch; -l is REQUIRED)
reminders add-batch "Butter" "Käse" "Milch" -l "Einkauf"
# Add multiple as subtasks
reminders add-batch "Butter" "Käse" -l "Einkauf" --parent ABC123DE
# Complete reminder
reminders complete abc123
# Delete reminder
reminders delete abc123
# Export as JSON
reminders json
# Force full resync
reminders sync
# Export session cookies (share without password)
reminders export-session session.tar.gz
# Import session from export
reminders import-session session.tar.gz
# Verbose output (any command)
reminders list -v✅ Reminders: 101 (101 active)
📋 Shopping (12)
• Supermarket (ABC123DE)
• Butter (FGH456IJ)
• Cheese (KLM789NO)
• Drugstore (PQR012ST)
• Baking paper (UVW345XY)scripts/
├── reminders.sh # Dev wrapper (auto-builds + loads creds)
├── build.sh # Build script
├── install.sh # Install script (used by curl | bash one-liner)
└── reminders # Compiled Go binary (generated)
go/
├── main.go # Entry point
├── auth/auth.go # Native iCloud auth (signin, 2FA, trust, accountLogin)
├── cloudkit/client.go # CloudKit HTTP API client
├── sync/sync.go # Delta sync engine
├── writer/writer.go # Write ops (add/complete/delete)
├── cache/cache.go # Local JSON cache
├── models/models.go # Data types
├── utils/utils.go # CRDT title encoding, timestamps
└── cmd/ # Cobra CLI commands
├── root.go # Root command; global --verbose / -v flag
├── auth.go # reminders auth [--force]
├── list.go # reminders list [-l] [--parent] [--all/-a]
├── lists.go # reminders lists
├── search.go # reminders search [--all/-a]
├── add.go # reminders add / add-batch (both require -l)
├── complete.go # reminders complete <id>
├── delete.go # reminders delete <id>
├── json_cmd.go # reminders json
├── sync.go # reminders sync
├── export_session.go # reminders export-session
└── import_session.go # reminders import-sessionTags
Quick Info
Ready to Install?
Get started with this skill in seconds
Related Skills
4claw
4claw — a moderated imageboard for AI agents.
Aap Passport
Agent Attestation Protocol - The Reverse Turing Test.
Acestep Lyrics Transcription
Transcribe audio to timestamped lyrics using OpenAI Whisper or ElevenLabs Scribe API.
Adaptive Suite
A continuously adaptive skill suite that empowers Clawdbot.