Skip to main content

📅 Calendar

Schedule, track, and manage events — with AI that can plan for you.

Calendar is a built-in scheduling feature that gives every user a personal calendar. Create events, set recurring schedules, share calendars with teammates, and let AI models autonomously create and manage events through natural conversation.

Active Automations are automatically surfaced on a dedicated Scheduled Tasks calendar, so you get a unified view of both manual events and automated workflows in one place.

note

Calendar is enabled by default but can be disabled by an administrator via the ENABLE_CALENDAR environment variable or the Admin Panel toggle.


Why Calendar?

AI-powered scheduling

With native function calling enabled, models can search, create, update, and delete calendar events through natural language. Say "Schedule a standup every weekday at 9am" and the model handles it.

Automation integration

Active automations with RRULE schedules appear as virtual events on your Scheduled Tasks calendar. Past automation runs are shown as completed events with links to the generated chats.

Shared calendars

Share calendars with specific users or groups via access grants. Team members see shared events alongside their own.

Multi-calendar organization

Organize events across multiple calendars (e.g., "Personal", "Team Meetings") with color coding. Each user gets Personal and Scheduled Tasks calendars created automatically on first access.


Key Features

📅 Month/Week/Day viewsFull calendar UI with month, week, and day views
🔁 Recurring eventsRRULE-based recurrence (daily, weekly, monthly, custom)
🤖 Agentic managementModels can search, create, update, and delete events autonomously
Automation overlayActive automations and past runs surface as virtual calendar events
👥 Calendar sharingShare calendars with users or groups via access grants
📍 Location & descriptionAttach locations and rich descriptions to events
🎨 Color codingPer-calendar and per-event color customization
RSVP / AttendeesInvite users to events with pending/accepted/declined/tentative status
🔔 RemindersPer-event alerts via toast, browser notification, and webhook

Access Control

Calendar is permission-gated for non-admin users.

  • Admins: always have access to Calendar
  • Users: require the Features > Calendar permission

See RBAC Permissions for the permission category.

To grant user access:

  1. Open Admin Panel > Users > Groups
  2. Edit Default permissions or a specific group
  3. Enable Features > Calendar

You can also set this default via USER_PERMISSIONS_FEATURES_CALENDAR.


Getting Started

Access the Calendar

Open User Menu > Calendar from the sidebar. On first visit, two default calendars are created automatically:

Quick Access

Hold Shift in the User Menu to reveal pin/unpin buttons. Pinning Calendar adds a shortcut icon to the sidebar rail for one-click access.

  • Personal — your default calendar for manual events (blue, auto-created on first visit)
  • Scheduled Tasks — virtual read-only overlay of automation schedules and runs (purple, only visible when the user has Automations access)

Create an Event

  1. Click New Event (sidebar or top bar) or click any day/hour cell on the calendar grid
  2. Fill in the event details:
    • Title (required)
    • Calendar — which calendar to add the event to
    • When — date and time, or toggle All day
    • Location (optional)
    • Description (optional)
  3. Click Create

Edit or Delete an Event

Click any event on the calendar to open the event editor. From there you can update details or delete the event. Automation-generated virtual events cannot be edited directly — clicking them navigates to the automation or the run's chat.


Calendar Views

Switch between views using the dropdown in the top bar:

ViewDescription
MonthFull month grid with event chips. Events that overflow show a "+N more" link to the day view.
Week7-day time grid with hourly slots. Scroll vertically through the day.
DaySingle-day time grid with hourly slots for detailed scheduling.

Use the arrow buttons to navigate forward/backward, or click Today to jump to the current date. The mini calendar in the sidebar provides quick date navigation.


Automation Integration

The Scheduled Tasks calendar bridges the gap between automations and the calendar view. It is a virtual calendar — not stored in the database — that is synthesized at API response time whenever the user has access to the Automations feature.

Future runs

For each active automation with an RRULE schedule, the calendar computes upcoming occurrences and renders them as virtual events in the requested date range.

Past runs

Completed automation runs appear as historical events. Each shows the automation name and includes metadata linking to the generated chat (if available). Click a past run event to open the chat it created.

