Skip to content
BeeuniBeeuni
English
Esc
↑↓navigate↵open⌘Jpreview
On this page

Reminders

A reminder re-prompts one session later, once or on repeat, until you remove it.

A reminder sends a prompt into one existing session at a time you set. It fires once, or it repeats until someone removes it. An agent uses a reminder to check back on its own work: “in 24 hours, check whether the vendor replied”, “every hour, check whether the deploy is green”.

A reminder is a trigger scoped to one session. The differences:

Trigger Reminder
Stored in beeuni.yaml, committed to the default branch The database. No manifest edit, no commit.
A fire Usually starts a new session Prompts its one session. It never starts a session.
Lifetime Until someone removes it from the manifest Until someone removes it. It pauses itself when its session is deleted or failed.
Who can create it Project managers (project.trigger.create) Anyone who can prompt the session. An agent can create one only on its own session.
Listed by beeuni triggers ls, the Triggers page beeuni reminders ls, per session

Use a trigger for project work anyone should see, such as a daily digest. Use a reminder for a follow-up that belongs to one task.

Turn reminders on

Reminders are a per-project feature flag, reminders, off by default. Turn it on in Settings → Feature flags, or:

beeuni projects features enable reminders

While the flag is off, every reminder route answers 403 with code: "feature_disabled", the Reminders page shows how to turn it on, and existing reminders do not fire. Turning the flag back on fires a slot missed while it was off once, then the schedule continues.

Set a reminder

Inside a session, the CLI targets the current session. Outside one, pass --session <id>.

# Fire once, 24 hours from now.
beeuni remind "Check whether the vendor replied to the contract email." --in 24h

# First fire in 24 hours, then every hour until removed.
beeuni remind "Did the vendor reply? If yes, summarize it and remove this reminder." --in 24h --every 1h

# Fire at an exact instant.
beeuni remind "Post the launch checklist to #launch." --at 2026-10-01T09:00:00Z

# Repeat on a cron expression in a time zone.
beeuni reminders add "Post the standup summary." --cron "0 0 9 * * 1-5" --timezone Europe/Berlin

The command prints the reminder id, for example reminder.3f9a1c2e7b04, and its next fire time.

Schedule rules

  • --in <duration> or --at <ISO-8601> sets the first fire. Alone, the reminder fires once.
  • --every <duration> repeats. The minimum period is 5m. Each period starts when the previous fire is claimed.
  • --cron "<expr>" repeats on a 6-field cron expression (seconds first). --timezone sets its zone; the default is UTC. A cron reminder must fire at most once every 5 minutes. It does not take --in or --at.
  • Durations are 30m, 24h, 2d, or whole seconds.
  • --in, --at, and --every accept at most 366 days.
  • A session holds at most 20 active reminders. A project holds at most 200. Either limit returns 409.

What a fire does

Each fire queues the reminder text into the session as a prompt that starts with a header:

[REMINDER reminder.3f9a1c2e7b04 — recurring scheduled check-in on this session, not a new user message. When it is no longer needed, run `beeuni reminders rm reminder.3f9a1c2e7b04`.]

Did the vendor reply? If yes, summarize it and remove this reminder.
  • A parked session wakes up. The agent has the session’s full conversation and workspace.
  • A fire never starts a new session. If the session is deleted or failed, the fire pauses the reminder and records the reason in last_error.
  • A fire keeps the session’s personal connections, such as a member’s own Gmail. Setting a reminder on a session you are not acting for clears them, the same as sending that session a prompt.
  • The project-wide trigger pause (beeuni triggers pause) also stops reminders.

Every fire is a model turn. Remove a recurring reminder as soon as its condition is met.

Failure alerts

Failure alerts need the project’s notification_center flag. See Turn notifications on. With it off, a failing reminder sends no alert.

When a reminder fire fails for good, Beeuni sends one alert to the person who set the reminder, and one more when a fire works again. This includes a fire that pauses the reminder because its session is gone. When an agent sets a reminder from its session, the person the agent acts for gets the alerts. When that person can no longer get them, the project managers who can open the reminder’s session get them instead. When the session is deleted, only the person who set the reminder can get them.

An alert is a notification. It opens the project’s Reminders page. Reminders follow the trigger rules for when an alert fires and how to stop it. See Triggers → Alerts.

Manage reminders

Command Effect
beeuni reminders ls [--json] List the session’s reminders: id, state, schedule, next fire, text.
beeuni reminders pause <id> Stop firing. Keep the reminder.
beeuni reminders resume <id> Fire again, re-armed from now. A one-shot reminder that already fired stays done.
beeuni reminders rm <id> Delete the reminder. Aliases: stop, delete.

A reminder is active (scheduled), paused (off), or done (a one-shot reminder that fired).

API and SDK

The routes are session-scoped:

Route Effect
GET /v1/projects/:projectId/sessions/:sessionId/reminders List reminders.
POST /v1/projects/:projectId/sessions/:sessionId/reminders Create one. Body: prompt, optional name, and every, cron + timezone, at, or in. Returns 201.
PATCH /v1/projects/:projectId/sessions/:sessionId/reminders/:reminderId Body { "enabled": false } pauses, { "enabled": true } resumes.
DELETE /v1/projects/:projectId/sessions/:sessionId/reminders/:reminderId Delete one.

An invalid schedule returns 400 with the reason. A deleted session returns 409. An agent credential that names another session returns 403.

const reminders = beeuni.session(projectId, sessionId).reminders;
const reminder = await reminders.create({ prompt: 'Did the vendor reply?', in: '24h', every: '1h' });
await reminders.update(reminder.id, { enabled: false });
await reminders.remove(reminder.id);

Was this page helpful?