Skip to main content

Access iCloud Calendar, Reminders, Notes, and Find My from Linux

Project description

☁️ icloud-cli-tools

Access your iCloud Calendar, Reminders, Notes, and Find My devices from the Linux terminal.

CI PyPI License: MIT Python 3.9+

Features

  • 📅 Calendar — List, create, and delete events with natural date parsing
  • Reminders — Manage reminders across lists, mark complete, set priorities
  • 📝 Notes — Read, create, and search your iCloud Notes
  • 📍 Find My — Locate devices, play sounds, activate Lost Mode
  • 🔄 Background Sync — Daemon with systemd integration for periodic caching
  • 🔐 Secure Auth — 2FA support, OS keyring for credentials, session caching
  • 🎨 Beautiful Output — Rich tables, JSON, and plain text formats

Installation

# From PyPI (recommended)
pip install icloud-cli-tools

Or install from source:

# Clone the repo
git clone https://github.com/alan13367/icloud-cli-tools.git
cd icloud-cli-tools

# Set up a virtual environment (recommended, required on modern Debian/Ubuntu)
python3 -m venv .venv
source .venv/bin/activate
pip install -e .

Tip: To use icloud-cli without activating the venv every time, add an alias:

echo 'alias icloud-cli="~/icloud-cli-tools/.venv/bin/icloud-cli"' >> ~/.bashrc
source ~/.bashrc

Quick Start

# 1. Login to your iCloud account
icloud-cli login

# 2. Set up Notes access (requires app-specific password)
icloud-cli notes setup-imap

# 3. Start using it!
icloud-cli calendar list
icloud-cli reminders list
icloud-cli notes list
icloud-cli findmy list

Usage

Authentication

icloud-cli login          # Interactive login with 2FA
icloud-cli logout         # Clear all stored credentials
icloud-cli status         # Check auth status

Calendar

icloud-cli calendar list                    # Events for next 7 days
icloud-cli calendar list --from today --to tomorrow
icloud-cli calendar show <event-id>
icloud-cli calendar add -t "Meeting" -s "2025-06-15 10:00" -e "2025-06-15 11:00"
icloud-cli calendar delete <event-id>

Reminders

icloud-cli reminders list                   # All active reminders
icloud-cli reminders list --list "Shopping" --completed
icloud-cli reminders add -t "Buy milk" -d "2025-06-15" -l "Shopping"
icloud-cli reminders complete <reminder-id>
icloud-cli reminders delete <reminder-id>

Notes

icloud-cli notes list
icloud-cli notes show <note-id>
icloud-cli notes add -t "My Note" -b "Note content here"
icloud-cli notes search "keyword"

Note: Notes access requires an app-specific password. Generate one at appleid.apple.comSign In & SecurityApp-Specific Passwords.

Find My

icloud-cli findmy list                      # All devices with status
icloud-cli findmy locate "iPhone"           # GPS coordinates + Maps link
icloud-cli findmy play-sound "iPhone"       # Ring your device
icloud-cli findmy lost-mode "iPhone" -p "+1234567890" -m "Please return"

Sync & Daemon

icloud-cli sync                # One-shot sync to local cache
icloud-cli daemon start        # Start background sync (every 15 min)
icloud-cli daemon stop         # Stop daemon
icloud-cli daemon status       # Check daemon status

Systemd Integration (Linux)

# Install the service
cp systemd/icloud-cli-sync.service ~/.config/systemd/user/
systemctl --user enable icloud-cli-sync
systemctl --user start icloud-cli-sync

Output Formats

icloud-cli calendar list -f table   # Rich formatted table (default)
icloud-cli calendar list -f json    # Machine-readable JSON
icloud-cli calendar list -f plain   # Tab-separated for scripting

Configuration

Config file: ~/.config/icloud-cli/config.toml

[general]
default_format = "table"
verbose = false

[auth]
apple_id = "your@icloud.com"

[sync]
sync_interval_minutes = 15

[calendar]
default_calendar = "Personal"

[reminders]
default_reminder_list = "Reminders"

Development

# Install with dev dependencies
pip install -e ".[dev]"

# Run tests
pytest tests/ -v

# Lint
ruff check src/ tests/

⚠️ Disclaimer

This project uses unofficial/private iCloud web APIs via the pyicloud library. Apple may change these APIs at any time without notice, which could break functionality. This tool is not affiliated with or endorsed by Apple Inc.

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

icloud_cli_tools-0.1.1.tar.gz (26.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

icloud_cli_tools-0.1.1-py3-none-any.whl (23.8 kB view details)

Uploaded Python 3

File details

Details for the file icloud_cli_tools-0.1.1.tar.gz.

File metadata

  • Download URL: icloud_cli_tools-0.1.1.tar.gz
  • Upload date:
  • Size: 26.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.6

File hashes

Hashes for icloud_cli_tools-0.1.1.tar.gz
Algorithm Hash digest
SHA256 b5b69639b07e2cf1f58729ca436508c862683f425d2aff9fe8deb4f6d63edbb8
MD5 46314d87d4d61429c58fe525406a8ae7
BLAKE2b-256 fa2f7333e0428df9068a30e6da01c6ee44de8d2edef984665b227fdb97824084

See more details on using hashes here.

File details

Details for the file icloud_cli_tools-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for icloud_cli_tools-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 4aee60223d80e917ba9893784a2a8a51d326fe9a0242aeb4069fc7f3499db2a9
MD5 5cdbb7b2b35e3cedea304a2167733a3d
BLAKE2b-256 8808de4b836c7bfe318133d3da67bf697163b8d16cc5c51a421b1d01b2dd923d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page