RepoRecall
Provides persistent, local-first memory for coding agents with Markdown as the source of truth, exposed via CLI, loopback API, MCP, and Codex hooks for context retrieval and durable writes.
README
RepoRecall
Persistent memory for AI agents, stored where you control it.
RepoRecall is a local-first, model-agnostic memory layer for coding agents. It keeps durable memories as readable Markdown files with YAML frontmatter, stores the fast search index in disposable SQLite, and exposes the same contract through a CLI, local API, MCP, and Codex hooks.
The important boundary is simple: Markdown is the source of truth. SQLite can be deleted and rebuilt at any time.
What v0.1 includes
- Global brain plus project, workspace, and explicit session scopes.
- Versioned schema validation and atomic Markdown writes.
- SQLite FTS5 search with metadata filters, tags, relations, and index diagnostics.
- Deterministic context selection with pinned/project-current boosts and token budgets.
- Safe CLI commands for initialization, remembering, searching, Inbox review, checkpoints, rebuilds, diagnostics, and serving.
- Local loopback Hono API and React/Vite workbench.
- Stdio MCP tools: context, search, recent memories, durable writes, resolve, checkpoint, and Inbox review.
- Codex adapter for MCP registration, managed
AGENTS.md, andSessionStart,PostCompact, andSessionEndhooks. - Optional processors (
agent-native, Ollama, OpenRouter, and OpenAI-compatible HTTP providers) with conservative mode as the default. - Secret scanning and redaction before content becomes durable.
Quick start
Requirements: Node.js >=22.12.0 and pnpm 11.
git clone https://github.com/triplesixmir/reporecall.git reporecall
cd reporecall
pnpm install --frozen-lockfile
pnpm check
pnpm exec tsx packages/cli/src/bin.ts init --yes
pnpm exec tsx packages/cli/src/bin.ts remember --type decision --content "Canonical Markdown is the source of truth."
pnpm exec tsx packages/cli/src/bin.ts serve
Open http://127.0.0.1:4317. serve binds to loopback by default and serves the compiled workbench when apps/web/dist exists. Use pnpm build first for a production asset bundle.
For an installed CLI after building:
pnpm build
node packages/cli/dist/bin.js doctor
node packages/cli/dist/bin.js status
Install the Codex integration for the current user (MCP registration, managed instructions, and lifecycle hooks):
reporecall codex install --scope user
reporecall doctor
Use --scope project to keep the integration inside one repository. If the
Codex executable is not on PATH, pass its path with
--codex-executable /path/to/codex.
File-first storage
The canonical layout is intentionally inspectable:
~/.reporecall/brain/
memories/mem_<uuid>.md
inbox/inbox_<uuid>.md
sessions/<id>.md
.reporecall/config.toml
your-project/
.reporecall/
memories/mem_<uuid>.md
inbox/inbox_<uuid>.md
sessions/<id>.md
config.toml
Project memory belongs in the project checkout and can be committed. The global brain is user-level and should normally remain on a private filesystem or private remote. Session captures are redacted and temporary; no raw transcript is saved, and a durable session summary is created only by an explicit checkpoint.
Scopes and context
| Scope | Durable location | Typical use |
|---|---|---|
global |
global brain | personal conventions and cross-project preferences |
workspace |
configured project memory root | shared local workspace context |
project |
<project>/.reporecall/memories |
repository decisions and constraints |
session |
<project>/.reporecall/sessions |
explicit checkpoints and lifecycle events |
Context building is deterministic. Archived, dismissed, and superseded records are excluded by default. Pinned and project-current records are considered first; remaining records are ranked by scope, status, priority, relevance, recency, confidence, and stable tie-breakers until the token budget is full.
CLI
reporecall init initialize project memory and managed guidance
reporecall brain init initialize a custom global brain
reporecall status validate files and report index health
reporecall doctor check runtime and storage health
reporecall remember <text> create an explicit durable memory
reporecall search <query> search the local SQLite index
reporecall inbox list pending processor suggestions
reporecall rebuild rebuild SQLite from canonical Markdown
reporecall config print resolved configuration
reporecall checkpoint <summary> persist an explicit session checkpoint
reporecall serve run the loopback API, UI, and watcher
reporecall mcp run the stdio MCP server
reporecall codex install install the Codex MCP server and managed hooks
reporecall codex uninstall remove only RepoRecall-managed Codex settings
reporecall codex-hook <event> handle a Codex lifecycle hook
Paths and behavior can be changed with CLI flags or TOML configuration. Precedence is CLI, project, brain, user, then platform defaults. The default brain is ~/.reporecall/brain and the default API port is 4317.
API, MCP, and Codex
reporecall serve provides a local API for the workbench: memory CRUD, recent records, projects, tags, Inbox actions, relation graph, overview, and health. The API is intentionally loopback-only unless a caller explicitly supplies another hostname through the server API.
The MCP server is model-agnostic and returns both structured data and a short human-readable summary. MCP writes preserve user-owned tags and run the same redaction rules as the CLI.
The Codex adapter installs the MCP command and managed blocks without overwriting user text or unrelated hooks. reporecall codex install --scope user is the supported entry point; SessionStart and PostCompact inject deterministic context. SessionEnd writes only a lifecycle marker. Hook failures are fail-open, and no unstable transcript format is required.
This is automatic context retrieval, not silent memory creation. An agent can
write a durable record explicitly with memory_remember or reporecall remember; a durable session summary requires an explicit checkpoint. The
default processor is disabled for privacy. Enable a processor deliberately if
you want suggestions in Inbox.
Privacy and processors
RepoRecall scans for private keys, credential paths, API-key prefixes, bearer tokens, and common token assignments. Detected secrets are replaced with a visible redaction marker and a warning. A write made only of secret material is rejected. Detection is a safety layer, not a guarantee: review memories before committing them.
Processors are optional. conservative mode is the default: explicit durable records are written, while processor suggestions go to Inbox. balanced and automatic require deliberate configuration; automatic persistence is opt-in. Provider credentials are read from environment variables and never stored in memory files.
Web workbench
The local React workbench includes:
- Overview with memory, project, active-context, and Inbox metrics.
- Memories with URL-synchronized search and filters, CRUD editor, tags, status, priority, scope, pinning, and secret warnings.
- Projects, Recent, Inbox review, relation Graph, and Settings screens.
- Semantic controls, visible loading/empty/error states, keyboard-accessible editor focus, and responsive layouts for 320, 768, 1024, and 1440px.
The graph is a projection of indexed relations. It is not another storage system.
Git and cross-device workflow
- Machine A runs
rememberor saves a memory in the workbench. - Commit the relevant project
.reporecall/memories/*.mdfiles. - Machine B pulls or clones the repository.
- Machine B runs
reporecall rebuildto create a local SQLite index. - The same context builder retrieves the shared Markdown memory without copying SQLite or machine-specific paths.
Keep private global memories out of public repositories. Use private remotes when project memory contains sensitive context.
For a personal multi-device setup, keep these repositories separate:
| Repository | Visibility | Contents |
|---|---|---|
triplesixmir/reporecall |
public | source, tests, CI, bilingual documentation |
YOUR_GITHUB_USER/reporecall-private-memory |
private | your Markdown brain and safe RepoRecall config |
On a fresh Windows machine, clone the private brain first and then initialize the project that should use it:
$Brain = Join-Path $env:USERPROFILE ".reporecall\brain"
git clone git@github.com:YOUR_GITHUB_USER/reporecall-private-memory.git $Brain
reporecall brain init --brain $Brain
cd C:\path\to\your-project
reporecall init --yes --brain $Brain
reporecall rebuild --brain $Brain
reporecall codex install --scope user
reporecall doctor
The public source checkout is installed separately with Node.js and pnpm. Pull the private brain before using a second machine, and push only after reviewing the Markdown changes. Do not copy or commit SQLite files.
Limitations and roadmap
v0.1 intentionally has no cloud backend, accounts, billing, telemetry, embeddings, vector database, mobile app, or team collaboration. Claude Code and other harnesses can use the generic MCP contract, but Codex is the first adapter with automated lifecycle installation.
Next areas are stronger import/export tooling, richer relation editing, broader adapter coverage, and additional accessibility and cross-platform verification.
Documentation
- Architecture (EN) · Архитектура (RU)
- Getting started · Быстрый старт
- CLI and configuration · CLI и конфигурация
- Privacy · Приватность
- Integrations · Интеграции
- Release verification · Проверка релиза
Development
pnpm install --frozen-lockfile
pnpm check
pnpm test:e2e
See CONTRIBUTING.md before opening a change. RepoRecall is released under the MIT License.
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。