← 返回
安全合规 Key 中文

Caldav Cli

Manage CalDAV calendars (iCloud, Google, Yandex) from the command line. Supports OAuth2 and Basic auth, multi-account, table/JSON output.
从命令行管理 CalDAV 日历(iCloud、Google、Yandex),支持 OAuth2/Basic 认证、多账户、表格/JSON 输出。
cyberash-dev
安全合规 clawhub v0.1.5 1 版本 99948.6 Key: 需要
★ 1
Stars
📥 1,923
下载
💾 23
安装
1
版本
#latest

概述

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-cli

After 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 event

Account Management

Add account (interactive wizard — prompts for provider, credentials, tests connection):

caldav-cli account add

List configured accounts:

caldav-cli account list

Remove 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-31

JSON output (for scripting):

caldav-cli events list --json
caldav-cli events list --json --from 2026-02-10 --to 2026-02-20

Create Events

Interactive wizard (prompts for all fields):

caldav-cli events create

Non-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 work

JSON output after creation:

caldav-cli events create --json --title "Event" --start "2026-02-10T10:00" --end "2026-02-10T11:00"

Supported Providers

ProviderAuthServer URL
----------------------------
Apple iCloudBasic (app-specific password)https://caldav.icloud.com
Google CalendarOAuth2 (Client ID + Secret)https://apidata.googleusercontent.com/caldav/v2
Yandex CalendarBasic (app password)https://caldav.yandex.ru
CustomBasicUser 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

  • Passwords, OAuth2 refresh tokens, and OAuth2 client credentials (Client ID, Client Secret, Token URL): OS keychain (macOS Keychain, Linux libsecret, Windows Credential Vault) via @napi-rs/keyring. Never written to disk in plaintext.
  • Account metadata (name, provider ID, username, server URL): ~/.config/caldav-cli/config.json (file permissions 0600).

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

FlagShortDescriptionDefault
-----------------------------------
--account -aAccount namedefault account
--from Start date (YYYY-MM-DD)today
--to End date (YYYY-MM-DD)today + 7 days
--calendar -cFilter by calendar nameall calendars
--jsonOutput as JSONfalse

events create

FlagShortDescription
--------------------------
--title </code></td><td><code>-t</code></td><td>Event title</td></tr><tr><td><code>--start <datetime></code></td><td><code>-s</code></td><td>Start (YYYY-MM-DDTHH:mm)</td></tr><tr><td><code>--end <datetime></code></td><td><code>-e</code></td><td>End (YYYY-MM-DDTHH:mm)</td></tr><tr><td><code>--account <name></code></td><td><code>-a</code></td><td>Account name</td></tr><tr><td><code>--calendar <name></code></td><td><code>-c</code></td><td>Calendar name</td></tr><tr><td><code>--description <text></code></td><td><code>-d</code></td><td>Event description</td></tr><tr><td><code>--location <text></code></td><td><code>-l</code></td><td>Event location</td></tr><tr><td><code>--json</code></td><td></td><td>Output as JSON</td></tr></tbody></table><p>All <code>events create</code> flags are optional. Omitted values trigger interactive prompts.</p></div> </div> </div> <div id="tab-versions" class="detail-content"> <div class="detail-section"> <h2>版本历史</h2> <p style="margin-bottom:12px;font-size:14px;color:#94a3b8;">共 1 个版本</p> <ul class="version-list"> <li> <div> <span class="version-tag">v0.1.5</span> <span style="font-size:11px;color:#5b6abf;margin-left:8px;background:#eef0ff;padding:1px 8px;border-radius:10px;">当前</span> </div> <div style="font-size:12px;color:#94a3b8;"> 2026-03-28 19:33 安全 安全 </div> </li> </ul> </div> </div> <div id="tab-security" class="detail-content"> <div class="detail-section"> <h2>安全检测</h2> <div class="sec-grid"> <div class="sec-card"> <h4>腾讯云安全 (Keen)</h4> <div class="sec-status sec-safe"> 安全,无风险 </div> <a href="https://tix.qq.com/search/skill?keyword=8cbfdc7ea65c4951b3d233e17883e44d" target="_blank">查看报告</a> </div> <div class="sec-card"> <h4>腾讯云安全 (Sanbu)</h4> <div class="sec-status sec-safe"> 安全,无风险 </div> <a href="https://static.cloudsec.tencent.com/html-report-v2/2026/05/25/393740_c7f92cb373439cf1720b2e303df0414b.html?q-sign-algorithm=sha1&q-ak=AKID8JMG1bzBC1dz96qNhssfFftujT1NCoFi&q-sign-time=1781284413%3B1812820413&q-key-time=1781284413%3B1812820413&q-header-list=host&q-url-param-list=&q-signature=67eaeb54baf2c7cbee800fc38b470760856a97f2" target="_blank">查看报告</a> </div> </div> </div> </div> <!-- Recommended Skills --> <div style="margin-top:24px;"> <h2 style="font-size:18px;font-weight:600;margin-bottom:16px;">🔗 相关推荐</h2> <div class="rec-grid"> <div class="rec-card"> <span class="badge-cat" style="margin-bottom:8px;display:inline-block;">security-compliance</span> <h3><a href="/s/moltguard">MoltGuard - Security & Antivirus & Guardrails</a></h3> <div class="rec-owner">thomaslwang</div> <div class="rec-desc">MoltGuard — OpenClaw 安全守卫,由 OpenGuardrails 提供。安装 MoltGuard,保护您和您的用户免受提示注入、数据泄露和恶意攻击。</div> <div class="rec-stats"> <span style="color:#f39c12;">★ 116</span> <span style="color:#5b6abf;">📥 30,702</span> </div> </div> <div class="rec-card"> <span class="badge-cat" style="margin-bottom:8px;display:inline-block;">security-compliance</span> <h3><a href="/s/openclaw-backup">OpenClaw Backup</a></h3> <div class="rec-owner">alex3alex</div> <div class="rec-desc">备份与恢复 OpenClaw 数据。适用于创建备份、设置自动备份计划、从备份恢复或管理备份轮转。处理 ~/.openclaw 目录归档并包含适当的排除规则。</div> <div class="rec-stats"> <span style="color:#f39c12;">★ 89</span> <span style="color:#5b6abf;">📥 30,592</span> </div> </div> <div class="rec-card"> <span class="badge-cat" style="margin-bottom:8px;display:inline-block;">security-compliance</span> <h3><a href="/s/skill-vetter">Skill Vetter</a></h3> <div class="rec-owner">spclaudehome</div> <div class="rec-desc">AI智能体技能安全预审工具。安装ClawdHub、GitHub等来源技能前,检查风险信号、权限范围及可疑模式。</div> <div class="rec-stats"> <span style="color:#f39c12;">★ 1,212</span> <span style="color:#5b6abf;">📥 266,256</span> </div> </div> </div> </div> </div> <script> document.addEventListener('DOMContentLoaded',function(){ document.querySelectorAll('.detail-tab').forEach(function(btn){ btn.addEventListener('click',function(e){ var tab = this.getAttribute('data-tab'); document.querySelectorAll('.detail-tab').forEach(function(b){b.classList.remove('active')}); document.querySelectorAll('.detail-content').forEach(function(c){c.classList.remove('active')}); this.classList.add('active'); var el = document.getElementById('tab-'+tab); if(el) el.classList.add('active'); }); }); }); </script> <div class="footer"> <p>Skill工具集 © 2026</p> </div></body> </html>