daymark is a macOS command-line tool for reading Apple Calendar data from the terminal.
It is intentionally small and local-first:
- no server process
- no external calendar sync service
- direct access to Apple Calendar through
EventKit - a modular Swift codebase meant to be easy to learn from and extend
This project is also a Swift learning exercise, so the code favors clear boundaries over clever abstractions.
Today, daymark can:
- report its own version
- inspect Apple Calendar authorization state
- request Apple Calendar access
- list calendars
- list events in a date range
- search events by text in a date range
- output either human-readable terminal formatting or JSON
The human-readable output is styled for the terminal and uses table formatting where it helps readability.
- macOS
- Swift toolchain / Xcode with
swift buildandswift testavailable - Apple Calendar access when using the live commands
Build the project:
swift buildCheck authorization:
swift run daymark auth statusCheck the CLI version:
swift run daymark --versionRequest access:
swift run daymark auth grantList calendars:
swift run daymark calendars listList events:
swift run daymark events list --from 2026-04-01 --to 2026-04-07Search events:
swift run daymark events search --query dentist --from 2026-04-01 --to 2026-04-30Inspect or request Apple Calendar permissions.
swift run daymark auth status
swift run daymark auth grantOptional flags:
--jsonfor machine-readable output
swift run daymark --versionList calendars visible through Apple Calendar.
swift run daymark calendars list
swift run daymark calendars list --jsonList or search events in a date range.
swift run daymark events list --from 2026-04-01 --to 2026-04-07
swift run daymark events list --from 2026-04-01 --to 2026-04-07 --calendar Work
swift run daymark events search --query design --from 2026-04-01 --to 2026-04-30
swift run daymark events search --query design --from 2026-04-01 --to 2026-04-30 --jsonSupported event flags:
--fromrange start in ISO-8601 orYYYY-MM-DD--torange end in ISO-8601 orYYYY-MM-DD--calendarone or more calendar IDs or exact titles--querysearch text forevents search--jsonfor machine-readable output
daymark currently supports two output styles:
- human-readable terminal output
- JSON output via
--json
Human-readable output uses:
- colored authorization state
- table output for calendar lists
- styled event summaries with local date/time formatting
JSON output is useful for scripting or piping into other tools.
This repo includes a small just task runner configuration in justfile.
Available recipes:
just build— build the CLI in debug modejust test— run the SwiftPM test suitejust check— clean and run the test suitejust run -- ...— pass arbitrary arguments through todaymarkjust clean— remove the default SwiftPM build directory
Examples:
just build
just test
just run -- auth status
just run -- calendars list
just run -- events list --from 2026-04-01 --to 2026-04-07Project tasks are tracked locally with td.
Current tracked tasks:
td-0d8550Improve event output formatting Status:in_progresstd-b9e9f1Add calendars get command Status:opentd-35dcc1Add events get command Status:opentd-ac8177Introduce app-specific error model Status:opentd-8c2a89AddCalendarProvidertest double Status:open
You can inspect them directly with:
td show td-0d8550 td-b9e9f1 td-35dcc1 td-ac8177 td-8c2a89Or view the ready queue:
td readyThe package is split into three primary targets:
AppOwns CLI parsing, command definitions, and terminal outputCoreOwns models, shared parsing, and app-facing protocolsAppleCalendarOwns theEventKitintegration layer
That separation is intentional:
Coredoes not know aboutEventKit- Apple-specific details stay in one target
- future backends, like Google Calendar, can hang off the same provider boundary
- The default SwiftPM build directory is
.build/ - alternate scratch builds such as
.build-validation/are ignored through the.gitignorepattern/.build*/ - todos are tracked locally in
.todos/and are not committed
Likely next improvements:
calendars getevents get- a small app-specific error model
- a provider test double for command testing
- eventually, event creation and update flows
daymark is usable as an MVP read-focused Apple Calendar CLI, but it is still early-stage.
The project is at the point where the architecture is stable enough to extend, while the command surface is still intentionally small.