Lightning-fast semantic code search and indexing with DuckDB vector operations
Project description
Turboprop ๐
Lightning-fast semantic code search with AI embeddings. Transform your codebase into a searchable knowledge base using natural language queries.
โจ Key Features
- ๐ Semantic Search: Find code by meaning, not just keywords ("JWT authentication" finds auth logic)
- ๐ Lightning Fast: DuckDB vector operations for sub-second search across large codebases
- ๐ Live Updates: Watch mode with intelligent debouncing - your index stays fresh as you code
- ๐ค MCP Ready: Perfect integration with Claude and other AI coding assistants
- ๐ Git-Aware: Respects .gitignore and only indexes what matters
- ๐ป Simple CLI: Clean command-line interface with helpful guidance
๐ Quick Start
MCP Configuration (Claude Integration) - Front and Center!
Add this to your Claude Desktop MCP configuration file:
{
"mcpServers": {
"turboprop": {
"command": "uvx",
"args": [
"turboprop",
"mcp",
"--repository",
"/path/to/your/codebase",
"--auto-index"
]
}
}
}
Then restart Claude Desktop and start asking questions about your code:
- "Find JWT authentication code"
- "Show me error handling patterns"
- "Where is the database connection setup?"
Installation & Basic Usage
# Install globally
pip install turboprop
# Index your codebase
turboprop index .
# Search with natural language
turboprop search "JWT authentication"
# Watch for changes (keeps index updated)
turboprop watch .
โ๏ธ CLI Usage
index - Build Search Index
turboprop index <repository_path> [options]
Options:
--max-mb FLOAT Maximum file size in MB to index (default: 1.0)
--workers INTEGER Number of parallel workers (default: CPU count)
--force-all Force reprocessing of all files
Examples:
turboprop index . # Index current directory
turboprop index ~/my-project # Index specific project
turboprop index . --max-mb 2.0 # Allow larger files
search - Semantic Code Search
turboprop search "<query>" [options]
Options:
--repo PATH Repository path (default: current directory)
--k INTEGER Number of results to return (default: 5)
Query Examples:
turboprop search "JWT authentication" # Find auth-related code
turboprop search "parse JSON response" # Discover JSON parsing logic
turboprop search "error handling middleware" # Locate error handling patterns
turboprop search "database connection setup" # Find DB initialization code
turboprop search "React component for forms" # Find form-related components
watch - Live Index Updates
turboprop watch <repository_path> [options]
Options:
--max-mb FLOAT Maximum file size in MB (default: 1.0)
--debounce-sec FLOAT Seconds to wait before processing changes (default: 5.0)
Example:
turboprop watch . --debounce-sec 3.0 # Faster updates
mcp - Start MCP Server
turboprop mcp [options]
Options:
--repository PATH Repository to index and monitor (default: current directory)
--max-mb FLOAT Maximum file size in MB (default: 1.0)
--debounce-sec FLOAT Seconds to wait before processing changes (default: 5.0)
--auto-index Automatically index on startup (default: True)
--no-auto-index Don't automatically index on startup
--auto-watch Automatically watch for changes (default: True)
--no-auto-watch Don't automatically watch for changes
Examples:
turboprop mcp --repository . # Start MCP server for current directory
turboprop mcp --repository /path/to/repo # Index specific repository
turboprop mcp --repository . --max-mb 2.0 # Allow larger files
turboprop mcp --repository . --no-auto-index # Don't auto-index on startup
Features Available in Claude
When using the MCP server with Claude:
- ๐ Semantic Code Search: Ask Claude to find code using natural language
- ๐ Repository Indexing: Automatically index and watch your codebase
- ๐ Real-time Updates: Index stays fresh as you code
- ๐ฌ Natural Queries: "Find JWT authentication code", "Show error handling patterns"
๐ก Pro Tips & Search Examples
Query Examples
"JWT authentication"โ Find auth-related code"parse JSON response"โ Discover JSON parsing logic"error handling middleware"โ Locate error handling patterns"database connection setup"โ Find DB initialization code"React component for forms"โ Find form-related components
Performance Tips
- File size limit: Adjust
--max-mbbased on your repository size and available memory - Debounce timing: Lower
--debounce-secfor faster updates, higher for less CPU usage - Search results: Increase
--kto see more results, decrease for faster queries
๐ License
MIT License - feel free to use this in your projects!
Ready to supercharge your code exploration? Get started in 60 seconds! ๐โจ
๐ง Optimized for Claude Code
Add .claude/code-index.commands.md for slash commands.
Thatโs itโfucking easy as pie. ๐ฐ๐
๐ป Enhanced CLI Experience
Turboprop now features a beautiful, user-friendly CLI with:
Rich Help System
uv run python code_index.py --help # Main help with examples
uv run python code_index.py index --help # Detailed command help
uv run python code_index.py search --help # Search-specific guidance
Visual Feedback
- ๐ Branded startup messages
- โก Progress indicators with emojis
- ๐ Rich search result formatting
- ๐ก Helpful tips and suggestions
- โ Clear error messages with solutions
Smart Error Handling
- Missing index detection with guidance
- File size limit recommendations
- Search result explanations
- Recovery suggestions
๐ MCP Integration (Claude & AI Assistants)
Quick Setup for Claude
-
Start the MCP server:
uv run uvicorn server:app --host localhost --port 8000
-
Index your repository:
uv run python code_index.py index /path/to/your/repo
-
Use in Claude with slash commands:
/search JWT authentication- Find auth-related code/search React form validation- Find form components/status- Check index health
Available MCP Tools
index_repository- Build searchable index from code repositorysearch_code- Search code using natural language queriesget_index_status- Check current state of the code indexwatch_repository- Monitor repository for changeslist_indexed_files- Show files currently in the index
MCP Configuration
The repository includes ready-to-use MCP configuration:
.mcp/config.json- Server configuration.claude/turboprop-commands.md- Claude slash commands
โ๏ธ Complete CLI Reference
index - Build Search Index
uv run python code_index.py index <repository_path> [options]
Options:
--max-mb FLOAT Maximum file size in MB to index (default: 1.0)
Examples:
uv run python code_index.py index . # Index current directory
uv run python code_index.py index ~/my-project # Index specific project
uv run python code_index.py index . --max-mb 2.0 # Allow larger files
search - Semantic Code Search
uv run python code_index.py search "<query>" [options]
Options:
--k INTEGER Number of results to return (default: 5)
Query Examples:
"JWT authentication" โ Find auth-related code
"parse JSON response" โ Discover JSON parsing logic
"error handling middleware" โ Locate error handling patterns
"database connection setup" โ Find DB initialization code
"React component for forms" โ Find form-related components
watch - Live Index Updates
uv run python code_index.py watch <repository_path> [options]
Options:
--max-mb FLOAT Maximum file size in MB (default: 1.0)
--debounce-sec FLOAT Seconds to wait before processing changes (default: 5.0)
Example:
uv run python code_index.py watch . --debounce-sec 3.0 # Faster updates
๐ HTTP API Server
Start the Server
# Development mode with auto-reload (using uv)
uv run uvicorn server:app --reload --host 0.0.0.0 --port 8000
# Production mode
uv run uvicorn server:app --host 0.0.0.0 --port 8000
# OR with activated virtual environment
uvicorn server:app --reload --host 0.0.0.0 --port 8000
API Endpoints
POST /index - Build Index
curl -X POST "http://localhost:8000/index" \
-H "Content-Type: application/json" \
-d '{"repo": "/path/to/repository", "max_mb": 1.0}'
# Response: {"status": "indexed", "files": 1247}
GET /search - Search Code
curl "http://localhost:8000/search?query=JWT%20authentication&k=5"
# Response:
[
{
"path": "/src/auth/middleware.py",
"snippet": "def verify_jwt_token(token: str):\n \"\"\"Verify JWT token and extract claims...",
"distance": 0.234
}
]
GET /status - Index Status
curl "http://localhost:8000/status"
# Response:
{
"files_indexed": 1247,
"database_size_mb": 125.6,
"search_index_ready": true,
"last_updated": "Recent",
"embedding_dimensions": 384,
"model_name": "all-MiniLM-L6-v2"
}
Interactive API Documentation
- Swagger UI: http://localhost:8000/docs
- ReDoc: http://localhost:8000/redoc
๐ก Pro Tips & Best Practices
Search Query Optimization
- Use descriptive phrases: "authentication middleware" vs just "auth"
- Ask conceptual questions: "how to handle errors" vs "try catch"
- Combine multiple concepts: "JWT token validation middleware"
- Be domain-specific: "React form validation" vs "form validation"
Performance Tuning
- File size limit: Adjust
--max-mbbased on your repository size and available memory - Debounce timing: Lower
--debounce-secfor faster updates, higher for less CPU usage - Search results: Increase
--kto see more results, decrease for faster queries
File Management
- Index files:
code_index.duckdb(database) andhnsw_code.idx(search index) - Location: Created in the current working directory
- Cleanup: Delete these files to reset the index completely
- Backup: Copy these files to backup your index
๐๏ธ Architecture Overview
โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ
โ Git Repository โโโโโถโ File Scanner โโโโโถโ Code Files โ
โ (.gitignore โ โ (scan_repo) โ โ (.py, .js, etc)โ
โ aware) โ โโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโโโโ โ
โผ
โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ
โ Search Results โโโโโโ HNSW Index โโโโโโ Embeddings โ
โ (ranked by โ โ (fast vector โ โ (ML model: โ
โ similarity) โ โ search) โ โ all-MiniLM) โ
โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ
โฒ โ
โ โผ
โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ
โ User Query โโโโโถโ Query Embedding โ โ DuckDB Storage โ
โ ("parse JSON") โ โ (same model) โ โ (persistent) โ
โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ
โฒ
โ
โโโโโโโโโโโโโโโโโโโโ
โ FastAPI Server โ โโโ MCP Integration
โ (HTTP API) โ Claude, etc.
โโโโโโโโโโโโโโโโโโโโ
๐ค Contributing
We welcome contributions! Key areas for improvement:
- Additional programming language support
- Performance optimizations for large repositories
- IDE/editor integrations
- Advanced search features (regex, file filters, etc.)
- Better error handling and user feedback
- Enhanced MCP tool capabilities
๐ License
MIT License - feel free to use this in your projects!
Ready to supercharge your code exploration? Get started in 60 seconds! ๐โจ
Turboprop: Because finding code should be as smooth as flying.
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 Distribution
Built Distribution
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 turboprop-0.1.7.tar.gz.
File metadata
- Download URL: turboprop-0.1.7.tar.gz
- Upload date:
- Size: 39.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a52081959f046f46ac01c8bf2ac34131dadfb32943e058ef10efe652ec16e9ed
|
|
| MD5 |
03da6bfea574491395df3ea9989db0f9
|
|
| BLAKE2b-256 |
eb04d903881d91deba1fe9413ebebc8fe45cf65f61e682e98cc9b7adcbf223a7
|
File details
Details for the file turboprop-0.1.7-py3-none-any.whl.
File metadata
- Download URL: turboprop-0.1.7-py3-none-any.whl
- Upload date:
- Size: 30.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4c0b2a342cda1f27391849f21cb6f0f5914457653c21dea5d8c4bc83eba09565
|
|
| MD5 |
ba8cf5d78f1050adca18c57033d8ec81
|
|
| BLAKE2b-256 |
61c57cd2eb1fd058399a74e3e305402714329630cab7fcc83beab4df8cd05c03
|