octocode

App Listed

AI-powered code intelligence with semantic search, knowledge graphs, and built-in MCP server. Transform your codebase into a queryable knowledge graph for AI assistants.

Checked · Sources

Downloads
208
Dependents
Not applicable
Stars
522
Forks
60
Contributors
10
Commits
760
Latest release
0.29.1 ·

About

From the project README ·

Octocode logo

Code search and dependency graphs for AI assistants.

Quick start · MCP integration · OctoFS · Documentation · Contributing · Website

Octocode is a Rust CLI and MCP server for exploring codebases. It combines semantic search, structural search, and a live graph of symbols and dependencies. Connect it to Claude Code, Codex, Cursor, Windsurf, or another MCP client, or search directly from your terminal.

  • Find code by intent with hybrid vector and keyword search, plus configurable reranking.
  • Locate definitions and usages with structural search over the current source.
  • Trace relationships between files and symbols: imports, calls, inheritance, and implementations.
  • Read signatures without loading entire files; add a language server for definitions, references, and hover information.
  • Run locally with the default embedding and reranking models, or configure remote providers.

Quick start

1. Install

Use the installer on Linux or macOS, or in a Unix-compatible shell on Windows:

curl -fsSL https://raw.githubusercontent.com/Muvon/octocode/master/install.sh | sh

Alternatively, on macOS:

brew install muvon/tap/octocode

Other installation methods

Read the full README

Download a binary from GitHub Releases, or install the published crate:

cargo install octocode

Building from source requires Rust 1.95 or later and protoc. See the installation guide for platform requirements, build features, and manual installation.

Verify the installation:

octocode --version
2. Index and search

Run these commands in your project's Git repository:

cd /path/to/your/project
octocode index
octocode search "authentication middleware"

The default configuration uses local FastEmbed models for embeddings and reranking. No API key is required; model files download on first use. For a directory without Git, use octocode index --no-git.

# Combine related queries
octocode search "auth" "middleware" "session"

# Filter code results by language
octocode search "database connection pool" --language rust

# Search documentation
octocode search "deployment configuration" --mode docs
3. Connect your AI assistant

Choose your client in MCP integration. Structural search, signatures, and the live dependency graph read the current source directly and work without an index. Semantic search uses the index created above.

MCP integration

Install Octocode where your client can find it on PATH, and replace /path/to/your/project with your project's absolute directory path.

Claude Code
claude mcp add --transport stdio octocode -- octocode mcp --path /path/to/your/project
claude mcp list

See the Claude Code MCP documentation for configuration scopes and connection details.

Codex CLI
codex mcp add octocode -- octocode mcp --path /path/to/your/project
codex mcp list

See the Codex MCP documentation for CLI and configuration-file options.

Claude Desktop, Cursor, and Windsurf

Add an Octocode entry to your client's MCP configuration:

{
  "mcpServers": {
    "octocode": {
      "command": "octocode",
      "args": ["mcp", "--path", "/path/to/your/project"]
    }
  }
}

Restart the client after saving. The MCP client setup guide covers configuration locations and other clients.

Octomind

Octomind is a companion AI agent runtime. Its developer:general agent includes Octocode and OctoFS capabilities. After installing Octomind, start it in your project:

cd /path/to/your/project
octomind run developer:general

The first run may install required tools and ask for model credentials. See the Octomind quick start for installation and model access.

Available tools
ToolUse it forRequires an index
semantic_searchFind code, documentation, and indexed history by meaningYes
structural_searchFind definitions, usages, and AST patterns in current sourceNo
view_signaturesRead function signatures, declarations, and importsNo
graphragExplore live file and symbol relationships and dependency pathsNo
lsp_*Definitions, references, hover information, symbols, and completionNo; requires a language server

To enable LSP tools, install a language server and add --with-lsp to the server command, for example:

octocode mcp --path /path/to/your/project --with-lsp rust-analyzer

