Aikd Indexed Semantic & Bm25 Code Search For Ai Agents. Give Your Ai Instant Memory Of Your Codebase. Rust | Mcp Server.
LocalAbout Aikd Indexed Semantic & Bm25 Code Search For Ai Agents. Give Your Ai Instant Memory Of Your Codebase. Rust | Mcp Server.
AIKD is a local codebase indexing and search server for AI coding agents. Its Rust implementation combines BM25 and vector search, with CLI, REST API, and persistent session memory.
Key features
- 01Hybrid BM25 and vector search
- 02Incremental codebase indexing
- 03Persistent session memory
- 04File-change reindexing
- 05CLI and REST API
Use cases
- 01Find code by keyword or meaning
- 02Give coding agents persistent codebase context
- 03Refresh indexes when project files change
MCP support
AIKD runs as an MCP server with tools for scanning, querying, embedding, statistics, memory, and status. It can register with the listed coding agents.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
We haven’t collected a package or remote endpoint for this server. Follow the instructions in the project README.
Tools
Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.
Details
From the project README🧠 AIKD
The Ultra-Fast Local Memory Layer for AI Coding Agents
Give Claude, Cursor, and Cline instant memory of your entire codebase. Written in Rust. Zero cloud dependency. Search 10,000 chunks in 0.21ms.
Install • Quick Start • Demo • Docs
🤔 Why AIKD?
The Problem: AI coding agents are powerful but forgetful. Every new conversation starts from zero — no memory of your codebase, your patterns, your architecture.
| Pain Point | Without AIKD | With AIKD |
|---|---|---|
| 😵 Context Amnesia | Agent asks "what does this file do?" every session | Instant recall of entire codebase |
| 🐌 Slow Search | Python-based RAG takes 500ms+ per query | Rust-powered BM25+Vector in 0.21ms |
| ☁️ Cloud Dependency | Your code sent to external servers | 100% local, zero data leaves your machine |
| 🔧 Complex Setup | Install Python, pip, CUDA, models... | Single binary, one command install |
How AIKD Compares
| Feature | grep | LlamaIndex | ai-devkit | AIKD |
|---|---|---|---|---|
| Speed | Fast | Slow | Medium | ⚡ 0.21ms |
| Semantic Search | ❌ | ✅ | ✅ | ✅ Hybrid |
| Local Only | ✅ | ❌ | ❌ | ✅ 100% |
| MCP Native | ❌ | ❌ | ❌ | ✅ Built-in |
| Memory Usage | Low | High (Python) | High | 📊 27% RAM |
| Setup Time | 0s | ~10min | ~5min | ⏱️ 30s |
✨ Key Features
🔍 Search Engine
- Hybrid Search: BM25 (Tantivy) + Vector (ONNX all-MiniLM-L6-v2, 384d)
- Reciprocal Rank Fusion: Combines keyword + semantic results intelligently
- Incremental Indexing: Blake3 hashing for zero-redundancy scans
- Resource Adaptive: Auto-detects CPU/GPU and adjusts batch sizes
🤖 AI Integration
- MCP Protocol: Native support for Model Context Protocol
- 7 Built-in Tools:
scan,query,embed,stats,remember,recall,status - Auto-Registration: Works with Claude Code, Cursor, Cline, Continue, Windsurf, MiMoCode
- Session Memory: Persistent conversation context across sessions
🛠️ Developer Experience
- Single Binary: No Python, no Node, no dependencies
- File Watcher: Auto-reindex on file changes
- REST API: HTTP endpoint on port 9090 for custom integrations
- CLI First: Full control from terminal
🎬 See It In Action

