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. smart_context replaces 5–10 file reads, cutting token usage by ~94%.
Built for 15
AI coding agents — 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.
Every file, symbol, import, call chain, and type relationship in one queryable structure. Tarjan SCC, Louvain communities, blast radius, dead-code detection, hotspot ranking — all in Go.
Tree-sitter + regex extractors. Core (Go, TS, Python, Rust, Java, C#, Kotlin, Swift), templates (Blade, Jinja, ERB), blockchain (Solidity, Move, Cairo), scientific (Julia, R, MATLAB), build/data (SQL, Protobuf, HCL).
Full surface: smart_context, get_edit_plan, verify_change, analyze, scaffold, rename_symbol, edit_file + 7 resources + 3 prompts.
Versioned /v1/* JSON API on :4747 exposing all MCP tools, plus /v1/graph (force-directed dump) and /v1/events (SSE graph-change stream). Bearer-token auth, configurable CORS. Powers IDE plugins, CI hooks, and the Next.js web UI.
One process, one graph, every editor window. Live fsnotify on every tracked repo, per-client session isolation, multi-server roster. launchd/systemd auto-start at login — no sudo.
Round-trippable compact text instead of JSON, opt-in via format: "gcx" on 13 list-shaped tools. Median −27.4% tiktoken savings (best case −38.3%) across the 20-case bench.
Surgical patches on file change across all tracked repos. Your agent's context stays current on every keystroke — no re-index between turns. ~200ms incremental restore from snapshot vs 3-5s full re-index.
Project-specific rules in .gortex.yaml. verify_change catches signature breaks across all callers and impls. analyze would_create_cycle blocks bad imports before they land.
BM25 + vector with RRF fusion. Hugot bundled (pure-Go ONNX, MiniLM-L6-v2). First-class gortex eval covers recall, embedders, GCX1 tokens, SWE-bench. Published baseline: R@1 42.3% · R@5 56.4% · R@20 69.9%.
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 └─ Daemon (~/.gortex/server.sock) ┤ ◀── shared graph for every editor window ▼ ┌──────────────────────────┐ │ In-memory graph │ │ nodes · edges · index │ │ on-disk snapshot │ └──────────────▲───────────┘ │ ┌─ Indexer ──► tree-sitter ◀── 92 langs ──┤ │ │ ├─ Resolver ─► LSP · go/types · SCIP ─────┤ tier-aware: lsp_resolved → ast_inferred → text_matched │ │ └─ Watcher ──► fsnotify · debounced ──────┘ per-file patches
Speaks what your repo speaks.
Structural parsing via tree-sitter. IMPLEMENTS inference for Go,
TypeScript, Java, Rust, C#, Scala, Swift, and Protobuf — no extends keyword required.
Running in three commands.
macOS + Linux · amd64 + arm64. The installer detects your OS, downloads the signed release
tarball, verifies SHA256 (and cosign if installed), drops the binary in $HOME/.local/bin. No silent sudo.
Re-runs upgrade in place.
$ curl -fsSL https://get.gortex.dev | sh # or: brew · .deb · .rpm · .apk # or: go install github.com/zzet/gortex/cmd/gortex@latest
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.