- Two connection modes: EventKit (local macOS only) and CalDAV (works remotely via iCloud).
- macOS requires explicit privacy permission — without it, the skill returns empty data silently.
- iCloud CalDAV needs an app-specific password, not your Apple ID password.
- Events, reminders, and attendees are all supported across all connected Apple devices.
- As of early 2025, the skill handles Handoff-compatible events that appear across macOS, iOS, and watchOS.
Apple Calendar is the calendar most Mac users actually keep up to date — because it's built in, syncs instantly, and connects to every Apple device they own. That makes it the highest-value target for scheduling automation. Get OpenClaw talking to it, and you've automated the calendar that actually runs your day.
EventKit vs CalDAV — Which Mode Should You Use?
The OpenClaw Apple Calendar skill offers two fundamentally different connection modes. Choosing the wrong one causes hours of debugging. Here's what each does:
EventKit mode uses macOS's native calendar framework. It reads and writes events directly on your Mac, with no network calls to iCloud — the OS handles sync automatically. Fast, private, and simple. Limitation: OpenClaw must run on the same Mac. No remote server setups.
CalDAV mode connects directly to iCloud's calendar server using the standard CalDAV protocol. Works from any machine where OpenClaw runs — a Linux server, a VPS, or a Docker container. Requires an app-specific password. Slightly more setup, significantly more flexible.
The mistake most people make is starting with CalDAV when EventKit would work fine. If you're running OpenClaw on your Mac and just want AI-assisted scheduling, use EventKit. Save yourself the iCloud credential setup.
If OpenClaw runs on your Mac, EventKit is faster and simpler. Switch to CalDAV only if you need remote access or run OpenClaw on a server.
Install the Apple Calendar Skill
# Install the Apple Calendar skill
openclaw skills install apple-calendar
# Confirm it's available
openclaw skills list | grep apple-calendar
# → apple-calendar v1.1.4 productivity enabled
On macOS, the install also registers a background helper that manages EventKit permissions. Don't skip the post-install step it prompts you to run.
Grant macOS Privacy Permissions
This is the step that trips up 80% of first-time setups. macOS requires explicit calendar access permission for every app. OpenClaw is no different.
Go to Apple menu → System Settings → Privacy & Security → Calendars. You'll see a list of apps that have requested access.
Toggle the switch next to OpenClaw (or the openclaw CLI, depending on your install method) to the On position. If OpenClaw isn't listed, run a skill test command first to trigger the permission request dialog.
If OpenClaw doesn't appear in the list, run openclaw skills test apple-calendar from Terminal. macOS will display a permission dialog. Click Allow. Then check System Settings again — it should now be listed.
If calendar permission is denied or not granted, EventKit mode returns empty event lists with no error. The skill appears to work but returns nothing. Always verify permission is on before debugging anything else.
iCloud CalDAV Setup
For CalDAV mode, you need an app-specific password from Apple. Your regular Apple ID password is deliberately blocked from CalDAV access.
# Generate app-specific password at appleid.apple.com
# Under Security → App-Specific Passwords → Generate
# Configure CalDAV in OpenClaw
openclaw skills configure apple-calendar \
--mode caldav \
--caldav-url "https://caldav.icloud.com" \
--username "your@icloud.com" \
--password-env APPLE_CALDAV_PASSWORD
# Set the env variable (never hardcode passwords)
export APPLE_CALDAV_PASSWORD="xxxx-xxxx-xxxx-xxxx"
# Test the connection
openclaw skills test apple-calendar
# → Connected. Found 4 calendars: Personal, Work, Family, Holidays
Configuration Reference
# ~/.openclaw/skills/apple-calendar/config.yaml
apple_calendar:
mode: "eventkit" # eventkit | caldav
caldav:
url: "https://caldav.icloud.com"
username: "your@icloud.com"
password: "${APPLE_CALDAV_PASSWORD}"
default_calendar: "Personal" # calendar name (not ID)
calendars:
- name: "Personal"
write: true
- name: "Work"
write: true
- name: "Family"
write: false
timezone: "America/Los_Angeles"
create_reminders: true
default_alert_minutes: 15
conflict_action: "prompt"
Real Automation Examples
Example 1: Voice-to-Calendar
Tell your OpenClaw agent "block tomorrow morning for deep work, 9 to noon, no interruptions." The agent creates the event, sets it as busy, and adds a reminder 10 minutes before. No app switching. No typing dates and times.
Example 2: Deadline Tracker
Your agent monitors a shared Notion database. When a new task is added with a due date, it creates a calendar event three days before the deadline labeled "Start: [task name]" and another on the actual due date. Your calendar becomes a live project tracker automatically.
Example 3: Weekly Time Blocking
Every Sunday at 8 PM, the agent reviews next week's meetings, calculates available deep work windows, and fills them with focus blocks. It adapts to changes — if a meeting moves, the focus blocks rebalance automatically.
Enable create_reminders: true to have the agent also add entries to the Apple Reminders app. This gives you task-style notifications alongside calendar events — particularly useful for deadline tracking.
Common Mistakes
Using the wrong calendar name. Apple Calendar uses display names, not IDs. If your calendar is named "Work Calendar" in the app, use exactly that string in the config. Case matters.
Running EventKit from a server. EventKit calls fail completely when OpenClaw isn't on a Mac with the Calendar app installed. The error message isn't always obvious. If you see EventKit errors on a Linux host, switch to CalDAV mode.
Not rotating app-specific passwords. Apple app-specific passwords don't expire automatically, but if you revoke and regenerate your Apple ID credentials, any existing app passwords stop working. Update the environment variable and test immediately after any Apple ID security change.
Frequently Asked Questions
Does the OpenClaw Apple Calendar skill work on iOS?
The skill connects to iCloud Calendar via CalDAV, so events sync to all Apple devices including iPhone and iPad automatically. The skill itself runs on your Mac or server, but calendar changes propagate instantly across your Apple ecosystem.
Can OpenClaw access iCloud-synced calendars?
Yes. Using the CalDAV connector, OpenClaw authenticates with iCloud and can read and write events across any calendar synced there. You need an app-specific password from Apple ID settings — your main Apple ID password won't work.
What is the difference between EventKit and CalDAV mode?
EventKit mode works directly on macOS without additional auth setup but requires the skill to run locally on your Mac. CalDAV mode connects to iCloud remotely, useful if OpenClaw runs on a server. EventKit is faster for local setups.
Does OpenClaw Apple Calendar support reminders?
Yes. The skill can create reminders alongside calendar events. Reminders sync to the Apple Reminders app. Specify reminder timing in your agent instructions — for example, '15 minutes before' or 'on the day of at 8 AM'.
How do I give OpenClaw calendar access on macOS?
macOS requires explicit privacy permission. Go to System Settings → Privacy & Security → Calendars and toggle OpenClaw on. Without this permission, the EventKit connector returns empty results with no error message, which is confusing.
Can I use this skill without an iCloud account?
Yes. If your calendars are local or synced via Google or Exchange, use CalDAV mode with those server URLs. The skill is not locked to iCloud — any CalDAV-compatible calendar server works including Nextcloud and Fastmail.
R. Nakamura covers Apple ecosystem integrations for OpenClaw. He runs a fully automated scheduling setup across macOS, iOS, and iPadOS, and has debugged more EventKit permission issues than he cares to count.