https://github.com/jarmen423/codememory
Active, Structural Memory System for AI Coding Agents
Agentic Memory is not just "RAG" for code. It is an active, structural memory layer that understands code relationships (dependencies, imports, inheritance), not just text similarity.
Core Value Prop: "Don't let your Agent code blind. Give it a map."
| Feature | Description |
|---|---|
| π Structural Graph | Understands imports, dependencies, call graphs - not just text similarity |
| π Semantic Search | Vector embeddings with contextual prefixing for accurate results |
| β‘ Real-time Sync | File watcher automatically updates the graph as you code |
| 𧬠Git Graph (Opt-in) | Adds commit/author/file-version history in the same Neo4j DB with separate labels |
| π€ MCP Protocol | Drop-in integration with Claude, Cursor, Windsurf, and any MCP-compatible AI |
| π₯ Impact Analysis | See the blast radius of changes before you make them |
# Recommended: Use pipx for isolated global installation
pipx install agentic-codememory
# Or with uv tooling
uv tool install agentic-codememory
uvx codememory --help
# Or use pip in a virtualenv
pip install agentic-codememorycd /path/to/your/repo
codememory initThe interactive wizard will guide you through:
- Neo4j setup (local Docker, Aura cloud, or custom)
- OpenAI API key (for semantic search)
- File extensions to index
That's it! Your repository is now indexed and ready for AI agents.
# Show repository status and statistics
codememory status
# One-time full index (e.g., after major changes)
codememory index
# Watch for changes and continuously update
codememory watch
# Start MCP server for AI agents
codememory serve
# Test semantic search
codememory search "where is the auth logic?"
# Git graph (rollout build)
codememory git-init --repo /absolute/path/to/repo --mode local --full-history
codememory git-sync --repo /absolute/path/to/repo --incremental
codememory git-status --repo /absolute/path/to/repo --jsonGit graph command details and rollout notes: docs/GIT_GRAPH.md
Agentic Memory now supports SQLite telemetry for MCP tool calls plus manual post-response labeling as prompted or unprompted.
codememory --prompted "check our auth"
codememory --unprompted "check our auth"Full workflow and options: docs/TOOL_USE_ANNOTATION.md
βββββββββββββββββββ Watches ββββββββββββββββββββ
β User Repositoryβ βββββββββββββββ> β Ingestion Serviceβ
β β β (Observer) β
βββββββββββββββββββ ββββββββββ¬ββββββββββ
β Writes
βΌ
ββββββββββββββββ
β Neo4j β
β Cortex β
ββββββββ¬ββββββββ
β Reads
βΌ
βββββββββββββββββββ MCP Protocol ββββββββββββββββββββ
β AI Agent / β <βββββββββββββββ> β MCP Server β
β Claude β β (Interface) β
βββββββββββββββββββ ββββββββββββββββββββ
| Component | Role | Description |
|---|---|---|
Observer (watcher.py) |
The "Writer" | Watches filesystem changes and keeps the graph in sync |
Graph Builder (graph.py) |
The "Mapper" | Parses code with Tree-sitter, builds Neo4j graph with embeddings |
MCP Server (app.py) |
The "Interface" | Exposes high-level skills to AI agents via MCP protocol |
| Tool | Description |
|---|---|
search_codebase(query, limit=5, domain="code") |
Semantic search for code, git, or hybrid domain routing |
get_file_dependencies(file_path, domain="code") |
Returns imports and dependents for a file |
identify_impact(file_path, max_depth=3, domain="code") |
Blast radius analysis for changes |
get_file_info(file_path, domain="code") |
File structure overview (classes, functions) |
get_git_file_history(file_path, limit=20, domain="git") |
File-level commit history and ownership signals (git rollout) |
get_commit_context(sha, include_diff_stats=true) |
Commit metadata and change statistics (git rollout) |
find_recent_risky_changes(path_or_symbol, window_days, domain="hybrid") |
Recent high-risk changes using hybrid signals (git rollout) |
Note:
domainrouting and git-domain tools are part of the git graph rollout. If they are missing in your installed build, use code-domain tools only and upgrade to a git-enabled release.
Current recommendation policy is explicit:
- Recommended default:
mcp_nativeintegration for production reliability. - Optional path:
skill_adapterworkflow for shell/script-driven operators. - Promotion rule:
skill_adapterbecomes first-class only after parity evidence is captured versusmcp_nativeacross success rate, latency, token cost, retries, and operator steps.
Reference docs and evaluation artifacts:
- docs/evaluation-decision.md
- evaluation/README.md
- evaluation/tasks/benchmark_tasks.json
- evaluation/schemas/benchmark_results.schema.json
- evaluation/skills/skill-adapter-workflow.md
# Start Neo4j
docker-compose up -d neo4j
# Neo4j will be available at:
# HTTP: http://localhost:7474
# Bolt: bolt://localhost:7687
# Username: neo4j
# Password: password (change this in production!)Get a free instance at neo4j.com/cloud/aura/
Per-repository configuration is stored in .codememory/config.json:
{
"neo4j": {
"uri": "bolt://localhost:7687",
"user": "neo4j",
"password": "password"
},
"openai": {
"api_key": "sk-..." // Optional - can use OPENAI_API_KEY env var
},
"indexing": {
"ignore_dirs": ["node_modules", "__pycache__", ".git"],
"extensions": [".py", ".js", ".ts", ".tsx", ".jsx"],
"include_paths": ["systemd/AGENTS.md", "docs/runbooks/*.md"]
}
}include_paths is an explicit allowlist for files that should be indexed even when their
extension is not in indexing.extensions. This is useful for selectively indexing a few
high-value docs such as AGENTS.md, runbooks, or systemd unit companions without turning
on all Markdown files.
Note: .codememory/ is gitignored by default to prevent committing API keys.
# Clone the repository
git clone https://github.com/jarmen423/codememory.git
cd codememory
# Install in editable mode
pip install -e .
# Run the init wizard in any repo
codememory init# Install in editable mode
pip install -e .
# Run type checking (when mypy is configured)
mypy src/codememory
# Run tests (when added)
pytest| Entity | Description | Relationships |
|---|---|---|
| Files | Source code files | [:DEFINES]β Functions/Classes, [:IMPORTS]β Files |
| Functions | Function definitions | [:CALLS]β Functions, [:HAS_METHOD]β Classes |
| Classes | Class definitions | [:HAS_METHOD]β Methods |
| Chunks | Semantic embeddings | [:DESCRIBES]β Functions/Classes |
{
"mcpServers": {
"agentic-memory": {
"command": "codememory",
"args": ["serve", "--repo", "/absolute/path/to/your/project"]
}
}
}{
"mcpServers": {
"agentic-memory": {
"command": "codememory",
"args": ["serve", "--repo", "/absolute/path/to/your/project", "--port", "8000"]
}
}
}Add to your MCP configuration file.
Note:
--reporequires the upcoming release that adds explicit repo targeting forserve. If your installed version does not support--repo, use your client'scwdsetting (if supported) or launch via a wrapper script that runscd /absolute/path/to/project && codememory serve.
MIT License - see LICENSE file for details.
Contributions welcome! Please see TODO.md for the roadmap.
- Neo4j - Graph database with vector search
- Tree-sitter - Incremental parsing for code
- OpenAI - Embeddings for semantic search
- MCP (Model Context Protocol) - Standard interface for AI tools