Skip to main content

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-mb based on your repository size and available memory
  • Debounce timing: Lower --debounce-sec for faster updates, higher for less CPU usage
  • Search results: Increase --k to 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

  1. Start the MCP server:

    uv run uvicorn server:app --host localhost --port 8000
    
  2. Index your repository:

    uv run python code_index.py index /path/to/your/repo
    
  3. 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 repository
  • search_code - Search code using natural language queries
  • get_index_status - Check current state of the code index
  • watch_repository - Monitor repository for changes
  • list_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

๐Ÿ’ก 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-mb based on your repository size and available memory
  • Debounce timing: Lower --debounce-sec for faster updates, higher for less CPU usage
  • Search results: Increase --k to see more results, decrease for faster queries

File Management

  • Index files: code_index.duckdb (database) and hnsw_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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

turboprop-0.1.8.tar.gz (41.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

turboprop-0.1.8-py3-none-any.whl (31.4 kB view details)

Uploaded Python 3

File details

Details for the file turboprop-0.1.8.tar.gz.

File metadata

  • Download URL: turboprop-0.1.8.tar.gz
  • Upload date:
  • Size: 41.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.7

File hashes

Hashes for turboprop-0.1.8.tar.gz
Algorithm Hash digest
SHA256 d5c0c1a0307cfc69a90024ad472764f9181a5f0230e71f741b31871e9eb23559
MD5 76774c3f9bf7226339d08d836ddd3a5a
BLAKE2b-256 4b2f70afeb2f966eb8b13f36db1ee93757c988e59b25714dbff3b81b8cd79f10

See more details on using hashes here.

File details

Details for the file turboprop-0.1.8-py3-none-any.whl.

File metadata

  • Download URL: turboprop-0.1.8-py3-none-any.whl
  • Upload date:
  • Size: 31.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.7

File hashes

Hashes for turboprop-0.1.8-py3-none-any.whl
Algorithm Hash digest
SHA256 f2c1274511b617b19232207aaf2eda0db27c519b7bb6d1e1943659e59ac0c527
MD5 11897751b065e52fc0f0cbe20e40801b
BLAKE2b-256 16bd4d616a82a30539c1b99c98a7cabbf1162ac14c5d6d21318eb9e794e1110d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page