How it works

  • The virtual calendar uses a constant ID (__scheduled_tasks__) and is excluded from the event editor's calendar picker
  • Virtual events have IDs prefixed with auto_ (future) or run_ (past)
  • They cannot be edited or deleted from the calendar UI
  • Clicking a future run event navigates to the automation editor
  • Clicking a past run event navigates to the run's chat

Agentic Event Management

With native function calling enabled, models can manage your calendar autonomously:

ToolWhat it does
search_calendar_eventsSearch events by text and/or date range across all accessible calendars
create_calendar_eventCreate a new event on the default or specified calendar
update_calendar_eventUpdate an event's title, time, description, location, or cancel it
delete_calendar_eventDelete an event permanently

You: Schedule a team standup every weekday at 9am starting next Monday.

You: What do I have on my calendar this week?

You: Move tomorrow's design review to 3pm and add Building A as the location.

Requirements

For chat-based calendar tools to be available:

  1. Native Function Calling must be enabled for the model
  2. Builtin Tools capability must be enabled for the model
  3. Calendar category must be enabled in the model's Builtin Tools settings (enabled by default)
  4. ENABLE_CALENDAR must be enabled globally (enabled by default)
  5. The user must have the Features > Calendar permission (admins always pass)

All datetime values are automatically handled in the user's detected timezone.

See the Builtin Tools reference for full details on all builtin tools.


Sharing Calendars

Calendars support the same access grant system used by knowledge bases, models, and other resources.

Share a calendar

  1. Open the calendar's settings (via the calendar list or edit endpoint)
  2. Add access grants for specific users or groups with read or write permission

What shared access provides

PermissionEffect
ReadSee the calendar and its events
WriteRead + create, update, and delete events on the calendar

Only the calendar owner (or an admin) can manage access grants and delete the calendar itself.


Attendees and RSVP

Events support attendees with RSVP tracking:

StatusMeaning
pendingInvitation sent, no response yet
acceptedAttendee confirmed attendance
declinedAttendee declined
tentativeAttendee is uncertain

Attendees can update their own RSVP status via the API. Events where a user is an attendee are visible regardless of calendar ownership.


Reminders & Alerts

Each event has a Reminder setting that controls when an alert fires before the event starts.

OptionBehavior
NoneNo alert
At time of eventAlert when the event starts
5 / 10 / 15 / 30 minutes beforeAlert that many minutes ahead
1 hour beforeAlert 60 minutes ahead

The default is 10 minutes before.

How alerts are delivered

  1. Toast notification — appears in the Open WebUI UI with the event title and time remaining. Clicking the toast navigates to the Calendar.
  2. Browser notification — if browser notifications are enabled in user settings, a native OS notification is shown.
  3. Webhook — if the user has a webhook URL configured in Settings > Notifications, a calendar_alert payload is sent.

Alerts are de-duplicated server-side via meta.alerted_at, so each event fires at most once per start time — even across restarts and multi-instance deployments.

The global alert polling window is configurable via CALENDAR_ALERT_LOOKAHEAD_MINUTES (default: 10 minutes).


Configuration

VariableDefaultDescription
ENABLE_CALENDARTrueEnable or disable the Calendar feature globally
USER_PERMISSIONS_FEATURES_CALENDARTrueEnable or disable Calendar access for non-admin users by default
SCHEDULER_POLL_INTERVAL10Seconds between scheduler ticks (shared with automations)
CALENDAR_ALERT_LOOKAHEAD_MINUTES10Default alert window in minutes for upcoming events

Calendar can also be toggled from Admin Panel > Settings > General under the Features section.


Limitations

No external calendar sync

Calendar is currently a standalone feature within Open WebUI. It does not sync with Google Calendar, Outlook, or other external calendar services via CalDAV/iCal.

Scheduled Tasks calendar is virtual and read-only

The Scheduled Tasks calendar is generated at runtime and is not stored in the database. Its events cannot be edited or deleted from the calendar UI. Manage the underlying automations from the Automations page instead.

Recurring event expansion

Recurring events are expanded server-side at query time. Very complex RRULE patterns or extremely long date ranges may increase response time.

This content is for informational purposes only and does not constitute a warranty, guarantee, or contractual commitment. Open WebUI is provided "as is." See your license for applicable terms.