CocoIndex Code is a semantic code-search tool for a codebase, exposed as the ccc command-line interface and as an MCP server. It chunks source by abstract syntax tree rather than by fixed line windows, so a query returns whole functions and classes with file path, language, line numbers, and a similarity score. The stated aim is to let a coding agent find relevant code by meaning before it starts opening files, with a documented token saving of about 70%.
Indexing is built on CocoIndex, a Rust data-transformation engine, and runs through a background daemon that starts on first use. ccc index builds or updates the index and auto-initialises a new project; ccc search queries it, scoped by default to the current working directory and filterable by language, path glob, and pagination. ccc grep is a separate structural search that matches a by-example pattern against the syntax tree with no index, daemon, or embeddings, using \NAME-style metavariables so whitespace and intervening tokens do not matter.
Two install profiles decide where embeddings come from. The full package pulls in sentence-transformers so embeddings run locally with no API key, defaulting to Snowflake arctic-embed-xs; the slim package uses LiteLLM only and needs a cloud embedding provider and key. The same split exists as Docker images, roughly 450 MB for the slim tag and 5 GB for the full tag, with a persistent-container setup that keeps the daemon and embedding model warm across sessions.
For agent use, the repository is a plugin marketplace consumed by Claude Code and Grok, shipping a ccc skill, session-start and post-edit hooks that re-index incrementally, and a stdio MCP server. Oh My Pi reads the same marketplace with a TypeScript extension in place of command hooks. The MCP path is also configurable directly for Codex, OpenCode, and Kilo Code, exposing one search tool with query, limit, offset, refresh, language, and path arguments. Settings live in YAML files, and anonymous usage telemetry can be disabled with an environment variable.
Features
- AST-based chunking: code is split along syntax-tree boundaries so results are whole functions and classes rather than arbitrary line spans
- Semantic search: ccc search matches by meaning, with language, path-glob, offset, and limit filters and an optional refresh before querying
- Structural search: ccc grep matches by-example patterns against the syntax tree locally, with no index or embeddings required
- Incremental indexing: only changed files are reprocessed, driven by a background daemon and optional editor hooks
- Local or cloud embeddings: the full install runs sentence-transformers locally; the slim install routes through LiteLLM to a cloud provider
- Agent integrations: a plugin marketplace for Claude Code, Grok, and Oh My Pi, plus manual MCP setup for Codex, OpenCode, and Kilo Code
- MCP server: ccc mcp runs a stdio server exposing a search tool that returns code chunks with paths, line numbers, and scores
- Diagnostics: ccc status, ccc doctor, and ccc daemon subcommands report index stats, settings health, and daemon state
- Docker images: slim and full variants for a reproducible setup with no host Python or system dependencies
- Telemetry opt-out: anonymous usage events can be turned off with COCOINDEXDISABLEUSAGE_TRACKING
