Skip to main content

Agentic Memory: Structural Code Graph with Neo4j and MCP

Project description

๐Ÿง  Agentic Memory

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."


โœจ Features

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

๐Ÿš€ Quick Start (One Command Setup)

1. Install globally

# 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-codememory

2. Initialize in any repository

cd /path/to/your/repo
codememory init

The 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.


๐Ÿ“– Usage

In any initialized repository:

# 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 --json

Git graph command details and rollout notes: docs/GIT_GRAPH.md


๐Ÿงพ Tool-Use Annotation (Research)

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


๐Ÿ—๏ธ Architecture

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”     Watches      โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  User Repositoryโ”‚ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€> โ”‚ Ingestion Serviceโ”‚
โ”‚                 โ”‚                  โ”‚ (Observer)       โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜                  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                                              โ”‚ Writes
                                              โ–ผ
                                       โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
                                       โ”‚  Neo4j       โ”‚
                                       โ”‚  Cortex      โ”‚
                                       โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                                              โ”‚ Reads
                                              โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”     MCP Protocol  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚   AI Agent /    โ”‚ <โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€> โ”‚  MCP Server      โ”‚
โ”‚   Claude        โ”‚                   โ”‚  (Interface)     โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜                   โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Components

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

๐Ÿ”Œ MCP Tools Available to AI Agents

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: domain routing 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.


โœ… Integration Recommendation Policy (PR7)

Current recommendation policy is explicit:

  1. Recommended default: mcp_native integration for production reliability.
  2. Optional path: skill_adapter workflow for shell/script-driven operators.
  3. Promotion rule: skill_adapter becomes first-class only after parity evidence is captured versus mcp_native across success rate, latency, token cost, retries, and operator steps.

Reference docs and evaluation artifacts:


๐Ÿณ Docker Setup (Neo4j)

Quick Start

# 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!)

Neo4j Aura (Cloud)

Get a free instance at neo4j.com/cloud/aura/


๐Ÿ“ Configuration

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.


๐Ÿ”ง Installation from Source

# 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

๐Ÿงช Development

# Install in editable mode
pip install -e .

# Run type checking (when mypy is configured)
mypy src/codememory

# Run tests (when added)
pytest

๐Ÿ“Š What Gets Indexed?

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

๐Ÿ”Œ MCP Integration

Claude Desktop

{
  "mcpServers": {
    "agentic-memory": {
      "command": "codememory",
      "args": ["serve", "--repo", "/absolute/path/to/your/project"]
    }
  }
}

Cursor IDE

{
  "mcpServers": {
    "agentic-memory": {
      "command": "codememory",
      "args": ["serve", "--repo", "/absolute/path/to/your/project", "--port", "8000"]
    }
  }
}

Windsurf

Add to your MCP configuration file.

Note: --repo requires the upcoming release that adds explicit repo targeting for serve. If your installed version does not support --repo, use your client's cwd setting (if supported) or launch via a wrapper script that runs cd /absolute/path/to/project && codememory serve.


๐Ÿ“ License

MIT License - see LICENSE file for details.


๐Ÿค Contributing

Contributions welcome! Please see TODO.md for the roadmap.


๐Ÿ™ Acknowledgments

  • 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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

agentic_codememory-0.1.5.tar.gz (218.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

agentic_codememory-0.1.5-py3-none-any.whl (53.8 kB view details)

Uploaded Python 3

File details

Details for the file agentic_codememory-0.1.5.tar.gz.

File metadata

  • Download URL: agentic_codememory-0.1.5.tar.gz
  • Upload date:
  • Size: 218.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for agentic_codememory-0.1.5.tar.gz
Algorithm Hash digest
SHA256 5ef2d9c64c3c1849e93e74fa0e3aea9f6cb2101634fb5271b6ec014cdce9a5ab
MD5 1e134743ffb56a001508a13dfef80cd7
BLAKE2b-256 170d701192a84b9fa048ebdcd9ea7baf52b65187a1aec3ed364775e109056e87

See more details on using hashes here.

File details

Details for the file agentic_codememory-0.1.5-py3-none-any.whl.

File metadata

File hashes

Hashes for agentic_codememory-0.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 8bc66d7a2d3aacd87aff0787bf5f78eb7a3ad25eb48500fa38453c0fe4f48294
MD5 c0b6d24e1179011d13ea5d8b8922959f
BLAKE2b-256 2679009e204b84609f7aebff47a22c9a1e6a362c4e75076984e3cf0c8df7ab94

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page