Cut your AI coding costs by more than 50%

YATS — Yet Another Token Saver — indexes your codebase into a knowledge graph. Your agent queries the graph instead of reading files one by one. Less tokens, better answers.

Start on GitHub → yats-toolkit on npm

Your agent is slow. It's not its fault.

Every time your agent needs to understand your code, it does the same brute-force ritual: grep for keywords, read file after file, guess how things connect. That's not intelligence — that's a token bonfire. And you're paying for every spark.

100,000 tokens to answer "how does auth work here?" 15 files read Zero understanding of relationships

YATS gives your agent a map, not a pile of paper

We index your entire codebase into a knowledge graph: every function, class, interface, and relationship across TypeScript, C#, Python, PHP, and Go. When your agent needs answers, it queries the graph — not the raw files.

The best part: you don't index manually. When your agent connects to YATS and starts working in a directory, it checks if that project is indexed. If not, it indexes it automatically. No extra step. No remembering to run a command.

Agent enters your project → "Is this indexed?" → No → Indexes it automatically → Done. Every query now hits the graph. 3,000 tokens. Two tool calls. Exactly right.

You can index manually via yats index ~/my-project if you want. But your agent handles it.

Your codebase, understood

Not grep. Not regex. Actual parsers that understand your code like an IDE does.

TypeScript → Compiler API (full AST) C# → Roslyn (.NET 8 bridge) Python → LibCST + Jedi PHP → nikic/php-parser Go → Native bridge Everything → Tree-sitter fallback Rust, Java, Kotlin, Ruby — more to come

Your agent, supercharged

Instead of reading 15 files, your agent calls:

What the agent needsTool it calls
"How does auth work?"search_code("authentication flow")
"Who calls this?"find_callers("PaymentService.process")
"Show me the API"find_routes
"Architecture overview?"architecture_summary
"Where are the tests?"find_tests("UserService")
"What's connected?"expand_graph(symbolId)
All 22 tools →

Don't trust us. Reproduce it yourself.

Every benchmark we publish comes with the full tooling to replicate it — same questions, same repos, same methodology. No cherry-picking. No black boxes.

And it works on your own code too. Unlike benchmarks that only test popular open-source repos (which LLMs might already know from training), YATS lets you measure savings on your private projects — the code your agent actually works with every day.

yats benchmark 1. Pick your agent — Cursor, Claude, Copilot, Codex, or Gemini 2. Pick a language and repo — or point it at your own project 3. The wizard indexes it automatically 4. Your agent answers the same questions twice — with and without YATS 5. You get a side-by-side comparison: tokens, credits, cost

Our results (that you can verify)

Same questions. Same repos. Fresh sessions. Every token counted.

AgentRepo indexedLanguage Without YATSWith YATSYou save
Codexlab_hub (API backend)Go 100,000 tokens27,000 tokens 73%
Copilotlab_hub (API backend)Go 1.19 credits0.40 credits 66%
Claudelab_hub (API backend)Go 862k tokens · $0.21541k tokens · $0.11 37% tokens · 49% cost
GeminiDjango (web framework)Python 115,122 tokens63,851 tokens 45%

Run yats benchmark and get your own row in this table.

More agents and repos being tested — yats benchmark supports all five agents today.

Full benchmark suite and raw data →


Tutorials

Short videos to get you from zero to saving tokens. Each one is ~3 minutes.

1
Installation — One command to start Run npx yats-toolkit, the setup wizard detects Docker, pulls images, starts everything. 3 min.
[Tutorial 1]
2
Auto-indexing — Your agent's first day Connect your agent, open a project, watch it auto-index. The agent discovers the repo isn't indexed and indexes it transparently. 3 min.
[Tutorial 2]
3
First queries — Smarter than grep Ask your agent about your codebase. Watch it call search_code, find_callers, and architecture_summary instead of reading files. 3 min.
[Tutorial 3]
4
Editing code — Keep the index in sync Modify a file through your agent, then call index_file or reindex to update the graph instantly. 3 min.
[Tutorial 4]
5
Run your own benchmark Use yats benchmark to measure token savings on your own repo — with your own agent. Compare with and without YATS. 4 min.
[Tutorial 5]

The right instructions make the difference

YATS will save you even more tokens when your agent is properly instructed to use the graph instead of reading files. That's why we include ready-to-use instruction files for every agent — they teach it to call search_code before grep, to expand the graph instead of guessing relationships, to trust the index.

# 1. Start YATS (needs Docker) npx yats-toolkit # 2. Connect your agent — copy two files into your repo
Your agentCopy theseInto
Claude Code SKILL.md + mcp.json .claude/skills/yats/ + .mcp.json
Gemini CLI GEMINI.md + mcp.json repo root + .gemini/settings.json
Copilot CLI instructions.md + mcp.json .github/ + .copilot/
Codex CLI AGENTS.md + config.toml repo root + .codex/
Cursor rules.mdc + mcp.json .cursor/rules/ + .cursor/
Step-by-step for each agent →

Stays in sync while you work

YATS doesn't just index once and go stale. When you or your agent edits a file, the index updates in seconds — not minutes.

🔄 Auto-reindex on query

Every search tool checks if your repo has changed since the last index. If git shows new commits, YATS incrementally re-indexes only what changed — before answering.

📝 Index a single file

Just edited one file? Call index_file and only that file gets re-analyzed, embedded, and stored. Under a second.

🗑 Remove on delete

Deleted a file? Call remove_file and its symbols disappear from the graph instantly. No dead references.

👀 Live watcher

Run yats watch ~/my-project and every file change triggers an automatic re-index. Your graph stays current without a single extra command.


Your keys, or none at all

Indexing generates embeddings — vector representations of your code. You choose who runs that computation, and what it costs.

🆓 Ollama — zero cost

Runs locally on your machine. No API keys, no network calls, no bills. The nomic-embed-text model is pulled automatically during setup. Indexing costs you nothing — ever.

🔑 Bring your own key

Prefer a hosted model? Plug in your OpenAI, Mistral, or Voyage AI key. You pay your provider directly — YATS never sees your key and adds zero markup.

Switch anytime with EMBEDDING_PROVIDER. Ollama for free local dev. OpenAI for production throughput. No lock-in.


Simple pricing — one price per team

Not per seat. One flat annual fee for your entire organization. Same product, same features at every tier.

Free
€0
< 25 developers
Steel
€150/year
25 – 74 developers
Buy license
Titanium
€350/year
75 – 199 developers
Buy license
Platinum
€600/year
200 – 499 developers
Buy license
Enterprise
Contact us
500+ developers
Contact us

Annual subscription with auto-renewal. Cancel anytime.  ·  Full license terms