Civyk Repo Index - Codebase indexing service for AI coding agents
Project description
Civyk Repo Index
Semantic code intelligence for AI coding agents — Give your AI assistant deep understanding of your codebase through the Model Context Protocol (MCP).
If you find this useful, please consider supporting the project!
Watch: What is Civyk Repo Index, why use it, and how to set it up
Local-First, Private, Secure
Your code never leaves your machine. Civyk Repo Index is a fully local MCP server:
- 100% offline — No cloud services, no API calls, no telemetry
- Your data stays yours — All indexes and caches stored locally in SQLite
- Works air-gapped — Perfect for proprietary codebases and enterprise environments
- Free binaries — Compiled binaries available via PyPI at no cost
Why Civyk Repo Index?
AI coding assistants have limited context windows. They can't read entire codebases. Civyk Repo Index provides token-budgeted semantic code intelligence:
- Symbol-aware search — Find functions, classes, and types instantly
- Smart context packs — Auto-select relevant code within token budgets
- Relationship tracking — Understand calls, imports, and inheritance
- Real-time indexing — Always up-to-date with your code changes
- Multi-language — Python, TypeScript, JavaScript, Java, Go, C#, Rust, Ruby, PHP
- Branch-aware — Separate indexes per git branch
- AI Context Cache — Persist code understanding across sessions, save 80-90% tokens
Quick Start
Installation
pip install civyk-repoix
Setup for Your AI Agent
cd /path/to/your/project
# Interactive init (recommended)
civyk-repoix init
# Or configure specific agent
civyk-repoix init --ai claude # Claude Code
civyk-repoix init --ai cursor-agent # Cursor
civyk-repoix init --ai windsurf # Windsurf
civyk-repoix init --ai copilot # GitHub Copilot
civyk-repoix init --ai opencode # OpenCode
civyk-repoix init --ai kilocode # Kilo Code
civyk-repoix init --ai antigravity # Antigravity
# Configure all supported agents at once
civyk-repoix init --all
Verify
civyk-repoix query index-status
MCP Tools
42 tools for code intelligence.
| Category | Tools |
|---|---|
| Core | index_status, build_context_pack, search_symbols, get_symbol, get_references, get_components, get_api_endpoints, get_dependencies, force_reindex |
| Navigation | get_file_symbols, get_definition, get_callers |
| Discovery | list_files, get_file_imports, search_code |
| Git | get_recent_changes, get_hotspots, get_branch_diff |
| Analysis | get_dead_code, find_circular_dependencies, analyze_impact, get_tests_for, get_code_for_test, get_duplicate_code, get_tool_performance_stats |
| Advanced | get_type_hierarchy, get_related_files, find_similar |
| AI Cache | store_understanding, recall_understanding, get_understanding_stats, invalidate_understanding |
| Context | build_delta_context_pack, map_trace_to_symbols, get_recommended_tests, build_doc_pack |
| Conversation | list_conversation_sessions, get_conversation_history, build_conversation_context, log_conversation_turn, finalize_conversation_session, search_conversations |
Tip: Use
recall_understandingbefore reading files — cached analysis saves 80-90% of tokens.
AI Context Cache — Your AI Remembers
The killer feature: Your AI assistant remembers what it learned about your code.
Traditional AI coding assistants forget everything when you start a new chat or session. With Civyk Repo Index's AI Context Cache, understanding persists:
Monday: AI reads auth.py → analyzes → stores understanding
Tuesday: New chat → AI recalls cached understanding → no file read needed!
Wednesday: You modify auth.py → cache auto-invalidates → AI re-analyzes
Why This Matters
| Without Cache | With Cache |
|---|---|
| AI re-reads files every session | AI recalls previous analysis instantly |
| Wastes tokens on repeated reads | 80-90% token savings |
| Slow context building | Sub-millisecond recall |
| Understanding lost on chat restart | Persists across sessions and chats |
How It Works
- First encounter: AI reads a file, analyzes it, calls
store_understanding - Future sessions: AI calls
recall_understandingfirst — gets cached analysis - File changes: Cache auto-invalidates via content hash — AI re-analyzes
- Per-repository: Each repo has its own persistent cache
Cache Tools
| Tool | Purpose |
|---|---|
recall_understanding |
Call FIRST before reading any file — retrieves cached analysis |
store_understanding |
Persist AI's analyzed understanding after reading files |
get_understanding_stats |
Session start: List cached targets, filter by path/scope, sort, check freshness |
invalidate_understanding |
Manually clear cached entries when needed |
store_understanding supports structured fields (purpose, key_points, gotchas) plus a free-form analysis field for complex business logic, state machines, and workflows.
Pro tip: The AI Context Cache is stored locally in SQLite alongside your code index. Your analysis never leaves your machine.
Conversation History — Context Across Sessions
Your AI assistant remembers conversation context across sessions and compactions.
When Claude Code or other AI agents hit context limits, they compact conversations — losing valuable context. With Civyk Repo Index's Conversation History, your discussions persist:
Session 1: AI discusses auth refactor → conversation logged
[Compaction happens]
Session 2: AI calls build_conversation_context → restores key decisions and goals
Conversation Tools
| Tool | Purpose |
|---|---|
list_conversation_sessions |
Find recent sessions to restore context |
get_conversation_history |
Retrieve turns from a specific session |
build_conversation_context |
Build token-budgeted context from session history |
search_conversations |
Full-text search across all past conversations |
Hook Integration: Conversation logging integrates with Claude Code hooks to automatically capture prompts and tool usage.
AI Cache Hooks — Deterministic Cache Behavior
AI agents don't need explicit instructions — hooks enforce cache operations automatically.
Traditional approaches rely on AI following documentation, which is unreliable. Civyk Repo Index hooks ensure deterministic behavior:
┌─────────────────────────────────────────────────────────────────┐
│ SessionStart Hook │
│ → Loads cache stats, shows available entries │
├─────────────────────────────────────────────────────────────────┤
│ PreToolUse:Read Hook │
│ → Checks cache BEFORE file read │
│ → Injects cached understanding if available │
├─────────────────────────────────────────────────────────────────┤
│ PostToolUse:Read Hook │
│ → Reminds AI to store_understanding after analysis │
├─────────────────────────────────────────────────────────────────┤
│ Stop Hook │
│ → Persists unsaved learnings before session ends │
└─────────────────────────────────────────────────────────────────┘
Supported Agents
| Agent | MCP | Hooks | Config Location |
|---|---|---|---|
| Claude Code | Yes | Yes | .claude/settings.json |
| Cursor | Yes | Yes | .cursor/hooks.json |
| Windsurf | Yes | Yes | .windsurf/hooks.json |
| GitHub Copilot | Yes | Yes | .github/hooks/ |
Setup
Hooks are configured automatically during setup:
civyk-repoix init # Configures MCP + hooks
civyk-repoix init --no-hooks # Skip hook configuration
No prompt engineering required: Hooks inject cache context and reminders programmatically, so AI agents use the cache without explicit instructions.
Language Support
| Tier | Languages |
|---|---|
| Full | Python, TypeScript, JavaScript |
| Standard | Java, Go, C#, Rust, Ruby, PHP |
| SQL | T-SQL, PL/SQL, Standard SQL |
| Docs | Markdown |
Architecture
Daemon-based architecture for multi-repository support with dual interface — MCP protocol for AI agents or CLI for direct use.
graph LR
IDE[IDE] --> Shim[stdio Shim] --> Daemon[Daemon Manager] --> Workers[Repository Workers] --> DB[(SQLite)]
Key Components:
- Daemon Manager — Coordinates worker lifecycle
- Repository Worker — One per repo, handles indexing and queries
- Indexer — Tree-sitter parsing, symbol extraction
- Context Builder — Token-budgeted context generation
- Conversation Manager — Session tracking and history persistence
Dual Interface
| Mode | Usage | Interface |
|---|---|---|
| MCP | AI agents (Claude, Cursor, etc.) | JSON-RPC over stdio |
| CLI | Direct terminal use, scripts | civyk-repoix query <tool> |
Both interfaces use the same underlying daemon and tool implementations — identical functionality, different access methods.
CLI Mode
Use tools directly without MCP protocol:
civyk-repoix query search-symbols --query "%User%" --kind class
civyk-repoix query build-context-pack --task "implement auth" --token-budget 1000
civyk-repoix query list-conversation-sessions --days 7 # View recent sessions
civyk-repoix query --schema # Get JSON schema of all tools
Tool Name Mapping: MCP uses snake_case (e.g., search_symbols), CLI uses kebab-case (e.g., search-symbols).
Configuration
Location: ~/.config/civyk-repoix/config.yaml
index:
max_file_size_mb: 10
debounce_ms: 500
daemon:
max_workers: 10
idle_worker_timeout_s: 3600
context:
default_token_budget: 800
max_token_budget: 4000
Environment Variables:
| Variable | Default | Description |
|---|---|---|
CIVYK_LOG_LEVEL |
INFO | Log level |
REPOIX_PARSE_WORKERS |
CPU count | Parallel parsing workers |
REPOIX_CACHE_TTL |
60 | Query cache TTL (seconds) |
Performance
Benchmarked on Windows 11 Pro, Python 3.13, AMD Ryzen processor with a codebase of 152 files and 6,443 symbols.
Tool Performance
| Tool | Avg Latency | Throughput | Category |
|---|---|---|---|
index_status |
0.5ms | 3,700+ req/s | Fast |
get_symbol |
0.6ms | 3,600+ req/s | Fast |
get_definition |
0.6ms | 3,400+ req/s | Fast |
list_files |
0.7ms | 3,100+ req/s | Fast |
get_file_symbols |
0.8ms | 2,800+ req/s | Fast |
search_symbols |
1.8ms | 600+ req/s | Medium |
get_callers |
2.2ms | 500+ req/s | Medium |
get_references |
2.5ms | 450+ req/s | Medium |
search_code |
4ms | 280+ req/s | Medium |
get_components |
2ms | 550+ req/s | Medium |
build_context_pack |
16ms | 60+ req/s | Compute |
analyze_impact |
35ms | 30+ req/s | Compute |
get_dead_code |
45ms | 25+ req/s | Compute |
find_similar |
90ms | 12+ req/s | Compute |
Index Performance
| Operation | Performance |
|---|---|
| Full index (152 files) | ~3 seconds |
| Delta index | < 500ms |
| Symbol search | < 2ms |
| Context pack build | < 20ms |
Support
Help keep this project alive and growing!
If Civyk Repo Index has helped your development workflow, consider supporting its continued development. Your contribution helps with:
- Ongoing maintenance and bug fixes
- New feature development
- Infrastructure costs
50% of all donations go directly to children's charities helping those in need. The remaining funds support project maintenance and feature upgrades.
Every contribution, no matter the size, makes a difference.
Security
All releases are cryptographically signed and include supply chain provenance.
Verify Package Signatures
pip install sigstore
sigstore verify identity \
--cert-oidc-issuer https://token.actions.githubusercontent.com \
civyk_repoix-*.whl
Security Features
- Sigstore signing on all releases
- SLSA provenance for supply chain security
- OpenSSF Scorecard for security best practices
- 100% local operation - your code never leaves your machine
See SECURITY.md for our full security policy and vulnerability reporting.
License
Proprietary — see LICENSE
Free to use: Compiled binaries are available via PyPI at no cost for personal and commercial use.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file civyk_repoix-1.3.0-cp313-cp313-win_amd64.whl.
File metadata
- Download URL: civyk_repoix-1.3.0-cp313-cp313-win_amd64.whl
- Upload date:
- Size: 7.2 MB
- Tags: CPython 3.13, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
65f382289e28586bcc468e09385aa6f86dbd5added5055da3169c85113f88e05
|
|
| MD5 |
12da6fa73927bb392ac97c4f9ef953da
|
|
| BLAKE2b-256 |
2ae512807f5e3a20c5650a21a378cb2f03b2de58511af9fe95670de1d91750fb
|
File details
Details for the file civyk_repoix-1.3.0-cp312-cp312-win_amd64.whl.
File metadata
- Download URL: civyk_repoix-1.3.0-cp312-cp312-win_amd64.whl
- Upload date:
- Size: 7.2 MB
- Tags: CPython 3.12, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
486fbf2bff6a950ae336cc5ac88d3794220889e3f4216140b6de672be4bab121
|
|
| MD5 |
28ad18eda9cbfcad310e34731d3e5cf7
|
|
| BLAKE2b-256 |
fa9ba8ae0d1e6d6387c4c78a680e0148b10286a074637c02d5e303dd7afb58fd
|
File details
Details for the file civyk_repoix-1.3.0-cp311-cp311-win_amd64.whl.
File metadata
- Download URL: civyk_repoix-1.3.0-cp311-cp311-win_amd64.whl
- Upload date:
- Size: 7.0 MB
- Tags: CPython 3.11, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4c76223750044f0c6137f42b5fb46ca39d218ed526a2753fafac9c7cdc6c3f27
|
|
| MD5 |
67062c08d8213d616b148f8d23a18f51
|
|
| BLAKE2b-256 |
442c73fe0b0aaf5f8793b2fde55fda8dac936355534c9f2f232d5f2b93e1b7d0
|
File details
Details for the file civyk_repoix-1.3.0-cp310-cp310-win_amd64.whl.
File metadata
- Download URL: civyk_repoix-1.3.0-cp310-cp310-win_amd64.whl
- Upload date:
- Size: 6.8 MB
- Tags: CPython 3.10, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
97bc41dc186fc143336af7e589c2191bf94ae55756f7d63809a5204c81a143bb
|
|
| MD5 |
f32dfc2086c6edc5135862d1e0bbbb08
|
|
| BLAKE2b-256 |
50f345ccacc7961513c85963a4f863b8a968a3c3e53d31e0595b21b7c6cf7615
|