README.md
Keywords: lm studio plugin, calendar ai, local schedule assistant, macos calendar integration, ics file reader, free slot detection, offline calendar ai
Local calendar awareness for LM Studio. Query today's schedule, find upcoming events, search by keyword, and detect free slots ā using macOS Calendar.app or any .ics file. Today's events are optionally injected into every new chat session so the model always knows your schedule.
.ics file.ics files and want natural language access to themLoad the built plugin folder in LM Studio.
To grant Accessibility permission: System Settings ā Privacy & Security ā Accessibility ā allow LM Studio (or Terminal if running lms dev).
| Field | Default | Description |
|---|---|---|
| Calendar Source | macos | macos = Calendar.app via AppleScript; ics = parse an .ics file |
| ICS File Path | (blank) | Absolute path to .ics file. Used when source is ics |
| Default Days Ahead | 7 | How many days upcoming looks forward |
| Inject Today into Prompt | true | Prepend today's events to every new chat session |
Single tool with four actions.
All events for today (or a specific date).
Events in the next N days.
Find events matching a keyword in title or location.
Find free blocks of at least N minutes on a given day.
All actions share these parameters:
date ā ISO date string YYYY-MM-DD (default: today)days_ahead ā days to look ahead (upcoming only)keyword ā search term (search only)min_gap_minutes ā minimum free block size in minutes (free_slots only, default 30)When Inject Today into Prompt is enabled, the first message of every session gets prepended with today's events:
The LLM uses this to answer scheduling questions, suggest meeting times, or surface conflicts without you having to ask explicitly.
Morning briefing:
"What does my day look like?" ā
calendar(action="today")
Find time for a meeting:
"When am I free for an hour tomorrow?" ā
calendar(action="free_slots", date="2025-06-11", min_gap_minutes=60)
Upcoming travel:
"Do I have anything scheduled next week?" ā
calendar(action="upcoming", days_ahead=7)
Find a specific event:
"When is my dentist appointment?" ā
calendar(action="search", keyword="dentist")
cd calendar-plugin
npm install
npm run build
calendar(action="today")
calendar(action="today", date="2025-06-15")
calendar(action="upcoming")
calendar(action="upcoming", days_ahead=14)
calendar(action="search", keyword="standup")
calendar(action="search", keyword="dentist", date="2025-06-01")
calendar(action="free_slots")
calendar(action="free_slots", date="2025-06-16", min_gap_minutes=60)
[Today's calendar ā Tuesday, 2025-06-10:
⢠09:00ā10:00 Team standup (Conference Room A)
⢠14:00ā15:30 Design review
⢠17:00ā18:00 1:1 with manager]
<your message here>