One call.
not ten reads.
Gortex indexes your repository into an in-memory knowledge graph and serves it to your coding
agent over MCP, HTTP, and a web UI. One graph query replaces a stack of file reads — up to 50× fewer tokens per response. 257
languages, 115 MCP tools, live editor-buffer overlays, edit
simulation, dataflow, clone detection, and a 22-server LSP bridge.
Built for 15
AI coding agents on macOS, Linux & Windows — one binary, zero services.
Stop paying your agent to re-read the same files.
A typical "make an edit" loop in Claude Code or Cursor does half a dozen Reads, a Grep,
then
maybe a Glob. Gortex answers the same question in one graph query — with callers, callees, imports,
blast
radius, and interface implementors attached.
- Read internal/watcher/watch.go (412 lines)
- Read internal/graph/patch.go (289 lines)
- Read internal/graph/types.go (603 lines)
- Grep "OnFileChange" across workspace
- Read 4 more files to resolve callers
- Guess at the interface it satisfies
- 7 symbols · 3 files · signatures + callers
- interface satisfied: graph.Patcher
- blast radius: 4 symbols, 2 tests
- no scan, no guessing, no re-reads
- live-synced via fsnotify watcher
- Δ −94.0% vs baseline
A graph, a server, a daemon, and a hook — in one static binary.
Zero external dependencies. Everything runs in-process, in memory, on your laptop. Sigstore-signed releases, SLSA Level 3 build provenance, native macOS · Linux · Windows.
Files, symbols, imports, calls, fields, decorators, generics, error contracts, modules (npm · pypi · cargo · maven · go), SQL tables, channels, goroutines, flags, config keys, log/metric/pub-sub events, TODOs, licenses, owners — plus K8s resources, Kustomize overlays, Dockerfile images, dbt/SQLMesh models. Tarjan SCC, Leiden/Louvain communities, and a precomputed reach index for sub-millisecond blast-radius queries.
Three-tier extraction. ~30 bespoke tree-sitter (Go, TS, Python, Rust, Java, C#, Kotlin, Swift, C, C++, Ruby, Elixir, OCaml, …) for deep resolution, ~60 regex for niche/legacy, ~165 forest-backed signature-only — plus drop-in user grammars via .gortex.yaml, and Jupyter / Databricks notebooks indexed cell-by-cell.
Lazy discovery — ~25 hot tools at session start, the rest one tools_search call away (≈68% fewer schema bytes on the first round-trip). smart_context, analyze (45+ kinds), find_clones, search_ast, flow_between, rename_symbol, edit_file + 16 resources + 3 prompts.
Hybrid BM25 + vector with RRF fusion; pluggable 11-signal rerank. Hugot bundled (pure-Go ONNX, MiniLM-L6-v2 auto-downloaded). Optional ask agent across 9 LLM providers. Published gortex eval baseline: R@1 42.3% · R@5 55.1% · exact R@5 96.8%.
Shadow-graph sessions for unsaved buffers. overlay_push stages an editor buffer; every subsequent tool call reads through a per-request view layered on the immutable base graph. compare_with_overlay returns the base↔overlay delta. Idle-TTL fail-safe; drift detection via git-blob SHA.
"What changes if I apply this edit?" — answered without touching disk. preview_edit turns an LSP WorkspaceEdit into an impact report; simulate_chain runs an ordered sequence with per-step diagnostics delta and cumulative blast-radius rollup.
value_flow / arg_of / returns_to edges built at index time. flow_between returns ranked dataflow paths between two symbol IDs; taint_paths runs pattern-driven source→sink sweeps for security audits — without ever loading a sandbox.
Every substantial function body reduced to a 64-slot token-normalised MinHash signature at index time; LSH banding + Jaccard threshold emits symmetric similar_to edges. find_clones {dead_only: true} yields the "dead duplicates of live code" diagnostic.
Cross-language tree-sitter S-expression search with bundled detectors (sql-string-concat, weak-crypto, hardcoded-secret, …). analyze kind:unsafe_patterns fans seven detectors over the whole file set — Go panics, Rust unwrap/expect/panic!, JS/TS throw — in one call.
Language-agnostic concurrency analyzers: race_writes flags unguarded goroutine-reachable field writes, unclosed_channels flags channels never closed. health_score rolls coverage + complexity + recency + churn into one 0–100 value and an A–F grade.
Wired to 22 language servers — gopls, tsserver, pyright, pyrefly, tsgo, rust-analyzer, clangd, jdtls, omnisharp, sourcekit-lsp, … subscribe_diagnostics pushes deltas over MCP; get_code_actions + apply_code_action + fix_all_in_file apply LSP-supplied fixes atomically.
Five per-session push channels — diagnostics, workspace readiness, daemon health, stale refs, and graph invalidation. Delta-filtered, initial replay, auto-cleanup on disconnect. The agent learns the graph changed without polling for it.
Round-trippable GCX1 compact text — median −27.4% tokens vs JSON. smart_context graded-fidelity manifests tier symbols under one budget; ctx_grep / ctx_slice re-cut a prior response without re-querying.
Symbol-anchored development memories (store_memory / query_memories) compound across sessions and teammates; session notes survive context compactions; a repo-local notebook commits agent journal entries to git so they surface in PR review.
Versioned /v1/* JSON API plus the MCP 2026 Streamable HTTP transport (/mcp). A long-living daemon holds one graph for every editor window — live fsnotify, per-session isolation, launchd/systemd auto-start, ~200ms snapshot restore.
Index. Serve. Watch.
In-process.
No database to run. No container to orchestrate. One binary, one graph, two ports — and a Unix-socket daemon when you want to share it across editor windows.
gortex binary ── single static · ~20MB · CGO-on │ ├─ CLI (cobra) ────────────────────┐ ├─ MCP Server (stdio + sse) ───────┤ ├─ HTTP Server (:4747 /v1/*) ──────┤ ◀── web UI · IDE plugins · CI ├─ Overlay Sessions (shadow view) ─┤ ◀── unsaved editor buffers, MCP-session bound └─ Daemon (~/.gortex/server.sock) ─┤ ◀── shared graph for every editor window ▼ ┌──────────────────────────┐ │ In-memory graph │ │ nodes · edges · index │ │ on-disk snapshot │ └──────────────▲───────────┘ │ ┌─ Indexer ──► tree-sitter ◀── 257 langs ─┤ │ + regex + forest tiers │ ├─ Resolver ──► LSP · go/types · SCIP ─────┤ tier-aware: lsp_resolved → ast_resolved → ast_inferred → text_matched │ + cross-repo evidence gate │ ├─ LSP Bridge ► 22 servers · diagnostics ──┤ subscribe_diagnostics · code actions · fix_all_in_file ├─ Watcher ───► fsnotify · debounced ──────┤ per-file patches └─ Clones ───► MinHash + LSH ──────────────┘ similar_to edges · dead-dup diagnostic
Speaks what your repo speaks.
Three-tier extraction: bespoke tree-sitter for deep resolution, regex for niche/legacy,
forest-backed signature-only for the long tail. IMPLEMENTS inference for Go,
TypeScript, Java, Rust, C#, Scala, Swift, and Protobuf — no extends keyword required.
Running in three commands.
macOS, Linux & Windows · amd64 + arm64. The installer detects your OS, downloads the
signed release archive, verifies SHA256 (and cosign if installed), and puts the binary on your PATH. No silent sudo.
Re-runs upgrade in place.
$ curl -fsSL https://get.gortex.dev | sh # windows: irm https://get.gortex.dev/install.ps1 | iex # or: brew · scoop · .deb · .rpm · .apk
One-time machine setup: gortex install writes user-level MCP wiring + skills + slash commands at ~/.claude/ and ~/.gemini/.
$ cd ~/projects/myapp $ gortex init --analyze # writes .mcp.json, CLAUDE.md, # per-community SKILL.md, hooks
Auto-detects every agent in scope and writes a community-routing block to each — CLAUDE.md, AGENTS.md, .windsurfrules, GEMINI.md, .cursor/rules.
$ gortex daemon start --detach # or: gortex mcp --watch (per-repo) # or: gortex server --index .
Daemon runs in the background, supervises the graph for every tracked repo. Auto-start at login: gortex daemon install-service.
Every coding agent
you already run.
Gortex is MCP-native. If your agent speaks the Model Context Protocol, it speaks Gortex. gortex init auto-detects each agent in scope and writes the right config.
Teach your agent
what your code knows.
Source-available under a PolyForm-based license — free for individuals, OSS projects, small businesses (<50 staff / <$500K rev), nonprofits, and education. Zero dependencies. One static binary. Sigstore-signed, SLSA-3 build provenance, OpenSSF Scorecard tracked, VirusTotal 0/91.