EKOS — Enterprise Knowledge Operating System

One benchmark number.
Rough, real, and reproducible.

Every tool in this space leads with a metric — tokens saved, ingestion time, query latency. EKOS has never published one. This is the first: a real repo, a real question, raw grep vs the compiled ledger, both sides counted with the same standard tokenizer (tiktoken, not a hand-rolled estimate). It doesn't win every case — the one case grep wins is on this page too, not edited out.

2,022 files, cold, 34s 67-93% fewer tokens except when grep is psychic every command included
§ 01 / the ingestion number
real, unedited — reused from the full-loop case study

2,022 files, cold, in 34 seconds.

terminal — real, unedited
$ ekos init && time ekos build
Build complete. Files observed (new): 2022
real  0m33.587s

A genuinely cold run — the workspace deleted and reinitialized, not a warm-cache rerun — against a real, unmodified 2,022-file open-source repository (Plausible Analytics: Elixir application code, two real SQL schemas, 500 real git commits, 14 real CI pipelines, 41 real documents). The full observe → compile → ledger pipeline, including identity resolution and commit, finishes in under two minutes total — see the full-loop deck for the complete stage-by-stage timing.

Open the real transcript: analytics-full-loop/after-1-build.txt
§ 02 / method: three honest grep tiers, not one convenient one
How the raw-source baseline was built

An agent doesn't know where the answer is. That has a token cost too.

TierWhat it assumes
Best-caseThe agent already knows the exact file and line to grep — -A15 around the one right spot.
RealisticThe agent greps the whole repo with context lines, the way an agentic coding tool actually does — every real match, not the lucky one.
NaiveThe agent found the one correct file and just reads it in full.

Publishing only the "best-case" number would be the easy, flattering benchmark — and it's the one where grep wins (see §04). Every tier here is a real command against the real repo, not a synthetic estimate. On the EKOS side, the same "doesn't know where to look yet" reality applies: the token cost includes an ekos_search lookup plus the ekos_state fetch, not just the final answer in isolation.

Open the real commands and script: commands.txt, count-tokens.py
§ 03 / question 1 — one real table's schema
"What columns does the imported_browsers table have?" — real, unedited

10,357 tokens of realistic grep. 1,186 tokens of EKOS.

PathReal tokens (tiktoken)
grep, realistic (32 real hits, -C3 context)10,357
grep, naive (read the whole 366-line file)3,651
EKOS (ekos_search + ekos_state, real MCP)1,186
88.5%
fewer tokens vs. realistic repo-wide grep
67.5%
fewer tokens vs. reading the correct file in full

32 real files in this repo mention imported_browsers — test fixtures, migrations, application code, the one real schema file. A search agent without a compiled ledger has to sift through that; EKOS's ekos_search ranks the real Table object first, and ekos_state returns exactly its 10 real columns, typed, with evidence — nothing else.

§ 04 / the honest exception
Same question — real, unedited

When grep already knows the answer, nothing beats grep.

terminal — real, unedited
$ grep -A 15 "CREATE TABLE plausible_events_db.imported_browsers" \
    priv/ingest_repo/structure.sql
CREATE TABLE plausible_events_db.imported_browsers
(
    `site_id` UInt64, `date` Date, `browser` String, ...
)
ENGINE = MergeTree ORDER BY (site_id, date, browser)
SETTINGS index_granularity = 8192, ...;

122 tokens.  EKOS's full round trip: 1,186 tokens — 9.7× more.

This is real and stated plainly, not smoothed over: if the agent already knows the exact file and the exact line before it searches, a targeted grep is unbeatably cheap — there was nothing to discover. That's not a realistic starting condition for "what does this table contain?" on a repo the agent hasn't already memorized, which is why §03's realistic and naive tiers are the honest headline number, not this one. A benchmark that only showed this slide would be marketing, not evidence.

Open the real transcript: q1-grep-targeted.txt
§ 05 / question 2 — enumerate, not just look up
"What tables exist in the Postgres schema?" — real, unedited

18,995 tokens of raw schema. 1,258 tokens of structure.

terminal — real, unedited
$ ekos ekl "FIND Object WHERE kind = 'Table' AND name CONTAINS 'public'"
id                                    name                          kind
951e87a2-...                          public.api_keys               Table
b26a68a7-...                          public.check_stats_emails     Table
c5dfe0c6-...                          public.create_site_emails     Table
...
42 row(s).                                          1,258 tokens

There's no grep pattern that cleanly lists "every real table" without also matching migrations, tests, and ALTER TABLE statements naming the same tables — the realistic raw-source path is reading the whole 2,738-line dump. ekl answers directly from the already-compiled ledger.

93.4%
fewer tokens than reading the whole schema file
Open the real transcript: q2-ekos-ekl-list.txt
§ 06 / what this number is, and isn't
Scope, stated plainly

One repo, two questions, one honest exception. A start, not a leaderboard.

This benchmarkDoes not claim
Real repo, real questions, real tiktoken countsA comparison against any named competitor's own published numbers — none were reproduced here, none are claimed
67-93% fewer tokens, realistic and naive tiersA win in every case — the best-case grep tier (§04) genuinely costs less
Two representative real questionsA statistically broad sample — more questions, more repos, is exactly what "rough" means here
Token cost, tiktoken-measuredA latency or wall-clock-per-query benchmark — not measured in this pass

The point isn't to win a leaderboard against tools this project hasn't measured — it's to exist, with real numbers a skeptic can rerun themselves against the same public repo.

Reproduce it yourself

Same repo. Same commands. Same tokenizer.

terminal
$ git clone https://github.com/plausible/analytics
$ cd analytics && ekos init && time ekos build
$ ekos recover && ekos resolve && ekos compile && ekos commit
$ ekos mcp serve --workspace .   # try ekos_search + ekos_state yourself
$ pip install tiktoken           # count the tokens yourself
Everything behind this deckWhere
Raw commands, grep outputs, MCP responsesdocs/presentations/examples/token-benchmark/
Token-counting scriptcount-tokens.pytiktoken, cl100k_base, no hand-rolled estimate
EKOS · first published benchmark, real repo, real tokenizer, one honest exception included · github.com/alexeyban/EKOS