By default, the MCP server uses the existing semantic index without updating it. Rerun octocode index after changes, or run octocode watch separately in the project directory. In-process indexing is available through index.mcp_index = true.

See the MCP integration guide for tool parameters, HTTP transport, and serving multiple repositories, and the LSP guide for language server setup.

Use Octocode with OctoFS

OctoFS adds file reading and atomic editing tools to your assistant. Run both MCP servers against the same project directory.

Octocode's structural_search returns source lines as N:hh|content, with the same line IDs used by OctoFS view. An agent can use these IDs directly in OctoFS batch_edit, without reading the same lines again to obtain edit targets. Exact-name lookups include complete definitions up to 32 lines; larger results identify omitted ranges for a targeted read.

Each ID hashes the original line, including indentation. OctoFS checks IDs before applying edits and reports stale targets when the content no longer matches. Group known edits to a file into one atomic batch, then use the fresh IDs returned by the edit for follow-up changes. The N:hh| prefix is metadata, not part of the source code.

After installing OctoFS, add it alongside the Octocode server configured above. Choose your client:

Claude Code:

claude mcp add --transport stdio octofs -- octofs mcp --path /path/to/your/project

Codex CLI:

codex mcp add octofs -- octofs mcp --path /path/to/your/project

Use the same absolute project path for both servers. OctoFS is optional; Octocode's search and navigation tools work independently.

How it works

Current source → Language parsers → Live file and symbol graph → MCP tools
Indexed code   → Embeddings + BM25 → Hybrid search + reranking → CLI / MCP

The live graph uses Tree-sitter to extract symbols and relationships from current source, without embeddings or an LLM. It remains available through MCP when [graphrag].enabled = false.

Enabling indexed GraphRAG adds persisted file-level enrichment, including semantic file discovery and optional LLM descriptions and architectural relationships. The octocode graphrag CLI uses this persisted layer:

octocode config --graphrag-enabled true
octocode index
octocode graphrag overview

See the architecture guide for module boundaries and storage details.

Supported languages

LanguageExtensions
Rust.rs
Python.py
TypeScript / JavaScript.ts, .tsx, .js, .jsx
Go.go
PHP.php
C / C++.c, .cpp, .cc, .cxx, .c++, .h, .hpp, .hxx, .cppm, .ixx, .mxx, .ccm, .cxxm
Ruby.rb
Elixir.ex, .exs
Java.java
Swift.swift
Svelte.svelte
Lua.lua
CSS.css, .scss, .sass
JSON.json
Bash.sh, .bash
Markdown.md, .markdown

Retrieval benchmark

The repository includes ground truth, scoring scripts, and reproduction instructions. The published local matrix used 127 code-search queries, corpus commit b1771ba, Octocode 0.17.1, and fastembed:jinaai/jina-embeddings-v2-base-code, with reranking disabled for the variants below.

ConfigurationHit@5Hit@10MRRNDCG@10Recall@10
Dense vector only0.5980.7170.4850.5280.671
Hybrid, vector/keyword weights 0.7/0.30.5980.7170.4850.5280.671
Hybrid, vector/keyword weights 0.3/0.70.7320.8350.5720.6200.807

These are historical results from June 21, 2026; they do not measure the current release or its default configuration. See the full variant matrix for settings and reranker comparisons.

Privacy and configuration

  • Local models by default. Embedding and reranking run locally after model downloads. Remote embedding, reranking, and LLM providers are optional; when enabled, they receive the queries and source content needed for those features.
  • Local storage. Indexes live outside your repository in Octocode's per-project data directory.
  • File exclusions. Indexing respects .gitignore and .noindex. Configure exclusions for files you do not want indexed.
  • Client access. The default MCP transport is stdio. The model used by your AI client may receive source content returned by tools, even when Octocode uses local models.
  • Provider credentials. API keys can be supplied through environment variables. See the API key guide before enabling remote providers.

