README.md
Keywords: lm studio plugin, ai reminders, local alert system, proactive ai notifications, lm studio reminders, offline reminder ai, no cloud, no app required
Proactive reminders and follow-up surfacing inside LM Studio. Set time-based alerts from any chat session and have overdue reminders automatically surfaced at the start of the next session ā no separate app, no notifications to configure.
cd alerts-plugin npm install npm run build
Load the built plugin folder in LM Studio.
| Field | Default | Description |
|---|---|---|
| Data Path | ~/.lmstudio-alerts/ | Directory where alerts.json is stored |
| Inject Overdue Alerts | true | Prepend overdue/due-today alerts to every new chat session |
| Snooze Duration (minutes) | 30 | How far forward snooze pushes an alert |
Manage the full alert lifecycle.
| Action | Description |
|---|---|
set | Create a new alert. Requires message and due_at |
list | List alerts. Optional status filter: pending, snoozed, dismissed, all |
dismiss | Mark an alert as dismissed by id |
snooze | Push an alert forward by the configured snooze duration |
Parameters:
action ā set / list / dismiss / snoozemessage ā reminder text (for set)due_at ā when to fire: ISO string or natural language ("in 2 hours", "tomorrow", "2025-06-01T09:00")id ā alert ID (for dismiss / snooze)status ā filter for list actionShorthand for alert(action="set"). Accepts message and in_time (natural language duration).
remind(message="Follow up with recruiter", in_time="in 2 hours")
On every new chat session (first message only), the plugin checks for overdue or due-today alerts. If any exist, they are prepended to the user's first message:
[Alerts due now: ⢠"Follow up with recruiter" ā due 2 hours ago ⢠"Review PR #42" ā due today] <your message here>
The LLM sees this context and can surface the reminders in its response. Disable in plugin settings if you prefer manual checking.
Set a reminder:
"Remind me to follow up with the recruiter in 2 hours" ā
remind(message="Follow up with recruiter", in_time="in 2 hours")
Check what's pending:
"What alerts do I have?" ā
alert(action="list", status="pending")
Snooze something:
"Snooze that recruiter alert" ā
alert(action="snooze", id="<id>")
Dismiss after completing:
"Dismiss the PR review alert" ā
alert(action="dismiss", id="<id>")