Logs. Vectors. Agent memory. One Rust engine instead of three
glued systems. This page shows the product — real dashboard
visualizations on seeded data, measured numbers against
Elasticsearch 8.13, and the
engine internals that make the numbers possible.
The visualizations below are not illustrations. They're the real
dashboard components rendered on seeded mock data so you can see
what the product looks like before a single config line. Drop a
work email if you want a private binary and the reproduction
scripts for the benchmark tables.
02·THE UX
TYPE IS THE UI. LIVE DATA.
XERJ rejects the Kibana aesthetic — boxed visualizations,
shadowed cards, icon-heavy toolbars. Every screen is typography,
negative space, and 1 px lines. Every chart below is the
same component that runs in the dashboards — same code, same
rules, same restraint.
LATENCY · PER MODEL · AXONOMETRIC RIBBON
axonometric · 5 series · min 223.03 · max 1.73K
Five models, 60 seconds. Depth encodes model generation — OPUS at the front, HAIKU at the back. Every stroke is a 1 px line.
03·VECTOR INDEX
WHERE YOUR QUERIES LIVE.
Every query is a point in 1536-dimensional space. The dashboard
projects them down to 2D and colors the six most common
intents. Fresh queries appear as hollow marks; old ones fade.
This is the EmbedSpace primitive — you get it by wiring a dense
vector field to the field catalog, no additional config.
830,000 QUERIES · 48 HOURS · UMAP 2D
UMAP · 830 embeddings · 6 clusters
04·SERVICE GRAPH
SEE EVERY HOP.
Traces aren't a separate product — they're a graph query on the
logs index. The ChordArcs primitive renders service → index
flows as a text-first sankey. Traffic is real rps; no icon
waterfall. Drill through any edge to the underlying spans.
SERVICE → INDEX · FLOWS · 1H AVERAGE
11 flows · 5→5 · rps
05·QUERY SHAPE
FIND THE OUTLIER QUERIES.
Twelve recent queries across six dimensions. Drag a handle on any
axis in the live version to filter. The dashboard highlights
queries whose recall@10 falls
below a threshold — this is how you find the cases your
retrieval is failing on.
LATENCY · TOKENS · COST · CACHE · RECALL · DOCS
12 rows · 6 dimensions · 1 highlighted
06·ATTENTION
WHAT THE MODEL READ.
When a RAG pipeline misses, the first question is "did the model
even look at the right words?" XERJ's attention overlay marks
the retrieved passage with per-token weight. Accent-yellow tokens
are the top 20 % by attention weight. No heat tiles, no color
ramp — just opacity.
Context windows are big and boring. XERJ visualizes the budget
as a left-to-right flow: system prompt, context, question,
completion. Width encodes tokens. You spot a bloated context in
a glance.
TOKEN BUDGET · 24 HOURS · T = 1,000 TOKENS
SYS PROMPT
84K T · 5.5%
CONTEXT
1.24M T · 81.2%
QUESTION
24K T · 1.6%
COMPLETION
180K T · 11.8%
08·CLASSICS
THE BREAD AND BUTTER.
Every dashboard still needs a top-N, a distribution, and a
heatmap. XERJ ships them as the same 1 px primitives the rest
of the visuals are built from — same code, same rules, different
shapes.
TOP DOCUMENTS RETRIEVED · 24H
runbook/oncall.md
12.43K
21.5%
rfc/042-retention.md
9.82K
17.0%
arch/cluster-design.md
8.2K
14.2%
rfc/039-hybrid-search.md
7.1K
12.3%
runbook/incident-1411.md
6.4K
11.1%
policy/pii.md
5.2K
9.0%
arch/hnsw-internals.md
4.8K
8.3%
docs/query-dsl.md
3.9K
6.7%
BY MODEL · SHARE OF TRAFFIC
SONNET 4.642.042.0%
HAIKU 4.528.028.0%
OPUS 4.618.018.0%
GPT-58.08.0%
GEMINI 33.03.0%
OTHER1.01.0%
SONNET 42% · HAIKU 28% · OPUS 18% · GPT-5 8% · GEMINI 3% · OTHER 1%
The reproducible head-to-head numbers live in
demo/playbooks/SCORECARD.md (with repro scripts) in the engine
repository. On the 1M-doc LLM-telemetry corpus, XERJ wins 81 of
91 measured cells (8 losses, 2 unsupported) — leading bool
queries 11.5×, query_string 6.9×, terms aggregation 1.15×, and
running 1.20× smaller on disk. The scorecard publishes the losses
too: in the mixed reads-under-write cases Elasticsearch wins, its
p99 staying 2–19 ms while XERJ's rises to ~60–150 ms. Numbers you
cannot reproduce from that scorecard should be treated with
skepticism.
TEST · 1M DOCS · P50 LATENCY
ELASTICSEARCH
XERJ
DELTA
Terms aggregation · top values
1.54 ms
1.34 ms
1.15×
demo/playbooks/SCORECARD.md
Bool query · must+filter+should+must_not
15.90 ms
1.38 ms
11.5×
demo/playbooks/SCORECARD.md
Query-string query
9.35 ms
1.35 ms
6.9×
demo/playbooks/SCORECARD.md
Wildcard query
9.10 ms
1.35 ms
6.8×
demo/playbooks/SCORECARD.md
Range filter · latency_ms
4.66 ms
1.34 ms
3.5×
demo/playbooks/SCORECARD.md
kNN · k=10 · 100% recall
2.64 ms
0.78 ms
3.4×
demo/playbooks/SCORECARD.md
Index on-disk size · post-ingest
806.7 MB
672.5 MB
1.20×
demo/playbooks/SCORECARD.md
10·ENGINE
WHAT MAKES IT FAST.
Speed is not one trick. XERJ is fast because everything happens
in one process, in one language, against data laid out exactly
the way the queries want to read it. Below are the six choices
that account for most of the delta.
No JVM
Rust compiles to a static binary with no heap, no GC pauses, no warm-up, no page fault storms after a restart — the process is serving queries the moment it starts.
Columnar native
Every column is encoded at write time — delta-of-delta for timestamps, dictionary + ZSTD for keywords, varint/bitpacking for small integers, SQ8 for vectors.
Pre-computed term histograms
Terms aggregations read a per-column value histogram kept at ingest time instead of scanning posting lists — the mechanism behind XERJ's terms-agg lead in the reproducible SCORECARD.
Hybrid planner
BM25 and vector search share one query tree, one cost model, and one execution pass. No RRF orchestrator, no two-system round trip.
Single-process ingest
The NGINX/JSON/syslog/OTLP parsers run in the same process as the writer. One fsync, one network hop, end-to-end back-pressure.
Explain plan is a feature
/v1/explain-plan returns the exact optimizer tree with per-node cost and row counts.