The configuration guide explains model selection and indexing options. The embedded default template contains the current defaults.

Documentation

Contributing

Bug reports, documentation improvements, and code contributions are welcome. Read the contributing guide for development setup and the engineering standards before changing code.

Use GitHub Issues for bugs and feature requests, Discussions for questions, or contact opensource@muvon.io.

License

Apache License 2.0. Maintained by Muvon.

Runs on
Metal
What shows it
  • Metal: octocode feature metal
Native code
Required
  • Binds native code: tree-sitter, tree-sitter-language, zstd-sys
Python bindings
No Python binding crate found
License
Apache-2.0

Compare with similar projects

Order: strongest tier first, then most downloads, then name, with unmeasured values last. A library counts downloads over 30 days. An app counts binary downloads per release. An app with none counts its crate downloads over 30 days. ML Rust runs this catalogue, so its closest project always gets a row.

octocode beside the projects that share a topic with it
ProjectDownloadsDependentsStarsLatest releaseRuns on (GPU)Native codeLicense
octocode This page App Listed

AI-powered code intelligence with semantic search, knowledge graphs, and built-in MCP server. Transform your codebase into a queryable knowledge graph for AI assistants.

208 binary downloads per release Not applicable 522 0.29.1 Metal Binds native code: tree-sitter, tree-sitter-language, zstd-sys Apache-2.0
meilisearch App Featured

A lightning-fast search engine API bringing AI-powered hybrid search to your sites and applications.

5,660 binary downloads per release Not applicable 59,815 Not measured Not measured Not measured
splintr Listed

Tokenizer for Rust and Python: pure Rust by default, with 18 bundled vocabularies and four backends covering BPE, SentencePiece and WordPiece. Its output matches Hugging Face tokenizers id for id on 14 model families, including GPT-2, Qwen, Whisper, T5 and BERT.

Python bindings

8,204 downloads over 30 days 7 63 0.22.2 GPU support unknown Binds native code: pcre2-sys (feature pcre2) MIT
tinysearch App Listed

🔍 Tiny, full-text search engine for static websites built with Rust and Wasm

147 binary downloads per release Not applicable 2,980 Not measured Not measured Apache-2.0
korvus Listed Dormant

Korvus is a search SDK that unifies the entire RAG pipeline in a single database query. Built on top of Postgres with bindings for Python, JavaScript, Rust and C.

Python bindings

54 downloads over 30 days 0 1,474 1.1.5 GPU support unknown No native code found MIT
xberg New

High-performance document intelligence library for Rust. Extract text, metadata, and structured data from PDFs, Office documents, images, and 107 formats and 371 programming languages via tree-sitter code intelligence with async/sync APIs.

26,095 downloads over 30 days 2 9,565 1.3.10 CUDA, Metal Binds native code: libheif-sys, libz-sys, xberg_libwpd, xberg_tesseract, clipper-sys and 4 more. Build uses a native toolchain: cc, bindgen (feature bindings), cmake (feature build-tesseract), pkg-config (feature dynamic-linking), vcpkg (feature dynamic-linking) MIT

Foundation library for Rust AI-native apps — provider catalog, LLM client, MCP server, search, telemetry, and safety

791 downloads over 30 days 8 3 0.33.1 GPU support unknown Binds native code: libsqlite3-sys (feature store), mach-sys (feature embedding-mlx), mlx-sys (feature embedding-mlx), openssl-sys (feature graph-pg-tls), ort-sys (feature embedding-fastembed-coreml) Apache-2.0
Why ListedNo archive, New or Featured rule places it, so it is Listed.

What it lacks for Featured

  • The check holds no value for Homebrew installs on request over 365 days, Repology repository families, Docker pull growth over 90 days. A gate that lacks its signal does not pass.

What else the check found

  • The last activity is on 8 Nov 2026, 1 day ago. The rules expect an update within 365 days. Dormancy rule

