The governed AI knowledge platform
Every answer shows its work
eli.ai turns your documents and live systems into one knowledge layer for chat, agents, and APIs. Every claim links to the document or the database call behind it — and when the evidence is not there, it says so instead of guessing.
- capability modules
- 8
- capability modules
- documented API operations
- 92
- documented API operations
- automated tests
- 2,300+
- automated tests
Self-hostable on a laptop or a single VPS — Postgres and two Node processes, no managed services required.
answers when the evidence is there
Is anything stuck on the Order Platform right now?
Yes — 14 orders are stuck totalling $8,120 D1, all older than 24 hours. Per the incident runbook, requeue them from the fulfilment console S1.
- S1
- Order Platform incident runbook · § Requeue
- D1
- order-backlog · 4 rows · 41 ms · ok
and stops when it is not
Which vendor should we consolidate onto next quarter?
I cannot answer that from this workspace. The vendor comparison is a draft and no certified source covers next quarter — here is what does exist.
abstained · reason: no_certified_source
How it works
Four steps from your documents to an answer you can check
- 01Intake
Connect
Point eli.ai at the wikis, vaults and channels your team already writes in. Sync is read-only and incremental.
- 02Atlas
Model
Entities and relations are extracted with provenance, then reviewed and merged against an ontology you control.
- 03Conduit
Bind
Attach parameterized, read-only queries to the entities they describe, so answers can reach live numbers safely.
- 04Lens
Ask
Chat, agents and the API answer from documents and live systems together — with citations, or an abstention.
Capabilities
Built like infrastructure, argued like a business case
Every capability below is stated twice — the mechanism, so your engineers can verify it, and the outcome, so everyone else knows why it matters. Both lines describe the same shipped code.
- Lens
Cited answers, honest abstentions
- the mechanism
- Hybrid retrieval with reranking and graph fusion, ACL-filtered before ranking. A citation policy validates every claim, retries with named gaps, then abstains rather than shipping uncited — span-level offsets included.
- what it changes
- Answers you can forward to a customer or an auditor without re-checking them — and a refusal you can trust instead of a confident guess.
- Conduit
Live data, frozen provenance
- the mechanism
- Governed read-only named queries over Postgres, MySQL and Snowflake with per-user row entitlements. Every result is snapshotted and hashed, so a cited figure re-verifies months later.
- what it changes
- The number in the report is the number in the warehouse — and an amendment cycle ends with a hash check, not an argument.
- Warrant
Humans stay in the loop
- the mechanism
- Consequential agent actions suspend durably: approve, reject, or edit. A per-tool review policy earns autopilot — every autopiloted call logged, risk-scored, and sampled for retrospective review.
- what it changes
- Pilot-grade safety that relaxes into throughput as measured trust accrues, not as attention fades.
- Crucible
Quality gates on every release
- the mechanism
- Golden test sets run the real pipeline on schedule; acceptance gates bind metric thresholds to consequential flips; drift detection ships with statistical significance.
- what it changes
- A regression is a finding with a confidence interval — caught before your customers become the eval.
- Atlas
One engine for every number
- the mechanism
- Matrices, deal configurations, pricing rules and estimation factors live as versioned structured records. Prices come from rules; estimates ship as ranges with visible assumptions.
- what it changes
- The price quoted is the price delivered — and no spreadsheet quietly disagrees with the contract.
- Intake
Team knowledge, real permissions
- the mechanism
- Connectors and office-format intake normalize everything into one lineage-carrying corpus. Team file stores hold decks and templates with explicit cross-team grants.
- what it changes
- Each team's material stays theirs, is searchable and citable, and stops rotting in shared drives.
- Lineage
Provenance end to end
- the mechanism
- Append-only audit the database enforces, document lineage across revisions, full run traces with token-level cost attribution, and a configurable zero-retention model posture.
- what it changes
- Compliance evidence without archaeology — and client-data features that pass security review the first time.
- Ports
Every front door
- the mechanism
- Durable agents with budgets, pinned versions and capability locks — each servable as its own scoped MCP mount — installable team skills, a versioned REST API with a typed SDK, and MCP in both directions.
- what it changes
- It works where your team already works — chat, CRM, assistants, and your own product surfaces.
The system
What the eight modules add up to
eli.ai sits between the things your team writes down and the systems that hold your numbers, and treats the two as one governed knowledge layer. An answer drawn from it can cite a paragraph in a runbook and the exact query behind a live figure in the same sentence, decline when neither backs the question, and stay traceable and measurable long after it was given.
Both halves of an answer
One claim can carry a Source Citation S1 to the paragraph it came from and a Data Citation D1 to the query that fetched the number. The two registries are separate and each resolves on its own.
A refusal is a result
When no certified source covers the question, the answer policy abstains and points at what does exist instead of filling the gap. Every verdict is recorded, so you can read what was declined and why.
Checked afterwards, not asserted
Lineage keeps the trail from an answer back to the document revision behind it. Crucible scores the same pipeline against golden sets, and a configuration change ships only when the difference is statistically significant.
Humans stay in the loop
Consequential agent actions suspend into an approvals inbox — draft, rationale, and three verbs: approve, reject, or edit. A per-tool review policy earns autopilot over time: every autopiloted call is logged and risk-scored, a sample gets a retrospective verdict, and overturns tighten the policy on their own.
One engine for every number
Matrices, deal configurations, pricing rules and estimation factors live as versioned structured records. Prices come from rules, estimates come out as ranges with visible assumptions, and report figures freeze their source values — so a number a buyer sees is the number delivery reports.
Documents enter at Intake. Live rows enter at Conduit. Everything converges on Lens and leaves through Ports. Lineage records the path; Crucible measures the result and feeds it back.
in
Confluence, SharePoint, Slack, markdown vaults
Intake
Syncs your sources read-only and re-chunks only what changed.
Atlas
Extracts entities and relations, each with the evidence for it.
Warrant
Reviews and certifies before a fact is allowed to count.
Conduit
Runs the governed query and hands over the rows D1.
Lens
Retrieves, then answers with its sources cited S1 — or abstains.
Ports
Delivers it to people and machines alike.
out
chat, durable agents, REST, MCP, SDK
Crucible
Scores those answers against golden sets. The configuration that wins ships back into Lens.
Lineage
Records every step above — origin, revisions, what was derived from what, and which answers depended on it.
What each one contributes
In pipeline order — the same order the reference below uses. One line each; the endpoints and imports come after.
- Intake
- Pulls in what your team already writes — wikis, vaults, Slack, SharePoint — read-only and incrementally, re-processing only what actually changed.
- Atlas
- Turns those pages into a typed graph of the things you talk about, carrying the sentence that evidences every relation.
- Warrant
- Decides what counts as certified, and who has to approve a change before a fact gets promoted.
- Lineage
- Keeps the receipts: where a fact came from, what changed since, and what breaks if you deprecate the document behind it.
- Conduit
- Attaches allow-listed, read-only queries to the entities they describe, so an answer can quote a live number and show the call that fetched it D1.
- Lens
- Retrieves across full text, vectors and the graph, then answers with the documents cited S1 — or clarifies, flags a conflict, or abstains.
- Crucible
- Measures that pipeline against concept-anchored golden sets, so a change to it is judged on recall, groundedness and abstention rather than on impressions.
- Ports
- Hands the whole thing to your people and your machines: the workspace UI, durable agents, a versioned REST API, an MCP server and a typed SDK.
They chain in that order, but the order describes them rather than constrains you. Each module owns its own endpoints, its own SDK subpath and its own scope, so adopting one costs a key and a call rather than the platform — and nothing above has to be switched on first. The reference below takes them one at a time and shows exactly that: the input you hand over, the endpoint, the import.
Flows across the modules
Every job is a different path through the same eight
Each row below runs on the platform in the diagram above. Read across a row for the modules a job needs and the order it needs them in; read down a column for how often a module is actually on the path. Breadth follows scope — a focused job runs on four of the eight, a whole-workspace walkthrough runs on all of them, and it is the same machine either way.
Research synthesisPattern
Ingest papers, reports and field notes, connect them in a concept graph, and trace every synthesised claim back to the document it came from.
Builds the result: Intake (1), Atlas (2), Lens (3). Acts on it afterwards: Lineage (4). Not used: Warrant, Conduit, Crucible and Ports.
Support deflectionPattern
Answer a customer in their own words from the help centre and ticket history — citing the canonical answer, and abstaining rather than bluffing.
Builds the result: Intake (1), Warrant (2), Lens (3). Acts on it afterwards: Crucible (4). Not used: Atlas, Lineage, Conduit and Ports.
Compliance & audit trailsPattern
Certify policies with named owners and review SLAs, then hand an auditor append-only provenance, a blast radius and a programmatic trail.
Builds the result: Warrant (1). Acts on it afterwards: Lineage (2), Crucible (3), Ports (4). Not used: Intake, Atlas, Conduit and Lens.
Sales enablement
A rep on a live call gets the current price, the certified positioning and the security posture — cited, never guessed.
Builds the result: Intake (1), Warrant (2), Lens (3). Acts on it afterwards: Lineage (4), Crucible (5). Not used: Atlas, Conduit and Ports.
Automated reports
The same client report every Monday — current numbers, defensible definitions, a reproducible PDF — with nobody assembling it by hand.
Builds the result: Conduit (1), Warrant (2), Lens (3). Acts on it afterwards: Crucible (4), Ports (5). Not used: Intake, Atlas and Lineage.
Matter research
State a certified controlling authority plainly, read the live matters database, and decline when a settlement call has no authority on file.
Builds the result: Intake (1), Atlas (2), Warrant (3), Conduit (4), Lens (5). Acts on it afterwards: Lineage (6), Crucible (7). Not used: Ports.
Incident response
A 2am page becomes a cited incident answer carrying live open-incident counts, abstaining when no record backs the claim — then ships as an assistant.
Builds the result: Intake (1), Atlas (2), Warrant (3), Conduit (4), Lens (5). Acts on it afterwards: Lineage (6), Crucible (7), Ports (8).
Sales AI desk
One deal record drives the deck, the proposal, the price and the contract; estimates ship as ranges, claims trace to the matrices, and consequential sends wait for a human — until autopilot is earned.
Builds the result: Intake (1), Atlas (2), Warrant (3), Conduit (4), Lens (5). Acts on it afterwards: Lineage (6), Crucible (7), Ports (8).
The fourteen industry walkthroughs — one per seeded demo workspace, each runnable locally — all follow the long path, Intake through Ports, because touring a whole workspace touches everything in it. The shorter rows above are the useful lesson: a job takes the modules it needs, and the rest stays switched off.
The same paths, read module-first
Pick a module to see every job it contributes to.
Lens is on the path in 7 of the 8 jobs — it builds the result in 7 and acts on it afterwards in 0.
Research synthesisstep 3 of 4
IntakeAtlas3 · LensLineageSupport deflectionstep 3 of 4
IntakeWarrant3 · LensCrucibleSales enablementstep 3 of 5
IntakeWarrant3 · LensLineageCrucibleAutomated reportsstep 3 of 5
ConduitWarrant3 · LensCruciblePortsMatter researchstep 5 of 7
IntakeAtlasWarrantConduit5 · LensLineageCrucibleIncident responsestep 5 of 8
IntakeAtlasWarrantConduit5 · LensLineageCruciblePortsSales AI deskstep 5 of 8
IntakeAtlasWarrantConduit5 · LensLineageCruciblePorts
Not on the path for Compliance & audit trails — those jobs run without it.
The platform
Eight modules, and any one of them on its own
Each module owns one job, one set of endpoints under /api/v1, and one entry point in the SDK. Together they are a single path from a document to a cited answer. Separately, each is something you can adopt without the other seven.
You do not have to adopt the platform to use a module
There is no base install and no required order. Run Lens over documents you never modelled in Atlas. Run Conduit against your warehouse and never ingest a document at all. The minimum to use one module is a workspace API key carrying that module's scope, and that module's endpoint — nothing else has to be configured.
Reactone subpath, one module in your bundle
HTTPone key, one endpoint
one subpath per module — @eli-ai/react/{query, documents, graph, governance, data, agents, quality, connectors} · plus /provider and /hooks
The headless client mirrors the same split — createDataClient from @eli-ai/client/data imports no other capability module, and no React.
Read each module as the code you would ship — or as the data flowing through it.
Intake
Sync Confluence, SharePoint, Slack and markdown vaults read-only, incrementally, and re-process only where content actually changed.
- API
- /api/v1/connectors
- SDK
- @eli-ai/react/connectors
Inputa source: non-secret config plus a credential, encrypted at write
APIcreate the source, then enqueue a crawl — scope kb:write
Reactthe source list, with per-source sync
Atlas
Extract a typed entity graph with provenance on every relation — and a deterministic fallback that works with no model at all.
- API
- /api/v1/entities · /api/v1/relations
- SDK
- @eli-ai/react/graph
Inputan entity, or an edge carrying the sentence that evidences it
APIwrite an entity (kb:write), then walk the frontier (kb:read)
Reactbrowse entities and their neighbourhood
Warrant
Promote facts from extracted to certified through gated change requests, with owners, review SLAs and a versioned manifest.
- API
- /api/v1/change-requests · /api/v1/manifest
- SDK
- @eli-ai/react/governance
Inputa proposal — kind, target, and the payload validated for that kind
APIpropose, then decide — scope kb:write (kb:read to list)
Reactthe review queue, gated on what the caller may do
Lineage
Trace any document to what it produced, and see what breaks before you deprecate it.
- API
- /api/v1/documents
- SDK
- @eli-ai/react/documents
Inputa markdown document — the thing an answer later cites as S1
APIwrite it (kb:write), then ask what it produced (kb:read)
Reactthe trail for one document, origin through blast radius
Conduit
Bind graph entities to allow-listed, parameterized read-only SQL so an answer can quote a live number and show the call that fetched it.
- API
- /api/v1/data/queries
- SDK
- @eli-ai/react/data
Inputa named query: SELECT/WITH only, typed params, row-capped
APIrun it against your own warehouse — scope data:run; the
dataCallIdis the D1 anchorReactthe query catalogue, with governed execution
Lens
Retrieve across full-text, vectors and the graph, then answer, ask for clarification, surface a conflict, or abstain.
- API
- /api/v1/query · /api/v1/search
- SDK
- @eli-ai/react/query
Inputa question, and how hard the answer policy should hold the line
APIone call, evidence attached — scope agents:run (kb:read for search)
Reactsearch and ask in one surface; EliSearch drops the ask tab
Crucible
Measure quality against concept-anchored golden sets, and gate config changes on statistical significance rather than impressions.
- API
- /api/v1/qrels · /api/v1/evals/runs
- SDK
- @eli-ai/react/quality
Inputa golden item: must/should assertions and whether citing is required
APIjudge, read the metrics, then compare two runs properly
Reactrun metrics and the policy-decision log
Ports
Reach all of it from durable agents, a versioned API, an MCP server, and a typed SDK.
- API
- /api/v1/agents/{slug}/runs · /api/mcp
- SDK
- @eli-ai/react/agents
Inputan agent slug and the run input; the conversation is optional
APIqueued durably, reattachable — scope agents:run
Reactstart a run, watch its steps, approve what needs a human
For developers
Reachable from whatever you already run
Workspace-scoped API keys, structured JSON with the citation registries intact, 92 documented OpenAPI operations with a live console, and a native MCP server — so an external agent can use your knowledge base without a bespoke integration. Try the API console
The typed client, instead of curl
Mount it in an MCP client
Put your knowledge to work without losing track of it
Start in the hosted app, or follow the quickstart and run the whole thing on your own infrastructure.