This is a historical migration guide for upgrading from v7.x to v8.x. The current stable version is v8.13.0, which has evolved significantly since the initial v8.0.0 release. The core migration steps remain accurate for transitioning from v7.x to any v8.x version.
Version 8.0.0 represented a major architectural simplification of code-indexer, removing legacy infrastructure and consolidating around a streamlined container-free architecture. This guide walks you through upgrading from v7.x to v8.x.
- The Qdrant vector database backend has been completely removed
- Only the filesystem backend is supported in v8.0+
- Container management infrastructure has been eliminated
- All Docker/Podman container management code removed
- No more container orchestration, port management, or container health checks
- Code-indexer now runs entirely container-free
- Ollama local embeddings provider has been removed
- VoyageAI is the only supported embedding provider in v8.0+
- Focus on production-quality cloud-based embeddings
What's Removed:
- QdrantContainerBackend class and all integration code
- DockerManager, ContainerManager, and port registry system
- OllamaClient and local embedding infrastructure
- Container-related CLI commands and configuration options
- Approximately 15,000 lines of legacy code
- 135 deprecated test files
What Remains:
- FilesystemVectorStore (only backend)
- VoyageAI embeddings (only provider)
- CLI Mode and Daemon Mode (simplified)
- Server Mode (simplified, container-free)
- All core semantic search functionality
Before upgrading, backup your existing index data:
# Backup local project index
cp -r .code-indexer .code-indexer.backup
# If using server mode, backup server data
cp -r ~/.cidx-server ~/.cidx-server.backup# Using pipx (recommended)
pipx upgrade code-indexer
# Or using pip in virtual environment
pip install --upgrade code-indexerVerify the new version:
cidx --version
# Should show: 8.13.0 or higher (current stable: v8.13.0)Edit your .code-indexer/config.json and remove these fields if present:
{
"qdrant_config": { ... }, // REMOVE - No longer supported
"ollama_config": { ... }, // REMOVE - No longer supported
"containers_config": { ... }, // REMOVE - No longer supported
"project_ports": { ... }, // REMOVE - No longer needed
"project_containers": { ... } // REMOVE - No longer needed
}Your configuration should now only specify:
{
"project_root": "/path/to/your/project",
"embedding_provider": {
"provider_type": "voyage-ai",
"model": "voyage-3"
},
"vector_store": {
"provider": "filesystem"
}
}Or simply rely on defaults (filesystem backend and VoyageAI are automatic):
{
"project_root": "/path/to/your/project"
}If you were using Ollama, you now need a VoyageAI API key:
# Export API key
export VOYAGE_API_KEY="your-api-key-here"
# Or add to your shell profile
echo 'export VOYAGE_API_KEY="your-api-key-here"' >> ~/.bashrc
source ~/.bashrcGet your API key from: https://www.voyageai.com/
If you were using containers with Qdrant:
# These commands are now no-ops in v8.0 but safe to run
cidx stopIf you had containers running manually:
# Stop Qdrant containers
podman stop cidx-qdrant-<project>
# or
docker stop cidx-qdrant-<project>
# Remove containers
podman rm cidx-qdrant-<project>
docker rm cidx-qdrant-<project>Re-initialize your project with the new filesystem backend:
# Navigate to your project
cd /path/to/your/project
# Clean old data (optional but recommended)
rm -rf .code-indexer
# Initialize with v8.0 defaults
cidx init
# Re-index your codebase
cidx indexFor projects with git history indexing:
cidx index --index-commitsTest that everything works:
# Check status
cidx status
# Run a test query
cidx query "authentication logic"
# If using daemon mode
cidx config --daemon
cidx start
cidx query "test query"{
"project_root": "/home/user/myproject",
"embedding_provider": {
"provider_type": "voyage-ai",
"model": "voyage-3"
},
"vector_store": {
"provider": "qdrant",
"qdrant_config": {
"port": 6333,
"container_name": "cidx-qdrant-myproject"
}
},
"project_ports": {
"qdrant_port": 6333,
"qdrant_grpc_port": 6334
},
"project_containers": {
"qdrant_container": "cidx-qdrant-myproject"
}
}{
"project_root": "/home/user/myproject",
"embedding_provider": {
"provider_type": "voyage-ai",
"model": "voyage-3"
},
"vector_store": {
"provider": "filesystem"
}
}Or even simpler (relies on defaults):
{
"project_root": "/home/user/myproject"
}{
"project_root": "/home/user/myproject",
"embedding_provider": {
"provider_type": "ollama",
"model": "nomic-embed-text"
},
"vector_store": {
"provider": "filesystem"
}
}{
"project_root": "/home/user/myproject",
"embedding_provider": {
"provider_type": "voyage-ai",
"model": "voyage-3"
},
"vector_store": {
"provider": "filesystem"
}
}Cause: Your configuration still references Qdrant backend.
Solution:
- Remove
"qdrant_config"from your configuration file - Set
"vector_store": { "provider": "filesystem" }or remove (default is filesystem) - Re-index:
cidx index
Cause: Your configuration still references Ollama embedding provider.
Solution:
- Remove
"ollama_config"from your configuration file - Set
"embedding_provider": { "provider_type": "voyage-ai" } - Export VoyageAI API key:
export VOYAGE_API_KEY="your-key" - Re-index:
cidx index
Cause: Your configuration contains container-related fields.
Solution:
- Remove
"containers_config","project_ports", and"project_containers"from configuration - Code-indexer v8.0 runs container-free
- Re-initialize if needed:
cidx init
Cause: VoyageAI API key not set in environment.
Solution:
export VOYAGE_API_KEY="your-api-key-here"
# Verify it's set
echo $VOYAGE_API_KEY
# Re-run command
cidx indexCause: HNSW index may need rebuilding.
Solution:
cidx index --rebuild-indexCause: Git commit indexing needs to be re-run.
Solution:
cidx index --index-commitsCause: Daemon configuration may need updating.
Solution:
# Check daemon status
cidx status
# Enable daemon mode
cidx config --daemon
# Start daemon
cidx startIf you need to roll back to v7.x:
# Restore project index
rm -rf .code-indexer
mv .code-indexer.backup .code-indexer
# If using server mode
rm -rf ~/.cidx-server
mv ~/.cidx-server.backup ~/.cidx-server# Using pipx
pipx install code-indexer==7.4.0
# Or using pip
pip install code-indexer==7.4.0cidx --version
# Should show: 7.4.0
cidx status
cidx query "test query"- Faster startup: No container initialization overhead
- Reduced complexity: Simpler architecture means fewer potential failure points
- Cleaner codebase: 15,000 lines of legacy code removed
- No container runtime required: Works on any system with Python
- Simpler deployment: No Docker/Podman dependency
- Easier troubleshooting: Fewer components to debug
- Lower resource usage: No container overhead
- Faster test suite: ~30% improvement in test execution time
- Reduced maintenance: Less infrastructure to maintain
- Clearer architecture: Focus on core semantic search functionality
- README: Updated with v8.0 usage examples
- Architecture docs: See
docs/architecture.mdfor v8.0 architecture overview - CLAUDE.md: Updated project instructions for v8.0
- GitHub Issues: https://github.com/LightspeedDMS/code-indexer/issues
- Discussions: https://github.com/LightspeedDMS/code-indexer/discussions
When reporting migration issues, please include:
- Previous version (e.g., v7.4.0)
- Current version (e.g., v8.0.0)
- Operating system and Python version
- Relevant configuration (sanitize sensitive data)
- Error messages or unexpected behavior
- Steps you've taken so far
No, Qdrant support has been completely removed in v8.x. The filesystem backend is now the only option. If you absolutely require Qdrant, you must stay on v7.x.
No, Ollama local embeddings have been removed. VoyageAI is the only supported embedding provider in v8.x. VoyageAI provides production-quality embeddings with excellent performance.
No, the decision to remove containers is permanent. Code-indexer v8.x focuses on a streamlined, container-free architecture.
Server mode is still available in v8.x, but now runs container-free using the filesystem backend. See the updated server documentation for details.
VoyageAI offers a free tier for development and testing. See their pricing page for production pricing: https://www.voyageai.com/pricing
Yes, you must re-index your codebase after migrating to v8.x. The filesystem storage format is different from Qdrant, so a fresh index is required.
No, Qdrant-based indexes cannot be directly migrated. You must re-index using the filesystem backend. This typically takes minutes for medium-sized codebases.
No, v8.x is a major breaking release. You must fully migrate all projects and cannot run v7.x and v8.x side-by-side on the same project.
Use this checklist to track your migration progress:
- Backup existing index data
- Upgrade to code-indexer v8.13.0 (or latest v8.x)
- Remove legacy configuration fields (qdrant_config, ollama_config, containers_config)
- Set up VoyageAI API key if migrating from Ollama
- Stop and remove any Qdrant containers
- Re-initialize project:
cidx init - Re-index codebase:
cidx index - Re-index git history if needed:
cidx index --index-commits - Verify queries work:
cidx query "test" - Update CI/CD pipelines if applicable
- Update team documentation if applicable
- Remove backup after confirming everything works
| Version | Date | Changes |
|---|---|---|
| 1.0 | 2025-11-20 | Initial migration guide for v8.0.0 release |