Reliary8
Grammar-free code intelligence + bash compression for AI coding agents.
A single Rust binary (~7 MB) that indexes any codebase via structural detection (no tree-sitter, no language-specific code) and exposes it to AI agents through the Model Context Protocol (MCP). Companion tool reliary wrap compresses verbose bash output (cargo test, git diff, pytest) before it reaches agent context — an open-source, grammar-free alternative to RTK.
Quick start
# Index your project
# Wire into an AI agent (Claude Code, OpenCode, Pi, anything that speaks MCP)
Agent integration
Add to your agent's MCP config:
Claude Code (~/.claude/mcp.json):
Pi Agent: pi install --tool "reliary mcp"
OpenCode (~/.config/opencode/config.json): same format.
Bash compression (RTK parity)
For verbose shell output, prefix with reliary wrap:
For automatic interception (no manual prefix), set RELIARY_SIFT_BASH=1 and install the appropriate hook from hooks/.
What it does
Code intelligence (MCP tools)
8 curated tools in the primary menu:
| Tool | What it returns |
|---|---|
reliary_find_references |
Single entry point for all symbol questions. Modes: def_only=true → "where is X defined"; usage_only=true → "who calls X"; methods=true → "list methods on X"; dead_only=true (+path) → "find dead code"; path_filter='io/util/' → scope to a module; no params → general references. One-line answer with raw code evidence. |
reliary_search |
BM25 file search: definition-first ranking, never-empty fallback (closest files by vocabulary similarity). |
reliary_goto_def |
Deprecated — use reliary_find_references(name=X, def_only=true). Still works. |
reliary_call_graph |
Callers + callees with source. direction=inbound/outbound/both, depth (entry points auto-expand). |
reliary_list_methods |
Methods on a type with file:line. Alias of the same handler. |
reliary_find_dead_code |
Unused functions, path-scoped. Alias of the same handler. |
reliary_describe |
Symbol overview: purpose, signature, callers, methods. methods/dead_only route to the same handlers. |
reliary_similar |
Structurally similar functions (near-clone detection). |
Bash compression (reliary wrap)
Universal text compressor that works on ANY command output. No per-command filters needed. 46.3% average compression across the 6 fixtures in the V14 benchmark (see ~/src/sift/scripts/bench_vs_rtk.py). Content readers on source files (cat/head/tail/less/bat <source.rs>) pass through uncompressed so model-built edits never see mangled code.
Benchmarks
Deterministic claim-verification bench (10 questions on a reliary corpus snapshot, deepseek-v4-flash, 4 seeds 42/17/123/456, result file bench/results/v70_3way.jsonl):
| Metric | Reliary (A) | Altbackend (B) | Grep (C) |
|---|---|---|---|
| F1 (claim-weighted) | 0.809 | 0.346 | 0.414 |
| Precision | 0.835 | 0.397 | 0.511 |
| Recall | 0.785 | 0.308 | 0.355 |
| Keyword score /30 | 26.8 | 25.5 | 27.2 |
| Billed cost | 24,143 | 24,657 | 35,180 |
| Dead-ends | 0.0 | 4.2 | 0.0 |
| Tool calls | 18.2 | 19.8 | 15.5 |
| Tool bytes | 8.1K | 16.0K | 32.5K |
| Wall (median) | 43s | 41s | 43s |
Every model claim (symbol at file:line) is verified mechanically against the index — no LLM judge. Wall is provider-latency bound (~90% cache hit on all three); the three conditions are within noise of each other. Repro: python3 bench/run_snapshot_bench.py --bin target/release/reliary --corpus /tmp/rel8-corpus --conds A,B,C --seeds 42 17 123 456 then python3 bench/deterministic_verify.py --input bench/results/v70_3way.jsonl --corpus /tmp/rel8-corpus.
Prompt-fairness disclosure: condition A receives the shipped routing prompt (~300 words); B/C receive ~100-word prompts. An ablation (M, minimal ~120-word prompt) scored F1 0.605 vs A's 0.795 — the tool contributes most of the gap, the routing prompt the remainder. See docs/plans/V70_TELEPATHY.md.
Full reproduction: python3 bench/long_session_bench.py --conditions A,C --seeds 42 17
MCP tool menu
The default menu exposes 8 curated tools (search, find_references, goto_def, call_graph, list_methods, find_dead_code, describe, similar). Specialist research variants (callgraph_v2, methods_on, find_references_type_flow, find_references_boltzmann, trace_path, query_ast, brace_graph, architecture, risk, fix, prior, compress, retrieve, stats) still exist as dispatch targets but are not listed.
CLI reference
reliary trust [PATH] Index a project directory
reliary index [PATH] Build/refresh the index
reliary search QUERY BM25 search
reliary mcp Start MCP server on stdio
reliary wrap [CMD] Run CMD and compress its output
reliary sift [--stdin] Pipe text through compressor
reliary compress [PATH] Compress a file or directory
reliary dead [PATH] Find dead code (cross-file, carrion-style)
reliary risk FILE Pre-edit risk analysis
reliary fix FILE [OLD] [NEW] Apply pattern-based fix
reliary init Auto-install agent integrations
reliary uninstall Remove agent integrations + daemon state
reliary doctor Health check
reliary status Show index + integration status
reliary update Self-update from GitHub releases
reliary clean Clean caches and state
reliary logs Show recent log output
reliary config Show resolved configuration
reliary completions SHELL Emit shell completion script
reliary man Emit the man page
reliary full Full-menu MCP server (all specialist tools)
Run reliary --help for the complete, always-current command list.
Key properties
- Grammar-free: no tree-sitter, no AST, no per-language code. Structural detection on brace/indent/blank-line boundaries works on any text file including Markdown, TOML, configs.
- Index-first: once trusted, all queries use the SQLite index (
.reliary/index.sqliteper project). ~10s for most repos, ~80s for Linux kernel. - Deterministic: identical inputs produce identical outputs (verified: 9 determinism tests). Cache-safe for provider-side KV caching.
- Standalone binary: single Rust binary, no Python/Node runtime, no daemon process.
License
MIT