Loading...
Loading...
Sync and query CalDAV calendars (iCloud, Google, Fastmail, Nextcloud, etc.) using vdirsyncer + khal. Works on Linux.
npx skill4agent add sundial-org/awesome-openclaw-skills caldav-calendar.icsvdirsyncer synckhal list # Today
khal list today 7d # Next 7 days
khal list tomorrow # Tomorrow
khal list 2026-01-15 2026-01-20 # Date range
khal list -a Work today # Specific calendarkhal search "meeting"
khal search "dentist" --format "{start-date} {title}"khal new 2026-01-15 10:00 11:00 "Meeting title"
khal new 2026-01-15 "All day event"
khal new tomorrow 14:00 15:30 "Call" -a Work
khal new 2026-01-15 10:00 11:00 "With notes" :: Description goes herevdirsyncer synckhal editkhal edit "search term"
khal edit -a CalendarName "search term"
khal edit --show-past "old event"sdtlDnqvdirsyncer synckhal editDkhal list --format "{start-date} {start-time}-{end-time} {title}" today 7d
khal list --format "{uid} | {title} | {calendar}" today{title}{description}{start}{end}{start-date}{start-time}{end-date}{end-time}{location}{calendar}{uid}~/.local/share/khal/khal.dbrm ~/.local/share/khal/khal.db~/.config/vdirsyncer/config[general]
status_path = "~/.local/share/vdirsyncer/status/"
[pair icloud_calendar]
a = "icloud_remote"
b = "icloud_local"
collections = ["from a", "from b"]
conflict_resolution = "a wins"
[storage icloud_remote]
type = "caldav"
url = "https://caldav.icloud.com/"
username = "your@icloud.com"
password.fetch = ["command", "cat", "~/.config/vdirsyncer/icloud_password"]
[storage icloud_local]
type = "filesystem"
path = "~/.local/share/vdirsyncer/calendars/"
fileext = ".ics"https://caldav.icloud.com/google_calendarhttps://caldav.fastmail.com/dav/calendars/user/EMAIL/https://YOUR.CLOUD/remote.php/dav/calendars/USERNAME/~/.config/khal/config[calendars]
[[my_calendars]]
path = ~/.local/share/vdirsyncer/calendars/*
type = discover
[default]
default_calendar = Home
highlight_event_days = True
[locale]
timeformat = %H:%M
dateformat = %Y-%m-%dvdirsyncer discover # First time only
vdirsyncer sync