Write
Bind data from a CSV, Parquet, or SQL database. Write a derivation as a plain Python function with declared inputs and an output format.
elbi — Empirical Layer by Intelligible
Every hypothesis a data scientist checks gets discarded when the session ends. elbi turns each checked result into a derivation: a cached, certified MCP tool that remembers what was found, so the next agent builds on it instead of guessing again.
This is the Empirical Layer by Intelligible (ELBI): a memory layer built from what's actually been verified, not just named. Runs on your machine — no platform to lock you into.
Your data
Tables & files
CSV, Parquet, SQL
Definitions
semantic layers, ontologies
Empirical layer
statML registrystatML model registry
Human-writtenHuman derivations
Agent-writtenAgent derivations
Your agent
Claude Code, Cursor, yours
elbi, at rest in the empirical layer
Built by the team behind Intelligible
§ 01 · Premise
It re-derives the join, the threshold, the definition of “active” a little differently every time — and none of it survives the session. The next agent starts from zero and pays to guess again.
An empirical layer fixes that: compute once, certify once, keep it forever. Read what that actually means.
§ 02 · Anatomy
Declare the inputs and how to serve the result. elbi runs the function against the data you bound and caches the output until the code or data changes.
@derivation(
inputs={"sales": Dataset("sales")},
serve=serve.table(title="Churn risk", max_rows=50),
)
def churn_risk(ctx: Context) -> Artifact:
"""Per-customer churn-risk scores."""
rows = ctx.input("sales").rows
scored = [
{"customer_id": r["customer_id"],
"risk": 1 / (1 + float(r["amount"]))}
for r in rows
]
return Artifact.table(scored)Provenance
Every run is recorded in the derivation's result history: what changed, and what moved it.
Portability
Served over MCP to any client — Claude Desktop, Cursor, the MCP Inspector, or your own agent.
Trust
A derivation reads the same either way — person or agent. elbi verifies it under isolation; a human certifies it before it serves.
Memory
Hand an agent a model you trust, or let it propose one from your data — either way. Once certified, it stays: durable, not gone when the session ends.
Verification certificate
VerifiedBound inputs
Certified by
you@company.com
Signature
3f9a1c…e02d
§ 03 · Quickstart
elbi serve opens a local web app: a chat UI, a SQL workbench, notebooks to promote a cell straight to a certified derivation — this is where you review and certify. The same server exposes it all over MCP at localhost:7700/mcp. Want just the MCP endpoint? Install elbi-cli alone.
$ uv tool install elbi$ elbi init example-project$ cd example-project$ elbi serve
First run takes ~15–20s longer while it warms up. That's expected, not a hang.
§ 04 · What it does
01 · Reuse
A derivation runs the expensive part once. Every later prompt gets the cached result back in milliseconds.
First call
1.4s · full scan + join
2nd call
4ms · cache hit
1,000th call
4ms · cache hit
02 · What it can touch
Point Claude Code, Cursor, or your own agent at a derivation instead of raw tables — a typed result, not a hallucinated join.
Claude Code
Cursor
your agent
run_derivation
03 · Certification
Agents can propose a derivation. elbi verifies it in isolation and serves it only once a person signs off.
04 · Auditability
Each one keeps a result history and an exportable, offline-verifiable certificate. Built for teams that have to show their work.
cite: churn_risk@v3
cite: monthly_active.segment@v1
cite: revenue.forecast@v2
05 · Scales when you need it
elbi is Apache-2.0 and runs on your machine — nothing leaves your network unless you point it there. elbi-enterprise layers SSO and tenant isolation onto the same build when a team needs it.
§ 05 · Workflow
Bind data from a CSV, Parquet, or SQL database. Write a derivation as a plain Python function with declared inputs and an output format.
Certify it yourself, or let an agent propose one first — elbi verifies it under isolation before anything serves.
elbi caches the result and serves it as an MCP tool to any client, recomputing only when code or data changes.
Get started
No account, no fine-tuning, nothing that leaves your network unless you point it there. Bring the model you've already built — it computes once, stays cached.