AI-powered codebase memory for coding agents. Watches file changes and maintains .memo documentation automatically.
Vibe coding with AI agents across multiple sessions evolves fast—too fast for humans to keep up. Projects spiral out of control due to lack of global consistency: models can't read the entire codebase in one pass, and neither can humans.
Inspired by traditional code indexing, Memo maintains a semantic index specifically for coding agents, capturing architecture and key decisions. This enables:
- "Summarize this repo" — No need to read every file. Memo provides instant context.
- Preserve design decisions — Trade-offs and constraints are recorded once, no need to repeat every session.
- Holistic refactoring — After modifying a module, agents can update related code across the project, even connections that static analysis can't detect.
- Beyond coding: Large document navigation — Find related content without scanning everything.
Evaluated on a subset of SWE-bench Lite (23 instances, limited by time):
performance_analysis_final.png
Key findings:
- 4× pass rate improvement (4.3% → 17.4%)
- 15% faster inference (212s → 180s per instance)
- Memo index generation is one-time cost, amortized across tasks
curl -fsSL https://raw.githubusercontent.com/YoungY620/memo/main/install.sh | shirm https://raw.githubusercontent.com/YoungY620/memo/main/install.ps1 | iexRun the same installation command to update to the latest version. Memo also checks for updates automatically on startup.
git clone https://github.com/YoungY620/memo.git
cd memo
make install # installs to ~/.local/binMemo has three commands:
Continuously monitors file changes and updates .memo/index:
memo # watch current directory
memo watch # explicit watch command
memo watch -p /path/to/repo # watch specific directory
memo watch --skip-scan # skip initial full scan (when index is up-to-date)Analyzes all files once, updates index, then exits. Useful for CI or initial setup:
memo scan
memo scan -p /path/to/repoStarts an MCP server for AI agents to query the index. Requires an existing .memo/index (run watch/scan first):
memo mcp
memo mcp -p /path/to/repomemo --version # print version
memo --help # show help
memo <command> --help # show command-specific help# watch and scan commands
memo watch -c config.yaml # custom config file
memo watch --log-level debug # log level: error/notice/info/debugCreate config.yaml:
log_level: info # error, notice, info, debug
watch:
ignore_patterns:
- ".git"
- "node_modules"
- ".memo"
- "*.log"
debounce_ms: 5000 # 5s quiet period
max_wait_ms: 300000 # 5min max waitMemo exposes .memo/index to AI agents via MCP protocol:
memo_list_keys— List keys at a JSON pathmemo_get_value— Get value at a JSON path
-
Start watcher (keeps index updated as you code):
cd /path/to/project && memo # or: memo watch -p /path/to/project
-
Configure AI agent to use memo MCP server. Example for Kimi CLI (
~/.kimi/mcp.json):{ "mcpServers": { "memo": { "command": "memo", "args": ["mcp"] } } } -
Query via agent:
kimi > Summarize this repo
.memo/
├── index/
│ ├── arch.json # modules and structure
│ ├── interface.json # external/internal APIs
│ ├── stories.json # user stories and flows
│ └── issues.json # TODOs, decisions, bugs
├── mcp.json # local MCP config
└── .gitignore # excludes runtime files
MIT