caldav-cli
name: caldav-cli
by cyberash-dev · published 2026-03-22
$ claw add gh:cyberash-dev/cyberash-dev-caldav-cli---
name: caldav-cli
description: Manage CalDAV calendars (iCloud, Google, Yandex) from the command line. Supports OAuth2 and Basic auth, multi-account, table/JSON output.
metadata: {"clawdbot":{"emoji":"📅","os":["linux","macos"],"requires":{"bins":["caldav-cli","node"],"configs":["~/.config/caldav-cli/config.json"],"keychain":true},"install":[{"id":"npm","kind":"shell","command":"npm install -g caldav-cli","bins":["caldav-cli"],"label":"Install caldav-cli via npm"}],"source":"https://github.com/cyberash-dev/caldav-cli"}}
---
# caldav-cli
A CalDAV CLI client. Manages multiple accounts with secure OS keychain storage. Supports iCloud, Google (OAuth2), Yandex and any custom CalDAV server.
Installation
Requires Node.js >= 18.
npm install -g caldav-cliAfter installation the `caldav-cli` command is available globally.
Quick Start
caldav-cli account add # Interactive wizard: pick provider, enter credentials
caldav-cli events list # Show events for the next 7 days
caldav-cli events create # Interactive wizard: create a new eventAccount Management
Add account (interactive wizard — prompts for provider, credentials, tests connection):
caldav-cli account addList configured accounts:
caldav-cli account listRemove an account:
caldav-cli account remove <name>View Events
caldav-cli events list # Next 7 days (default)
caldav-cli events list --from 2026-02-10 --to 2026-02-20
caldav-cli events list -a work # Specific account
caldav-cli events list -c "Team Calendar" # Filter by calendar name
caldav-cli events list -a work -c Personal --from 2026-03-01 --to 2026-03-31JSON output (for scripting):
caldav-cli events list --json
caldav-cli events list --json --from 2026-02-10 --to 2026-02-20Create Events
Interactive wizard (prompts for all fields):
caldav-cli events createNon-interactive (all options via flags):
caldav-cli events create \
--title "Team standup" \
--start "2026-02-10T10:00" \
--end "2026-02-10T10:30" \
--account work \
--calendar "Team Calendar" \
--description "Daily sync" \
--location "Room 42"Partial flags (wizard prompts for the rest):
caldav-cli events create --title "Lunch" --account workJSON output after creation:
caldav-cli events create --json --title "Event" --start "2026-02-10T10:00" --end "2026-02-10T11:00"Supported Providers
| Provider | Auth | Server URL |
|----------|------|------------|
| Apple iCloud | Basic (app-specific password) | `https://caldav.icloud.com` |
| Google Calendar | OAuth2 (Client ID + Secret) | `https://apidata.googleusercontent.com/caldav/v2` |
| Yandex Calendar | Basic (app password) | `https://caldav.yandex.ru` |
| Custom | Basic | User provides URL |
Google Calendar Setup
Google requires OAuth2. Before running `caldav-cli account add`:
1. Go to https://console.cloud.google.com/
2. Create a project, enable CalDAV API
3. Create OAuth client ID (Desktop app type)
4. Note the Client ID and Client Secret
The wizard will ask for these, then open a browser for authorization. The refresh token is stored securely in the OS keychain.
Data Storage
No secrets are stored on disk. Existing installations that stored OAuth2 client credentials in `config.json` are automatically migrated to the keychain on first run.
Flag Reference
`events list`
| Flag | Short | Description | Default |
|------|-------|-------------|---------|
| `--account <name>` | `-a` | Account name | default account |
| `--from <date>` | | Start date (YYYY-MM-DD) | today |
| `--to <date>` | | End date (YYYY-MM-DD) | today + 7 days |
| `--calendar <name>` | `-c` | Filter by calendar name | all calendars |
| `--json` | | Output as JSON | false |
`events create`
| Flag | Short | Description |
|------|-------|-------------|
| `--title <title>` | `-t` | Event title |
| `--start <datetime>` | `-s` | Start (YYYY-MM-DDTHH:mm) |
| `--end <datetime>` | `-e` | End (YYYY-MM-DDTHH:mm) |
| `--account <name>` | `-a` | Account name |
| `--calendar <name>` | `-c` | Calendar name |
| `--description <text>` | `-d` | Event description |
| `--location <text>` | `-l` | Event location |
| `--json` | | Output as JSON |
All `events create` flags are optional. Omitted values trigger interactive prompts.
More tools from the same signal band
Order food/drinks (点餐) on an Android device paired as an OpenClaw node. Uses in-app menu and cart; add goods, view cart, submit order (demo, no real payment).
Sign plugins, rotate agent credentials without losing identity, and publicly attest to plugin behavior with verifiable claims and authenticated transfers.
The philosophical layer for AI agents. Maps behavior to Spinoza's 48 affects, calculates persistence scores, and generates geometric self-reports. Give your...