Skip to content

jarmen423/codememory

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

31 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🧠 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

About

Agentic Memory: structural code graph and memory layer for AI agents

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors