|
|
5 maanden geleden | |
|---|---|---|
| __tests__ | 5 maanden geleden | |
| src | 5 maanden geleden | |
| .gitignore | 5 maanden geleden | |
| CLAUDE.md | 5 maanden geleden | |
| IMPLEMENTATION_PLAN.md | 5 maanden geleden | |
| README.md | 5 maanden geleden | |
| package-lock.json | 5 maanden geleden | |
| package.json | 5 maanden geleden | |
| tsconfig.json | 5 maanden geleden | |
| vitest.config.ts | 5 maanden geleden |
A local-first code intelligence system that builds a semantic knowledge graph from any codebase. CodeGraph provides structural understanding of code relationships—not just text similarity—enabling AI assistants to understand how code connects, what depends on what, and what breaks when something changes.
# Clone and install
git clone <repository-url>
cd codegraph
npm install
# Build
npm run build
# Link globally (optional, for CLI usage)
npm link
# Initialize CodeGraph in your project
codegraph init /path/to/your/project
# Index the codebase (with progress)
codegraph index /path/to/your/project
# Search for symbols
codegraph query "UserService"
# Build context for a task
codegraph context "fix the login bug"
# Check index status
codegraph status
codegraph init [path]Initialize CodeGraph in a project directory. Creates a .codegraph/ directory with the database and configuration.
codegraph init # Initialize in current directory
codegraph init /path/to/project # Initialize in specific directory
codegraph init --index # Initialize and immediately index
codegraph init --no-hooks # Skip git hook installation
codegraph index [path]Index all files in the project. Extracts functions, classes, methods, and their relationships.
codegraph index # Index current directory
codegraph index --force # Force full re-index
codegraph index --quiet # Suppress progress output
codegraph sync [path]Incrementally sync changes since the last index. Only processes added, modified, or removed files.
codegraph sync # Sync current directory
codegraph sync --quiet # Suppress output
codegraph status [path]Show index status and statistics.
codegraph status
Output includes:
codegraph query <search>Search for symbols in the codebase by name.
codegraph query "authenticate" # Search for symbols
codegraph query "User" --kind class # Filter by kind
codegraph query "process" --limit 20 # Limit results
codegraph query "validate" --json # Output as JSON
codegraph context <task>Build relevant code context for a task. Uses semantic search to find entry points, then expands through the graph to find related code.
codegraph context "fix checkout bug"
codegraph context "add user authentication" --format json
codegraph context "refactor payment service" --max-nodes 30
codegraph hooksManage git hooks for automatic syncing.
codegraph hooks install # Install post-commit hook
codegraph hooks remove # Remove hook
codegraph hooks status # Check if hook is installed
codegraph serveStart CodeGraph as an MCP server for AI assistants.
codegraph serve # Show MCP configuration help
codegraph serve --mcp # Start MCP server (stdio)
codegraph serve --mcp --path /project # Specify project path
CodeGraph can be used as an MCP (Model Context Protocol) server, allowing Claude Code to directly query your codebase.
Initialize and index your project:
codegraph init /path/to/your/project --index
Add to your Claude Code MCP configuration (~/.claude/claude_desktop_config.json or similar):
{
"mcpServers": {
"codegraph": {
"command": "codegraph",
"args": ["serve", "--mcp", "--path", "/path/to/your/project"]
}
}
}
Or if using npx:
{
"mcpServers": {
"codegraph": {
"command": "npx",
"args": ["codegraph", "serve", "--mcp", "--path", "/path/to/your/project"]
}
}
}
| Tool | Description |
|---|---|
codegraph_search |
Search for code symbols by name or semantic similarity |
codegraph_context |
Build relevant code context for a task or issue |
codegraph_callers |
Find all functions/methods that call a specific symbol |
codegraph_callees |
Find all functions/methods that a symbol calls |
codegraph_impact |
Analyze what code could be affected by changing a symbol |
codegraph_node |
Get detailed information about a specific symbol |
codegraph_status |
Get index statistics |
Once configured, you can ask Claude Code things like:
authenticate function"UserService class?"CodeGraph can also be used as a library in your Node.js applications:
import CodeGraph from 'codegraph';
// Initialize a new project
const cg = await CodeGraph.init('/path/to/project');
// Or open an existing one
const cg = await CodeGraph.open('/path/to/project');
// Index with progress callback
await cg.indexAll({
onProgress: (progress) => {
console.log(`${progress.phase}: ${progress.current}/${progress.total}`);
}
});
// Search for symbols
const results = cg.searchNodes('UserService');
// Get callers of a function
const node = results[0].node;
const callers = cg.getCallers(node.id);
// Build context for a task
const context = await cg.buildContext('fix login bug', {
maxNodes: 20,
includeCode: true,
format: 'markdown'
});
// Get impact radius
const impact = cg.getImpactRadius(node.id, 2);
// Sync changes
const syncResult = await cg.sync();
// Clean up
cg.close();
npm test # Run all tests
npm run test:watch # Run tests in watch mode
npm run build # Compile TypeScript and copy assets
npm run clean # Remove build artifacts
codegraph/
├── src/
│ ├── index.ts # Main CodeGraph class
│ ├── types.ts # TypeScript interfaces
│ ├── config.ts # Configuration handling
│ ├── directory.ts # .codegraph/ management
│ ├── errors.ts # Custom error classes
│ ├── utils.ts # Utilities (Mutex, batching, etc.)
│ │
│ ├── bin/
│ │ └── codegraph.ts # CLI entry point
│ │
│ ├── db/
│ │ ├── index.ts # Database connection
│ │ ├── schema.sql # SQLite schema
│ │ ├── migrations.ts # Schema versioning
│ │ └── queries.ts # Prepared statements
│ │
│ ├── extraction/
│ │ ├── index.ts # Extraction orchestrator
│ │ ├── tree-sitter.ts # Parser wrapper
│ │ ├── grammars.ts # Grammar loading
│ │ └── queries/ # Tree-sitter queries (.scm)
│ │
│ ├── resolution/
│ │ ├── index.ts # Reference resolver
│ │ └── frameworks/ # Framework-specific patterns
│ │
│ ├── graph/
│ │ ├── index.ts # Graph query interface
│ │ ├── traversal.ts # BFS/DFS, impact radius
│ │ └── queries.ts # Graph queries
│ │
│ ├── vectors/
│ │ ├── index.ts # Vector operations
│ │ └── search.ts # Similarity search
│ │
│ ├── sync/
│ │ ├── index.ts # Sync orchestrator
│ │ └── git-hooks.ts # Hook installation
│ │
│ ├── context/
│ │ ├── index.ts # Context builder
│ │ └── formatter.ts # Output formatting
│ │
│ └── mcp/
│ ├── index.ts # MCP server
│ ├── transport.ts # Stdio transport
│ └── tools.ts # Tool definitions
│
└── __tests__/ # Test files
CodeGraph uses tree-sitter to parse source code into ASTs. Language-specific queries (.scm files) extract:
Each node gets a unique ID based on its kind, file path, name, and line number.
All data is stored in a local SQLite database (.codegraph/codegraph.db):
After extraction, CodeGraph resolves references:
CodeGraph uses local embeddings (via @xenova/transformers) to enable semantic search:
The graph structure enables powerful queries:
When you request context for a task:
The .codegraph/config.json file controls indexing behavior:
{
"version": 1,
"projectName": "my-project",
"languages": ["typescript", "javascript"],
"exclude": [
"node_modules/**",
"dist/**",
"build/**",
"*.min.js"
],
"frameworks": ["express", "react"],
"maxFileSize": 1048576,
"gitHooksEnabled": true
}
| Option | Description | Default |
|---|---|---|
languages |
Languages to index (auto-detected if empty) | [] |
exclude |
Glob patterns to ignore | ["node_modules/**", ...] |
frameworks |
Framework hints for better resolution | [] |
maxFileSize |
Skip files larger than this (bytes) | 1048576 (1MB) |
gitHooksEnabled |
Enable git hook installation | true |
| Language | Extension | Status |
|---|---|---|
| TypeScript | .ts, .tsx |
Full support |
| JavaScript | .js, .jsx, .mjs |
Full support |
| Python | .py |
Full support |
| Go | .go |
Full support |
| Rust | .rs |
Full support |
| Java | .java |
Full support |
| C# | .cs |
Full support |
| PHP | .php |
Full support |
| Ruby | .rb |
Full support |
| C | .c, .h |
Full support |
| C++ | .cpp, .hpp, .cc |
Full support |
| Swift | .swift |
Basic support |
| Kotlin | .kt |
Basic support |
Run codegraph init in your project directory first.
node_modules or other large directories are excluded--quiet flag to reduce console output overheadmaxFileSize if you have large files to skipcodegraph serve --mcp works from the command linecodegraph sync to pick up recent changesMIT