$ aikd init
✅ AIKD initialized for project
$ aikd scan
📊 Indexed 847 files, 12,453 chunks in 1.2s
$ aikd query "authentication flow"
1. src/auth/login.rs (Lines 45-89, Score: 0.923)
Implements JWT-based authentication with refresh tokens...
2. src/middleware/auth.rs (Lines 12-34, Score: 0.871)
Validates Bearer tokens on protected routes...
3. docs/architecture/auth.md (Lines 1-25, Score: 0.845)
Authentication flow diagram and security considerations...
📦 Installation
Recommended (One-Line)
Linux / macOS:
curl -sSf https://raw.githubusercontent.com/gelutjari/aikd/main/install.sh | bash
Windows (PowerShell):
irm https://raw.githubusercontent.com/gelutjari/aikd/main/install.ps1 | iex
Alternatives
📦 From crates.io (if you have Rust)
cargo install aikd
🍺 Homebrew (macOS/Linux)
brew install gelutjari/tap/aikd
🔧 Build from Source
git clone https://github.com/gelutjari/aikd.git
cd aikd
cargo build --release
cp target/release/aikd ~/.local/bin/
🐳 Docker
docker run -v $(pwd):/workspace -p 9090:9090 ghcr.io/gelutjari/aikd:latest
⚡ Quick Start (3 minutes)
Step 1: Initialize
cd your-project
aikd init
What does aikd init do?
Creates ~/.aikd/config.yaml with smart defaults based on your project type (Rust, Node, Python, Go). It detects .git, Cargo.toml, package.json, etc. and sets appropriate file filters.
Step 2: Scan Your Codebase
aikd scan
What happens during scan?
- Walks directory tree (skipping
node_modules,.git,target, etc.) - Chunks files by semantic boundaries (functions, headings)
- Generates BM25 index (Tantivy) and vector embeddings (ONNX)
- Stores everything in local SQLite database
Step 3: Search
# Keyword search (fast)
aikd query "error handling"
# Semantic search (smart)
aikd query "how does login work" --hybrid
# Get JSON output for scripting
aikd query "database connection" --json
Step 4: Connect to Your AI Agent
Claude Code / Cursor / Cline
AIKD auto-registers via MCP. Just restart your AI agent after running aikd scan.
The MCP config is at ~/.aikd/mcp.json:
{
"mcpServers": {
"aikd": {
"command": "aikd",
"args": ["serve"]
}
}
}
REST API
# Start the daemon
aikd daemon
# Query via HTTP
curl "http://localhost:9090/api/query?q=authentication&limit=5"
🎛️ Usage Modes
┌─────────────────┐
│ How to use │
│ AIKD? │
└────────┬────────┘
│
┌────────────────┼────────────────┐
▼ ▼ ▼
┌──────────┐ ┌──────────┐ ┌──────────┐
│ CLI │ │ MCP │ │ REST API │
│ Mode │ │ Server │ │ Daemon │
└──────────┘ └──────────┘ └──────────┘
Best for: Best for: Best for:
• Quick search • AI agents • Web apps
• Scripts • Claude Code • Custom UIs
• CI/CD • Cursor • Team shared
CLI Mode (default):
aikd query "rust error handling" --limit 5
aikd stats
aikd status
MCP Server (for AI agents):
aikd serve # Starts stdio MCP server
REST Daemon (background service):
aikd daemon # Start in background
aikd daemon foreground # Start in foreground
aikd daemon-stop # Stop daemon
📊 Benchmark Results

