The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the Oss Search listing page.
Fast local + federated OSS code search and repo discovery, built for AI agents (MCP) with a CLI twin.
Not recreating the wheel is a superpower. oss-search answers two questions for an agent:
oss_search_repos, oss_search_code, oss_repo_profile, oss_repo_tree, oss_fetch_file, oss_fetch_docs, oss_guide) over stdio, plus a byte-identical CLI.unknown_field / regex_error / not_indexable) that echo the input and name the correction, declared total/hasMore/partial, ~25KB response cap, never silent degradation.Two front doors: oss-mcp (MCP server) and oss-cli (CLI twin). Three ways to get them:
1. npm — an oss-search shim that downloads the platform-matched prebuilt
binary on first run and caches it under ~/.cache/oss-search/bin/ (override
with OSS_SEARCH_CACHE_DIR):
Status (pre-publish): the
oss-searchnpm package and its matching GitHub release (v0.2.0) are being published now. Until they land,npxwill fail with a 404 on the release asset — use option 2 or 3 below.
2. cargo install from git (requires a Rust toolchain):
Binaries land in ~/.cargo/bin/.
3. Prebuilt binaries — every release publishes
oss-search-<version>-<target>.tar.gz plus checksums.txt (sha256) at
https://github.com/sblattj/oss-search/releases/latest, for targets
aarch64-apple-darwin, x86_64-apple-darwin, aarch64-unknown-linux-gnu,
x86_64-unknown-linux-gnu:
From a checkout instead:
oss-cli mirrors the 7-tool surface one-to-one (offline stub engine by
default; --live switches to the real backends):
All commands emit the same structured JSON envelope (results, total,
has_more, partial, backend_status) that the MCP tools return.
oss-mcp speaks MCP over stdio. Invocation safety: --help / --version
print and exit 0 without ever starting the server; unknown arguments exit 2
with usage instead of silently serving a stub; with no arguments it serves
until stdin closes.
Claude Code — .mcp.json at the project root (use the absolute path your
install produced, or the npx form):
npx form (no absolute path needed):
Claude Desktop — claude_desktop_config.json (macOS:
~/Library/Application Support/Claude/claude_desktop_config.json; ~ is not
expanded inside the JSON — use the absolute path):
opencode — opencode.json at the project root:
--live enables the remote backends (GitHub REST code search, grep.app,
deps.dev, ecosyste.ms, npms.io); without it oss-mcp serves an offline stub.
oss-mcp --help prints the full invocation contract.
Structured JSON fields are canonical (arrays = OR, across fields = AND, - prefixes = excludes). Unknown fields are rejected loudly with the known-field list — never silently dropped.
The repo ships its own evidence: data/e2e/E2E-REPORT.md (9/9 gate through the release binaries), golden-set eval (data/e2e/eval/EVAL.md), and the hot-set latency table (data/e2e/hotset/LATENCY.md).
| Crate | Role |
|---|---|
oss-query | query schema, strict text⇄structured grammar, typed errors, backend planning |
oss-facade | remote clients: GitHub, grep.app, deps.dev, ecosyste.ms, npms.io (rate-limited) |
oss-corpus | cloning, CAS blob store, dedup, license detection |
oss-index | positional-trigram index, regex planning, ranking, incremental updates |
oss-semantic | tree-sitter chunking, embeddings, vector store, RRF fusion, query routing |
oss-rank | repo signals, PageRank over dependency graph, multi-signal ranker |
oss-eval | golden-set evaluation (nDCG/MRR/Recall), latency harness |
oss-core | envelope, shaping, escaping, engine trait |
oss-live | production engine wiring facade + ranker |
oss-mcp / oss-cli | the two front doors |
MIT