Your Calendar.
From the terminal.

A blazing fast CLI for macOS Calendar — built for humans and AI agents alike. Powered by go-eventkit.

Terminal
$ |

Designed for how you work

Manage your macOS Calendar entirely from the command line.

3000x Faster Reads

Same API Calendar.app uses internally — not AppleScript, not IPC. Sub-millisecond reads across thousands of events.

Single Binary

EventKit compiled in via cgo. No runtime dependencies. Ship it, script it, call it from an agent — it just works.

Natural Language Dates

"tomorrow at 3pm", "next friday", "in 2 hours", "eod" — a built-in parser understands 20+ date patterns.

Interactive Mode

Guided forms for creating and editing events. Searchable event picker for quick selection without memorizing IDs.

Import & Export

JSON, CSV, and ICS export. JSON and CSV import with dry-run preview. Back up or migrate your calendar data.

Full CRUD + Recurrence

Create, read, update, and delete events. Daily, weekly, monthly, yearly recurrence with flexible day selection.

Agent-ready

Built for agents,
not just humans.

Most CLI tools weren't designed to be called by an AI. ical was. Every command outputs structured JSON. Event IDs are stable across calls. Natural language dates work exactly like they would if you typed them yourself.

Claude Code Codex CLI OpenClaw
claude code — ~/projects
> block tomorrow 9–10am for deep work, then 3–4pm for 1:1 with Priya
Sure, adding both blocks now.
Bash(ical add "Deep work" --start "tomorrow 9am" --end "tomorrow 10am")
Event created: Deep work · Tue 25 Feb · 09:00–10:00
Bash(ical add "1:1 Priya" --start "tomorrow 3pm" --end "tomorrow 4pm")
Event created: 1:1 Priya · Tue 25 Feb · 15:00–16:00
Done. Both events added to your calendar.
> what does the rest of my week look like?
Bash(ical list --from today --to "in 5 days" --format json)
Read 1 file (ctrl+o to expand)
You have 8 events. Busy Wednesday — 3 back-to-back meetings from 10am. Friday afternoon is clear.
>

Common questions

What is ical?

ical is an open-source command-line interface for macOS Calendar. It lets you create, list, update, delete, search, and export events directly from your terminal — with near-native performance via Apple's EventKit framework.

How do I install ical?

The fastest way is the install script:

curl -fsSL https://ical.sidv.dev/install | bash

Alternatively, if you have Go and Xcode CLT installed: go install github.com/BRO3886/ical/cmd/ical@latest

Why is ical faster than AppleScript?

ical uses go-eventkit, which bridges directly to Apple's EventKit framework via cgo and Objective-C — the same API Calendar.app uses internally. This gives direct in-process memory access to the calendar store with no IPC overhead. AppleScript sends Apple Events across a process boundary per property per event, making it roughly 3000× slower for large calendars.

Does ical work with iCloud calendars?

Yes. ical accesses everything synced to your local macOS Calendar store — iCloud calendars, local calendars, Exchange, Google, and any other accounts configured in Calendar.app. All commands work across all calendar sources.

What macOS versions are supported?

ical requires macOS 10.12 (Sierra) or later. On first run, macOS will prompt you to grant Calendar access in System Settings → Privacy & Security → Calendars. It does not work on Linux or Windows.

Can I use ical in scripts and automation?

Yes. Every command supports -o json for machine-readable output, making ical easy to pipe into tools like jq. The ical export command produces JSON, CSV, or ICS dumps. The --id flag on show, update, and delete enables safe scripting with stable event IDs.

How do I add ical to an AI coding agent?

Run ical skills install to copy the embedded agent skill to your agent's skill directory. Supports Claude Code (~/.claude/skills/), Codex CLI (~/.agents/skills/), and OpenClaw (~/.openclaw/skills/). The skill teaches the agent all commands, date formats, and output options.

Install in seconds

One command. No dependencies.

Recommended
$ curl -fsSL https://ical.sidv.dev/install | bash
Downloads the latest release binary and installs to /usr/local/bin.
Requires Go 1.21+ & Xcode CLT
$ go install github.com/BRO3886/ical/cmd/ical@latest
Compiles from source via cgo. Needs Xcode CLT for EventKit framework headers.
Apple Silicon
$ curl -LO https://github.com/BRO3886/ical/releases/latest/download/ical-darwin-arm64.tar.gz tar xzf ical-darwin-arm64.tar.gz sudo mv ical /usr/local/bin/ical
Replace arm64 with amd64 for Intel Macs.