This is a submission for the GitHub Copilot CLI Challenge
What I Built
I built kdex—a full-featured Rust CLI for indexing code, docs, and notes for AI-powered search—entirely with GitHub Copilot CLI. From initial brainstorming to a production-ready tool published on crates.io with CI/CD, landing page, and MCP server integration. Here's how it went.
As developers, we accumulate knowledge everywhere: code across dozens of repositories, notes in Obsidian vaults, documentation scattered in wikis. When working with AI assistants, they have no idea what's in your files—you end up copy-pasting context manually.
I wanted to build a tool that solves this. A local-first CLI that indexes everything and lets AI assistants search it via the Model Context Protocol (MCP).
Demo
Website: https://urbanisierung.github.io/kdex/
Github: https://github.com/urbanisierung/kdex
My Experience with GitHub Copilot CLI
The Approach: Brainstorm → Roadmap → Execute
Phase 1: Requirements Brainstorming
I started by having a conversation with Copilot CLI about what I wanted to build. We discussed:
- Target users (developers, knowledge workers, AI-assisted workflows)
- Core features (local indexing, full-text search, MCP integration)
- Tech stack decisions (Rust, SQLite with FTS5, ratatui for TUI)
- UX considerations (dual-mode CLI: interactive TUI + traditional commands)
The result was a comprehensive .github/copilot-instructions.md that established all the ground rules: coding standards, documentation requirements, folder structure, and project conventions.
Phase 2: Roadmap Generation
Next, I asked Copilot CLI to create a detailed implementation roadmap. It generated a 73KB doc/roadmap.md with:
- 14 implementation phases
- Each phase broken into parts with specific action items
- Code examples, SQL schemas, and module structures
- User journeys for different personas
- UX specifications including edge cases
The roadmap became the source of truth. As features were completed, Copilot CLI would check off items and move to the next.
Phase 3: Implementation
With a clear roadmap, I gave a simple instruction: "Implement the next phase."
And it did. Phase after phase.
The Implementation Journey
Foundation (Day 1)
- Scaffolded Rust project with proper structure
- Implemented configuration system with OS-aware paths
- Created SQLite database layer with FTS5 full-text search
- Built the indexer with binary file detection and .gitignore support
- Developed CLI commands:
index,search,list,update,remove
TUI & Polish (Day 2)
- Built full-screen interactive terminal UI with ratatui
- Added real-time search, file preview, repository management
- Implemented loading states, confirmation dialogs, welcome screen
- Fixed clippy warnings (the project maintains a zero-warning policy)
MCP Server (Day 3)
- Integrated the rmcp crate for MCP protocol
- Implemented 4 tools:
search,list_repos,get_file,get_context - Created integration documentation for GitHub Copilot, Claude, and Gemini
Vector Search (Day 4)
- Added semantic search using fastembed (MiniLM embeddings)
- Implemented hybrid search with Reciprocal Rank Fusion
- Built text chunking for large files
Remote Repositories (Day 5)
- Added ability to index GitHub repos by URL
- Implemented background sync with auto-pull
- Added SSH and token authentication for private repos
- Built config export/import for machine migration
CI/CD & Release (Day 6)
- Set up GitHub Actions for testing on Linux/macOS/Windows
- Created release workflow with cross-platform binary builds
- Configured crates.io publishing with Trusted Publishing (OIDC)
- Built install script for curl-based installation
Marketing & Documentation (Day 7)
- Rewrote README with engaging marketing content
- Created landing page for GitHub Pages
- Documented Ollama integration for local LLMs
- Added
add-mcpandself-updatecommands

Top comments (0)