Not measured: Homebrew installs on request over 365 days, Repology repository families, Docker pull growth over 90 days.

Exact rules: Listed, Featured app. The check on applied thresholds version 9.

Every rule outcome, as the check records it
  • expected-interval: app: E = 365 days
  • dormancy: last activity 2026-11-08, 1 days ago, E = 365: active
  • featured: not featured: unknown homebrew_on_request_365d, repology_families, docker_pull_growth_90d
  • listed: listed: no archive, new or featured rule applies

Measurements and sources

Each signal row shows the raw value, its source and the fetch date. The Sources list gathers every distinct source on this page. Movement needs more history.

Sources6 sources
Adoption208 binary downloads per release4 not measured
Adoption measurements
SignalValueSourceFetchedCounts
Active dependentsNot measuredYes
New dependents (365 days)Not measuredYes
Peak active dependentsNot measuredYes
Active dependents as a share of the peakNot measuredYes
Binary downloads per release208GitHub releasesYes
MaintenanceLatest human commit: 1 day ago4 not measured
Maintenance measurements
SignalValueSourceFetchedCounts
Latest human commit2026-11-08GitHub repositoryYes
Latest release2026-11-08GitHub releasesYes
First release2025-06-26crates.io database dumpYes
Latest version0.29.1crates.io database dumpNo
Days the oldest outside issue waits for a reply446GitHub repositoryYes
Maintainer replies over 365 days30GitHub repositoryYes
Repository archivedfalseGitHub repositoryYes
Repository gonefalseGitHub repositoryYes
Release commit or manifest in the repotruecrates.io packageNo
Published docsNot measuredYes
Latest release fails cargo checkNot measuredYes
Build check dateNot measuredYes
Build check toolchainNot measuredYes
SecurityNot measured
Security measurements
SignalValueSourceFetchedCounts
Unpatched vulnerabilities past the grace windowNot measuredYes
RustSec unmaintained advisoryNot measuredYes
Deprecation noticeNot measuredYes
Deprecated requirementNot measuredYes
Distribution47 releases, 88 downloads over 30 days6 not measured
Distribution measurements
SignalValueSourceFetchedCounts
Releases47crates.io database dumpNo
Downloads over 30 days88crates.io database dumpNo
Binary downloads over the last 3 releases626GitHub releasesYes
Homebrew installs on request over 365 daysNot measuredYes
Repology repository familiesNot measuredYes
Docker pull growth over 90 daysNot measuredYes
Docker pulls at the growth baselineNot measuredYes
Every version a prereleasefalsecrates.io database dumpYes
Every version 0.0.xfalsecrates.io database dumpYes
Every version yankedNot measuredYes
Crate deleted from crates.ioNot measuredYes
Repository522 stars, 60 forks, 10 contributors, 760 commits. Stars alone never qualify a project.
Repository measurements
SignalValueSourceFetchedCounts
GitHub stars522GitHub repositoryYes — one part of the repository route
GitHub forks60GitHub repositoryYes — one part of the repository route
Contributors with a GitHub account10GitHub contributorsYes — one part of the repository route
Commits on the default branch760GitHub repositoryNo
Repository's main crate left out of the entrynonecrates.io database dumpYes
Facts that never count
Facts that never count measurements
SignalValueSourceFetchedCounts
LicenseApache-2.0crates.io database dumpNo
Runs on, from listed crates and their direct dependenciesMetalcrates.io database dumpNo
What shows each backendMetal: octocode feature metalcrates.io database dumpNo
Native code, from listed crates and their dependenciesBinds native code: tree-sitter, tree-sitter-language, zstd-syscrates.io database dumpNo
Python bindings, from direct dependencies of listed cratesNo Python binding crate foundcrates.io database dumpNo
Crates that depend on a listed crate directlyNot measuredNo

Corrections and review history

Report a correction

No correction applies to this entry.

Judgments

A judgment enters only through an approved issue and a merged pull request.

No judgment applies to this entry.