agentrem
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@agentremshow me my high priority reminders"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
๐ agentrem
Structured reminders for AI agents. Persistent, searchable, works across sessions.
Instant Start
npx agentrem add "Deploy to prod" --due tomorrow --priority 2
npx agentrem check
npx agentrem listRelated MCP server: Selti
For AI Agents
Copy this into your CLAUDE.md / AGENTS.md (or run agentrem setup to generate it):
## Reminders
You have access to `agentrem` CLI for persistent reminders across sessions.
### On every session start, run:
agentrem check --type time,session --budget 800
### When the user says "remind me", "don't forget", "follow up", or "next time":
agentrem add "<content>" --due "<when>" --priority <1-5> --tags "<tags>"
### Key commands:
- `agentrem add` โ create a reminder
- `agentrem check` โ see what's triggered/due
- `agentrem check --watch` โ block until next reminder fires
- `agentrem list` โ list all active reminders
- `agentrem search <query>` โ full-text search
- `agentrem complete <id>` โ mark done
- `agentrem snooze <id> --for 2h` โ snooze
- `agentrem --help` โ full referenceMCP Server
For Claude Desktop and any MCP client โ add to ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"agentrem": {
"command": "agentrem-mcp",
"args": []
}
}
}No global install? Use npx:
{
"mcpServers": {
"agentrem": {
"command": "npx",
"args": ["-y", "agentrem", "mcp"]
}
}
}Run agentrem setup --mcp to print this config. MCP tools: add_reminder ยท check_reminders ยท list_reminders ยท search_reminders ยท complete_reminder ยท snooze_reminder ยท edit_reminder ยท delete_reminder ยท get_stats ยท get_history ยท undo_change ยท garbage_collect ยท export_reminders ยท import_reminders
All Commands
Command | Key Flags | Example |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| โ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| โ |
|
| โ |
|
--json is available on check, list, search, stats, history, doctor โ use it for structured output in your agent.
Trigger Types
Type | Fires when... | Key flags |
| Due datetime is reached |
|
| Message text matches |
|
| Shell command output matches |
|
| Every session start check | โ |
| Every heartbeat check | โ |
| Explicit | โ |
Priority Levels
Level | Label | Behavior |
1 | ๐ด Critical | Always surfaced |
2 | ๐ก High | Surfaced within 60% budget |
3 | ๐ต Normal | Surfaced within 85% budget |
4 | โช Low | Counted but not surfaced |
5 | ๐ค Someday | Skipped entirely |
Natural Language Dates
--due, --until, and --decay all accept natural language:
--due "now" # Immediately
--due "today" # Today at 23:59
--due "tomorrow" # Tomorrow at 09:00
--due "in 5 minutes"
--due "in 2 hours"
--due "in 3 days"
--due "in 1 week"
--due "+5m" # Short relative
--due "+2h"
--due "+3d"
--due "+1w"
--due "2026-04-01T09:00:00" # ISO datetime
--due "2026-04-01" # ISO datecheck --watch: Blocking Mode
agentrem check --watch blocks until the next due reminder fires. Useful for scripting, pipelines, or pausing an agent until something needs attention.
# Wait indefinitely for next reminder
agentrem check --watch
# Exit 1 if nothing fires within 5 minutes
agentrem check --watch --timeout 300
# Get the full reminder as JSON when it fires
agentrem check --watch --json
# Filter by trigger type and agent
agentrem check --watch --type time,heartbeat --agent jarvis --timeout 60Exit codes: 0 = reminder found (or SIGINT/SIGTERM), 1 = timeout elapsed with no reminder.
Note:
--watchdoes not update fire counts. Use a regularagentrem checkafter to actually mark reminders as fired.
Poll-then-act pattern:
if agentrem check --watch --timeout 120 --json > /tmp/due.json; then
echo "Reminder fired:"
cat /tmp/due.json
agentrem check # mark as fired
fiwatch --on-fire: Hooks
โ ๏ธ Security: The
--on-firecommand runs with your user's permissions. Only use trusted commands. Reminder data is passed via environment variables (never shell-interpolated) to prevent injection.
Execute a shell command whenever a reminder fires:
agentrem watch --on-fire "curl -X POST https://hooks.example.com/reminder"Reminder data is passed as environment variables (no shell injection โ data never interpolated into the command):
Variable | Description |
| Reminder ID |
| Reminder text |
| Priority (1-5) |
| Comma-separated tags |
| Context string |
| Due datetime |
| Number of times fired |
Fire-and-forget โ failures are logged to
~/.agentrem/logs/on-fire.log, never crash the watcherSequential โ multiple reminders process one at a time
Timeout: 5 seconds default, configurable with
--on-fire-timeout <ms>
Built-in presets โ skip the shell command entirely:
agentrem watch --on-fire-preset openclaw # auto-delivers to your OpenClaw agentOr craft your own:
agentrem watch --on-fire 'curl -X POST https://hooks.example.com/reminder -d "text=$AGENTREM_CONTENT"'Background Watcher
agentrem watch polls for due reminders and fires native OS notifications.
agentrem watch # Poll every 30s (foreground)
agentrem watch --interval 60 # Custom interval
agentrem watch --once # Single check and exit
agentrem watch --agent jarvis # Watch for a specific agent
agentrem watch --verbose # Show poll log
# Install as OS service (auto-start on boot)
agentrem watch --install
agentrem watch --install --interval 60
agentrem watch --status
agentrem watch --uninstallService files: macOS โ ~/Library/LaunchAgents/com.agentrem.watch.plist ยท Linux โ ~/.config/systemd/user/agentrem-watch.service ยท Logs โ ~/.agentrem/logs/watch.log
Native Notifications ๐
On macOS, agentrem ships a bundled Swift app (Agentrem.app) that runs as a singleton process โ notifications appear under "agentrem" with a bell icon.
Priority | Sound |
P1 ๐ด Critical | Hero |
P2 ๐ก High | Ping |
P3 ๐ต Normal | Pop |
Notification behavior:
Click body โ notification re-appears (won't dismiss until you act on it)
Complete โ โ marks reminder complete and dismisses (the only way to complete a fired reminder)
Multiple reminders โ single process handles all via IPC
Fallback chain:
Agentrem.appโterminal-notifierโosascriptโconsole
To rebuild the Swift app: npm run build:notify
Programmatic API
Use agentrem directly from JavaScript/TypeScript โ no CLI subprocess needed.
npm install agentremimport { add, check, list, complete, snooze, search, stats } from 'agentrem';
import type { Reminder } from 'agentrem';
// Add a reminder
const rem = await add('Review PR #42', { due: 'tomorrow', priority: 2, tags: 'pr,review' });
// Check for triggered reminders (session start pattern)
const { included, totalTriggered } = await check({ type: 'time,session', budget: 800 });
for (const r of included) {
console.log(`[P${r.priority}] ${r.content}`);
}
// List active reminders
const reminders = await list({ limit: 20 });
// Complete a reminder
const done = await complete(rem.id, 'Reviewed and merged');
// Snooze a reminder
const snoozed = await snooze(rem.id, { for: '2h' });
// Full-text search
const results = await search('deploy staging');
// Get statistics
const s = await stats();
console.log(`${s.totalActive} active, ${s.overdue} overdue`);All API functions are async and return full Reminder objects. The database is auto-initialized on first call (no manual init needed).
See llms-full.txt for complete type signatures and all options.
Why agentrem?
# vs flat files / memory.md
agentrem check --json # structured output your agent can parse; memory.md can't do thatPersistent across sessions โ SQLite-backed, survives restarts, not just in-context notes
Priority-aware + token budgets โ
check --budget 800fits within any context window without overflowTriggerable โ time, keyword, condition, session, heartbeat triggers; not just static lists
Blocking watch mode โ
check --watchlets agents pause until something needs attentionAgent-native โ
--jsoneverywhere,--agentnamespacing, MCP server for chat clients
Install
npm install -g agentremThe database auto-initializes on first use. Run agentrem setup to get your CLAUDE.md snippet, or agentrem setup --mcp for Claude Desktop.
MIT License
This server cannot be deployed
Maintenance
Related MCP Connectors
Persistent personal memory for AI assistants โ save, search, and recall across every MCP client.
An MCP memory server. One memory your agents share โ across models, devices and apps.
Persistent, portable memory for AI assistants โ your private memory graph, from any MCP client.
- mcpOAuthai.butlerbrain
Persistent memory for AI assistants. Save once; recall from Claude, ChatGPT, or any MCP client.
Related MCP Servers
- AlicenseAqualityCmaintenanceMCP server for long-term agent memory, providing persistent memory, searchable knowledge, and evolving identity for AI agents.53Apache 2.0
- FlicenseNot gradedqualityBmaintenanceA persistent memory server for AI agents using MCP protocol, enabling semantic storage and retrieval of dialogues, documents, and agent states.-
- FlicenseNot gradedqualityBmaintenanceMCP server providing a persistent, temporal memory brain for AI assistants, enabling cross-session recall of facts with relationships and temporal context.3-
- AlicenseNot gradedqualityCmaintenanceMCP server that provides AI agents with persistent memory, cross-agent sharing, and context management, enabling them to remember conversations, track complex tasks, and evolve skills across tools.2MIT