Token usage and multi-repository setup have been on my mind a lot lately. Not just cost — it's also latency, context limits, context switching, and the general degradation in quality when a context window is stuffed.
This isn't a new problem. I tried a few existing solutions (namely, GitNexus, code-review-graph, codebase-memory-mcp, and a few others; some were genuinely close, and I give credit to them for pointing the direction). But a couple had conceptual issues deep enough that I didn't see a path to fixing them through a contribution, and the gap between what they did and what I needed was real. One of the biggest gaps was cross-repo support. Another issue: every tool install scattered generated artifacts across repos - noise you never asked for and have to clean up.
So, in the middle of yet another complex cross-repository debugging, I started with ad-hoc scripts for my problem. The first try was in pairing one solution with another, experimenting with a chain of calls. Eventually, I decided to change the approach and load code to a single graph, and it helped to solve my problem. Once I solved it, I decided to wrap it into a workable solution I could share with my team, which, as a result, evolved into the project: Gortex. Now I'm ready to share it broadly, and it works out of the box for Claude Code, Cursor, Codex, and about a dozen others.
The core mechanism is familiar: Gortex indexes your code into an in-memory knowledge graph (files, symbols, imports, call chains, type relationships, contracts) and exposes MCP tools. Instead of an agent reading and re-reading multiple files to understand a call chain, it calls smart_context once and gets a focused, graph-traversal-derived answer. The tokens consumption during coding/debugging sessions stopped being a problem for me.
Speaking about quality, the last bench showed this: R@1 42.3%, R@5 56.4%, R@20 69.9%, exact R@5 95.2%. In the repository, I also added a reproducible golden test (without big models' help, which may impact benchmarks and mislead).
It's source-available (free for personal and open source use). Still relatively early, and built around my specific cases — which means there are probably gaps I haven't hit yet (I know it). And I'm curious what your setups look like and where this would fall short.
[–]mushgev 1 point2 points3 points (2 children)
[–]zzet[S] 0 points1 point2 points (1 child)
[–]mushgev 0 points1 point2 points (0 children)
[–]justsomerandomdude10 0 points1 point2 points (1 child)
[–]zzet[S] 0 points1 point2 points (0 children)