| title | Calendar commands |
|---|---|
| description | huly-cli commands for calendars, calendar events, and recurring events in your self-hosted Huly workspace. |
Calendars, calendar events, and recurring events.
huly calendar calendars # list calendars (NOT events)
huly calendar create-calendar --name "Work" [--description] [--private] [--access owner|team|public]
huly calendar delete-calendar <ref>
huly calendar list # list events
huly calendar get <eventRef> [--markdown] # events have --markdown body
huly calendar create --title "..." [--start ISO] [--end ISO] [--attendee email@...]
[--location] [--all-day] [--description] [--body <md>]
[--calendar-id <ref>] [--rrule "FREQ=DAILY;COUNT=3"]
huly calendar update <eventRef> [--title] [--start] [--end] [--attendee]
huly calendar delete <eventRef...> [--yes]
huly calendar recurring # list recurring event definitions
huly calendar recurring-instances <recRef> # list materialized instancesDate format: ISO 8601 with timezone, e.g.
2026-07-01T14:00:00Z. The CLI does not parse natural-language
dates — use date -u -d "..." or similar to generate.
RRULE format: iCalendar RFC 5545, e.g. FREQ=DAILY;COUNT=3,
FREQ=WEEKLY;BYDAY=MO,WE,FR. Use recurring-instances to see what
got materialized.
calendars vs get: confusingly, calendar get <ref> returns
events (not calendars). To fetch a calendar's metadata, use
calendar calendars --json and grep for _id.
--accessdefaults topubliconcreate-calendar(one ofowner/team/public).--privatedefaults tofalseoncreate-calendar.--durationdefaults to30minutes onschedule create.--intervaldefaults to15minutes onschedule create.--time-zonedefaults toUTC. For recurring events the RRULE is evaluated in the given TZ.blockTimedefaults tofalse— events don't block the user's calendar by default. Pass--block-timeto set.
--rruleis iCalendar RFC 5545. Server coercesBYDAY/BYMONTH/BYMONTHDAY/BYSETPOSto numeric arrays.- Recurring exceptions (EXDATE) are not implemented. The
upstream
RecurringEventmodel class is misspelledReccuringEventin the SDK; that class has noexdatesfield. Exception dates are silently ignored. There is no UI to skip a single occurrence. - Each materialized instance is a
RecurringInstanceclass (ReccuringInstancein the SDK) carryingrecurringEventId+originalStartTime. To list instances, query byrecurringEventId. WorkSlotvisibility mirrors back to the parentToDoand the derived calendar event whenWorkSlot.visibilitychanges.- Visibility mapping for Google sync:
transparency:transparent ↔ visibility:freeBusy; Hulyprivate ↔ Google private.
For more, see Platform behavior — Calendar.