Hardware: AMD EPYC 7B13, 7.8GB RAM, NVMe SSD
| Operation | Time | Throughput |
|---|---|---|
| Index 1,000 files | 144ms | 6,934 files/s |
| BM25 Search | 0.21ms | 4,762 queries/s |
| Hybrid Search | 0.35ms | 2,857 queries/s |
| Concurrent (500) | 28ms | 17,669 queries/s |
| Embedding (batch) | 12ms/batch | ~800 chunks/s |
Resource Usage:
CPU: ████████░░░░░░░░░░░░ 22.9%
RAM: █████░░░░░░░░░░░░░░░ 27.4%
💡 Real-world context: A human eye blink takes ~300ms. In that time, AIKD can complete 857 hybrid searches across your entire codebase.
⚙️ Configuration
Default config (~/.aikd/config.yaml):
version: 2.0.0
scan:
include_paths: ["."]
exclude_paths: ["node_modules", ".git", "target"]
include_extensions: ["rs", "ts", "py", "md", "json"]
follow_symlinks: false
chunk:
max_tokens: 1000
min_tokens: 100
embedding:
enabled: true
model: all-MiniLM-L6-v2
batch_size: auto
server:
rest_port: 9090
auth_token: null
cors_origins: ["*"]
🐌 Slow Machine (4GB RAM, 2 cores)
embedding:
enabled: true
batch_size: 8
device: cpu
resource:
mode: Low
💪 Beefy Machine (32GB RAM, 16 cores, GPU)
embedding:
enabled: true
batch_size: 64
device: gpu
resource:
mode: Max
📝 Docs-Only Project
scan:
include_extensions: ["md", "txt", "rst"]
exclude_paths: [".git"]
filter:
max_file_size: 524288 # 512KB
👥 Team Sharing
server:
rest_port: 9090
auth_token: "your-secret-token"
cors_origins:
- "https://your-team-app.com"
🏗️ Architecture

┌─────────────────────────────────────────────────────────────┐
│ AIKD v2.0.0 │
├─────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────────┐ │
│ │ CLI │ │ MCP │ │ REST │ │ File Watcher│ │
│ │ (clap) │ │ (rmcp) │ │ (axum) │ │ (notify) │ │
│ └────┬────┘ └────┬────┘ └────┬────┘ └──────┬──────┘ │
│ │ │ │ │ │
│ └────────────┴────────────┴───────────────┘ │
│ │ │
│ ┌─────────────────────────┴──────────────────────────┐ │
│ │ Core Engine │ │
│ ├─────────────┬─────────────┬─────────────────────────┤ │
│ │ Scanner │ Chunker │ Session Manager │ │
│ │ (walkdir) │(pulldown- │ (conversation DB) │ │
│ │ │ cmark) │ │ │
│ └──────┬──────┴──────┬──────┴─────────────────────────┘ │
│ │ │ │
│ ┌──────┴──────┐ ┌────┴─────┐ ┌──────────────────────┐ │
│ │ Indexer │ │ Embedder │ │ Storage │ │
│ │ (Tantivy) │ │ (ONNX) │ │ (SQLite + WAL) │ │
│ │ BM25 + │ │ 384d │ │ + r2d2 pool │ │
│ │ HNSW ANN │ │ MiniLM │ │ + blake3 hashing │ │
│ └─────────────┘ └──────────┘ └──────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘
See docs/ARCHITECTURE.md for detailed breakdown.
🆘 Troubleshooting
Diagnostic Commands:
aikd status --json # System info
aikd stats # Index statistics
aikd daemon-pid # Check if daemon running
"No results found"
- Run
aikd scanfirst - Check
aikd statsto verify files indexed - Try broader search terms
- Check
include_extensionsin config
"Model not downloaded"
aikd model download
This downloads ~90MB ONNX model to ~/.local/share/aikd/model/.
"Port 9090 already in use"
# Change port in config
# ~/.aikd/config.yaml
server:
rest_port: 9091
Or stop existing process: aikd daemon-stop
High memory usage
Set resource mode to Low:
resource:
mode: Low
max_memory_mb: 512
MCP not connecting to Claude/Cursor
- Check
~/.aikd/mcp.jsonexists - Restart your AI agent
- Verify
aikd serveworks:echo '{"jsonrpc":"2.0","method":"initialize","id":1}' | aikd serve
Windows: "vcruntime140.dll not found"
Install Visual C++ Redistributable.
🤝 Community
Get Help:
- 💬 GitHub Discussions — Ask questions
- 🐛 Issues — Report bugs
- 📧 Email: [email protected]
Contributors:
| Contribution | Who |
|---|---|
| 🏗️ Architecture & Core | @gelutjari |
| 🔒 Security Audit | AI-assisted (MiMo) |
| ⚡ Performance Optimization | Community |
| 📖 Documentation | Community |
See CONTRIBUTING.md for how to contribute.
📄 License
MIT License — see LICENSE for details.
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.