Real-time global intelligence dashboard. AI-powered news aggregation, geopolitical monitoring, and infrastructure tracking in a unified situational awareness interface
MCP memory server for Claude Code and Cursor
Remind gives agents a persistent memory layer for episodes, concepts, and facts. You write memories with the CLI or MCP tools, then read them back with semantic recall, snapshots, and an event feed so the agent can stay grounded without re-explaining context.
Builders who want their agent to keep useful project memory between turns and sessions.
You can capture project facts once and have your agent recall, review, and curate them later instead of starting from scratch.
What it does
CLI memory capture and recall
Use `remember`, `recall`, `snapshot`, and `apply` to write, search, and batch-edit memory from the terminal.
MCP tools for agent apps
Expose `remember`, `recall`, `snapshot`, `apply`, and conflict tools through an MCP server for IDE and desktop agents.
Temporal facts and collisions
Track validity windows for facts, detect contradictions, and return ready-to-paste `apply` commands when memories clash.
Concept and episode curation
Turn episodes into concepts with `apply`, then link evidence, reshape concepts, merge overlaps, and split mixed ideas.
Change feed and bootstrap snapshot
Poll `remind events` for append-only updates and use `snapshot bootstrap` for a stable context block with no query step.
Skills for agent workflows
Install `remind-capture`, `remind-context`, and `remind-curate` to teach agents when to store, recall, and process memory.
Local-first storage and embeddings
Use SQLite by default with local embeddings, or switch to PostgreSQL, MySQL, OpenAI embeddings, and reranking providers.
Web UI and docs
Browse memory, concepts, entities, and conflicts in the UI and read the guide and reference docs in the built site.
How to get it
- 1Run
pip install remind-mcp
- 2No configuration required — Remind uses local embeddings by default (fastembed, no API…
remind remember "This project uses React with TypeScript" remind remember "Chose PostgreSQL for the database" -t decision remind remember "Cache TTL is 600 seconds" -t fact -e concept:caching remind recall "What tech stack are we using?"
README
Remind
Agent-driven memory layer for LLMs. Remind is a deterministic memory substrate with temporal facts, semantic retrieval, and structured curation — the calling agent is the only intelligence.
Documentation · Examples · Changelog

Quick start
pip install remind-mcp
No configuration required — Remind uses local embeddings by default (fastembed, no API key).
remind remember "This project uses React with TypeScript"
remind remember "Chose PostgreSQL for the database" -t decision
remind remember "Cache TTL is 600 seconds" -t fact -e concept:caching
remind recall "What tech stack are we using?"
How it works
Remind stores episodes (raw experiences) and concepts (generalized knowledge). You capture and curate memories explicitly using CLI commands or MCP tools.
For facts (-t fact), Remind automatically:
- Creates a
Factrow with validity tracking - Assigns it to a cluster based on entity overlap (Jaccard similarity)
- Detects potential collisions with existing facts — same-cluster collisions and cross-cluster related facts are returned with ready-to-paste
applycommands
For any remember call, the output also surfaces the top-5 nearest episodes and concepts semantically, so you can catch contradictions before they go unnoticed.
For patterns and concepts, you use remind apply to create them from episodes:
remind apply << 'EOF'
concept from=ep:11,ep:12 title="Retry-with-backoff for resilience" "Exponential backoff resolves flaky deploys and API timeouts."
processed ids=ep:11,ep:12
EOF
Two batch tools
remind snapshot — Read state
remind snapshot stats pending conflicts health # Full overview
remind snapshot entity:concept:caching # Everything about an entity
remind snapshot concept:abc123 # Concept detail with history
# Browse scopes (for exploring memory)
remind snapshot concepts # All concepts
remind snapshot episodes:20 # Recent 20 episodes
remind snapshot entities:person # Entities filtered by type
remind snapshot labels # All labels with counts
remind snapshot decisions questions # Episodes by type
remind snapshot bootstrap # Query-free stable context
Returns JSON. Combinable scopes:
| Scope | Description |
|---|---|
pending | Unprocessed episodes with their entities |
conflicts[:<status>] | Open conflicts (or resolved/dismissed/all) |
health | Actionable issues: pending episodes, open conflicts, orphan concepts |
stats | Memory statistics |
concepts[:<n>] | All concepts (default 50) |
episodes[:<n>] | Recent episodes (default 20) |
entities[:<type>] | All entities with mention counts, filterable by type |
labels | All distinct key/value labels in use, with counts |
decisions[:<n>] | Recent decision episodes |
questions[:<n>] | Recent question episodes |
entity:<id> | Episodes and concepts for a specific entity |
label:<key>=<value> | All episodes and concepts carrying a label |
concept:<id> | Concept detail with facts and supersession history |
recent:<n> | N most recent episodes |
query:<text> | Semantic search results |
events[:<since_seq>] | Change-feed events with seq > since_seq (default 0). Prefer remind events. |
bootstrap[:<n>] | Query-free stable context: top-n actionable concepts by confidence + open conflicts + stats (default 10) |
remind events — Poll the change feed
remind events # All events from the start
remind events --since 42 # Only events after seq 42
remind events --kind conflict_opened --since 42
Every write (remember, supersede, conflict, resolve, dismiss, concept, update, label, unlabel, delete, restore, processed) appends an append-only row atomically with the write it describes. Returns {since_seq, count, events, next_since_seq} — pass next_since_seq back in as --since on the next poll instead of re-scanning snapshot pending.
remind apply — Write changes
remind apply << 'EOF'
remember as=f1 t=fact e=concept:cache "Cache TTL is 600 seconds"
supersede old=fact:old123 new=$f1
concept as=c1 from=ep:1,ep:2 title="Pattern name" "Summary"
evidence concept=$c1 episode=ep:3 type=supports strength=0.8 "confirms pattern"
resolve id=conflict:7 winner=fact:abc "confirmed by alice"
processed ids=ep:1,ep:2
EOF
All operations run in a single transaction. --dry-run validates without executing.
Operations:
| Op | Description |
|---|---|
remember | Store episode (same params as CLI remember) |
supersede old=<fact> new=<fact> | Replace old fact — auto-records resolved conflict |
conflict fact_a=<id> fact_b=<id> | Flag contradiction for triage |
resolve id=<conflict> winner=<fact> | Resolve conflict; losing fact is superseded |
dismiss id=<conflict> | Dismiss conflict (both facts stay active) |
concept from=<eps> title="..." "summary" | Create concept from episodes |
link from=<concept> to=<concept> type=<relation> | Add concept relation |
evidence concept=<id> episode=<id> type=<supports|contradicts|qualifies> | Link episode evidence to concept |
unlink concept=<id> episode=<id> | Remove evidence link |
entity_relation source=<id> target=<id> relation=<type> | Create entity graph edge |
reshape id=<concept> type=<new_type> | Change concept type |
merge from=<id1>,<id2> into=<new_id> | Combine overlapping concepts |
split id=<concept> into=<id1>,<id2> | Separate distinct concerns |
update id=<id> [field=value...] | Update episode or concept fields |
label id=<id> key=<key> value=<value> | Add a key=value label to episode/concept |
unlabel id=<id> key=<key> value=<value> | Remove a key=value label from episode/concept |
delete id=<id> / restore id=<id> | Soft delete / restore |
processed ids=<ep1>,<ep2> | Mark episodes as reviewed |
Agent skills
Install skills to teach AI agents how to use Remind:
remind skill-install
Three skills:
- remind-capture — When and how to write memories (includes decision tree and entity type guide)
- remind-context — When and how to recall before acting (includes output interpretation guide)
- remind-curate — How to process pending episodes into concepts, resolve conflicts, maintain quality
MCP Server
For IDE agents (Cursor, Claude Desktop, etc.):
remind-mcp --port 8765
{
"mcpServers": {
"remind": {
"url": "http://127.0.0.1:8765/sse?db=my-project"
}
}
}
Tools: remember, recall, snapshot, apply, plus conflict/entity management.
Web UI at http://127.0.0.1:8765/ui/, REST API at /api/v1/.
Key features
- Zero-config embeddings — Local fastembed by default (no API key required)
- Labels as a substrate primitive — Freeform
key=valuetags on episodes/concepts, pushed down as a pre-filter into vector search (recall -l key=value), not just a post-filter - Change feed — Append-only
eventstable written atomically with every write; poll withremind events --since <seq>instead of re-scanning pending state - Query-free bootstrap read —
snapshot bootstrapreturns deterministic, stable context (top concepts + conflicts + stats) with no embedding call, cheap enough to inject every turn - Temporal facts — Validity windows, structural supersession, time-travel queries (
--as-of) - Collision detection — Same-cluster and cross-cluster collisions reported on write with ready-to-paste
applycommands - Nearby surfacing — Every
remembercall returns the top-k semantically nearest episodes and concepts for immediate conflict triage - Evidence-weighted retrieval — Episodes link to concepts with typed relationships (
supports,contradicts,qualifies); more evidence = higher recall rank - Freeform concept types — Concepts can have any type string:
pattern,rule,procedure,hypothesis, or any domain-specific label - Concept evolution —
reshape(change type),merge(combine overlapping),split(separate concerns), all with lineage tracking - Transactional writes —
applyruns all operations atomically - Spreading activation retrieval — Queries activate related concepts through the knowledge graph
- Native vector indexes — sqlite-vec (SQLite), pgvector (PostgreSQL)
- Entity graph — Files, functions, people, tools linked to episodes and concepts via
entity_relation - Memory decay — Rarely-recalled concepts fade
- Soft delete / restore — With permanent purge as a separate step
- Web UI — Dashboard, concept graph, entity explorer
Embedding providers
Local embedding is the default (384-dim all-MiniLM-L6-v2). For cloud embeddings:
pip install "remind-mcp[openai]" # OpenAI embeddings
pip install "remind-mcp[rerank]" # Cross-encoder reranking
{
"embedding_provider": "openai",
"openai": { "api_key": "sk-..." }
}
Database backends
SQLite is the default. For PostgreSQL or MySQL:
pip install "remind-mcp[postgres]" # PostgreSQL (psycopg v3 + pgvector)
pip install "remind-mcp[mysql]" # MySQL (PyMySQL)
export REMIND_DB_URL="postgresql+psycopg://user:pass@localhost:5432/mydb"
CLI reference
Core
remember Add an episode (-t type, -e entity, -l key=value label, --asserted-by, --source-ref)
recall Semantic or entity-based retrieval (-k, --episode-k, -l label filter, --as-of)
snapshot Read memory state as JSON (combinable scopes)
apply Apply a batch changeset transactionally
Inspection
inspect List or detail concepts; use --episodes for episodes
stats Memory statistics
entities List entities or show details
Episode types
decisions Show decision episodes
questions Show open question episodes
Conflicts
conflicts list/resolve/dismiss
Editing
update-episode/update-concept
delete-episode/restore-episode/purge-episode
delete-concept/restore-concept/purge-concept
Embeddings
embed-episodes Backfill embeddings
re-embed Recompute embeddings (--episodes/--concepts/--entities/--all)
Import / Export
export/import
Skills
skill-install Install Remind skills
UI
ui Launch the web UI
Entity types: file, function, class, module, subject, person, project, tool — format is type:name (e.g., file:src/auth.ts, person:alice, tool:redis, concept:caching)
Documentation
Full documentation at sandst1.github.io/remind:
- What is Remind? — How it works
- Skills + CLI — Agent integration
- Configuration — Providers, config
- CLI Reference — All commands
- MCP Tools — MCP reference
License
Apache 2.0 (LICENSE)
Files in the repo
- .claude
- .github
- .remind
- docs
- examples
- src
- tests
- web
- website
- .dockerignore
- .env.example
- .gitignore
- AGENTS.md
- CHANGELOG.md
- CLAUDE.md
- discussion.md
- docker-compose.yml
- Dockerfile
- LICENSE
- memory.db
- pyproject.toml
- README.md
- remind.log
- TODO.md
- uv.lock
Discussion (0)
Ask about usage, or say what you built with itSign in to join the discussion.
No comments yet. Be the first to say what this is good for.
More connectors
High-performance code intelligence MCP server. Indexes codebases into a persistent knowledge graph — average repo in milliseconds. 158 languages, sub-ms queries, 99% fewer tokens. Single static binary, zero dependencies.

Universal provider proxy for OpenAI Codex & Claude Code — use any LLM (Claude, Gemini, Grok, DeepSeek, Ollama…) with Codex CLI, App, SDK, and Claude Code
Git-native persistent memory for AI coding agents. Implements Google OKF v0.2 with sub-300µs in-memory BM25 search, embedded MCP server, and progressive disclosure. Slashes token bloat by 80% with zero external databases or dependencies. Built in pure Go.
Local-first code intelligence graph for MCP and CLI. Builds a persistent map of your codebase so AI coding tools read only what matters, with benchmarked context reductions on reviews and large-repo workflows.
Stop your AI from making things up — it proposes, deterministic tools decide, every claim checked against ground truth with evidence. Grounded facts and context survive resets. Reverse engineering is the proving ground. MCP server + CLI.