Enterprise AI needs more than a chat box.
EKA's Agent Experience turns governed enterprise reasoning into a conversational product: questions, visible agent activity, structured records, calculations, evidence, result states, persistent conversations, and contextual assistance from the enterprise pages themselves.
It was built on top of the existing runtime rather than in place of it. The runtime still owns interpretation, planning, enterprise authority, governed reads, access, evidence, calculations and result semantics. The interface is responsible for making those semantics understandable and usable.
The story is one claim in three parts: EKA was built headlessly first so its enterprise reasoning could be tested on its own, and the Agent Experience was then built on that governed runtime without moving enterprise truth into the browser or into a UI framework.
More than a chat box
A chat interface mostly has to display messages. An enterprise assistant has to display what an answer rests on.
A useful EKA answer may need to show all of this at once:
- the enterprise object it resolved, and which key that is
- which source system a fact came from, and whether the value is canonical or source-native
- which document passage supports a statement
- which calculation was executed, over which rows
- that a downstream business record is absent
- that a capability is not available on this subject
- that part of the answer is restricted from the person reading it
- whether the result is complete, partial or unavailable
None of that survives being flattened into a paragraph of generated text. So the Agent Experience is conversational at the top and structured underneath: prose a person can read, over records, evidence, calculations and a stated result.


This capture replays a previously executed real EKA run — the evidence pack's own guide-v4-01-closed-won-no-erp — so the page does not depend on a model answering the same way twice. The runtime produced this answer on the committed estate; the replay calls no model, which is what the frame's Model · scripted (captured run) line means.
Two surfaces, one experience
EKA is reached two ways, and they are one product: one thread store, one set of renderers, one runtime behind both.
The Workspace
The Sidecar
Organization · Opportunity · Sales order · Source record · Document
↓
Ask EKA
↓
Sidecar, opened with the page it was opened on as its contextOpening a Sidecar conversation in the Workspace continues it. It is not copied.
Workspace anatomy
The contextual Sidecar
The Sidecar exists so a reader does not have to leave the record to ask about it. A page that knows which record it is showing offers to be asked; a landing, a collection or a search page declares nothing and offers nothing.




SOURCE / CRM / opportunity / OPP-2026-900006 — under Active context, before a single word is typed.

All three replay guide-v4-01-closed-won-no-erp — the approved run EKA-GUIDE-01, whose recorded page context is exactly the one this Day-0 page declares. The record was chosen for that reason rather than for how it looks.
Below 1024px it becomes an overlay
There is no room for a 400px panel beside a phone-width page, so the Sidecar takes the screen instead of squeezing the record into a column that cannot hold it. The thread, the context and the controls are unchanged.


The conversation moves to the Workspace
Open in Workspace carries the saved conversation's own id. The Workspace does not receive a copy of the messages from the browser — it reopens the conversation from the database, re-authorized for whoever is reading now, which is the same path any saved conversation takes.




tests/e2e-eka/acceptance.spec.ts, which asserts the Workspace lands on ?c= the Sidecar's conversation id and replays the same turn.This pair is a live capture, not a replay: a saved conversation id exists only in live mode, so replay could not show it. The run was planned and worded by google:gemini-3.5-flash-lite against the local estate on 2026-09-23, and the result was COMPLETE.
Visible agent activity
EKA shows what it is doing without showing what it is thinking. The activity stream is derived from the run's own execution trace — it is not the model narrating.
- checking a business object
- resolving an enterprise identity
- reading a downstream system
- retrieving a document
- running a calculation


Agent activity reflects execution state. It is not chain-of-thought.
The answer itself arrives whole once the governed run finishes. V1 does not manufacture token-by-token streaming: there is nothing to stream until the runtime has finished deciding what may be said.
Transcript
- The question is typed and sent:
This opportunity is Closed Won. Why hasn't it reached ERP?
The run was sent with the page context CRM opportunity OPP-2026-900006. - The activity rail runs, then the answer arrives with its result: COMPLETE.
- The answer reads:
Opportunity OPP-2026-900006 is marked as CLOSED_WON in the CRM system, but the evidence does not establish why it has not reached the ERP system.
- The steps are opened: Reading the source record · Checking cross-system links · Nothing matched · Following the cross-system journey · Writing the answer.
- The evidence is opened: 9 items.
- The view returns to the answer.
Structured answers
The model chooses meaning. Twindexers chooses presentation.
EKA never asks a model for a layout, for markup, for component names or for visual hierarchy. The runtime returns a typed answer, and a deterministic adapter turns that into view models the design system renders.
EkaAnswer · typed evidence · feature resolutions · calculations · result status
↓
deterministic UI adapter
↓
Twindexers view models
↓
genui-ds componentsWhat the adapter may produce
- prose
- RecordCard
- fact groups
- DataTable
- calculation details
- StepTrace
- feature notices
- evidence groups
- result status
- follow-ups
What it may only produce from structured evidence
A journey, a resolution or a timeline is composed from typed evidence or not at all.
- cross-system journey
- entity resolution
- timeline
The second group is a rule rather than a preference: inferring a journey by reading the answer's prose would make a structural claim out of a sentence, which is exactly the confusion the structure exists to prevent.
Five answers, five lessons
Five real runs, each one a thing the interface has to be able to say. None was staged: each is a capture of a run the runtime executed against the estate.
Absence, without a cause invented to explain it
COMPLETEThis opportunity is Closed Won. Why hasn't it reached ERP?
The evidence establishes that no operational link exists. It does not establish why, and the answer says so under Cause not established rather than filling the gap with a plausible reason.
Transcript
- The question is typed and sent:
This opportunity is Closed Won. Why hasn't it reached ERP?
The run was sent with the page context CRM opportunity OPP-2026-900006. - The activity rail runs, then the answer arrives with its result: COMPLETE.
- The answer reads:
Opportunity OPP-2026-900006 is marked as CLOSED_WON in the CRM system, but the evidence does not establish why it has not reached the ERP system.
- The steps are opened: Reading the source record · Checking cross-system links · Nothing matched · Following the cross-system journey · Writing the answer.
- The evidence is opened: 9 items.
- The view returns to the answer.
A calculation the runtime performed
COMPLETEWhat do we owe Bharat Polymers, across how many invoices?
The sum and the count are runtime-derived objects with a predicate, a row count and a currency — not arithmetic improvised in a sentence.


Two authorities in one answer, kept apart
COMPLETEWhy was WCL-2026-000002 rejected, and what does the warranty policy say?
A customer's reported reason, a Support decision and a policy passage are three different kinds of fact. The answer shows them as three things.


PARTIAL is a valid product result
PARTIALShow canonical sales order SO-2026-000001 and tell me its total value.
The record exists; the canonical amount does not. EKA returns the record, names the missing feature and grades the request PARTIAL. It does not quietly substitute the ERP figure.


A cross-system journey as structured output
COMPLETEDid CRM opportunity OPP-2026-900001 continue into ERP? Show the recorded handoff.
This is the strongest case of EKA producing something richer than prose — and of the interface keeping entity resolution and operational continuation apart, because they are different claims about different things.


Transcript
- The question is typed and sent:
Did CRM opportunity OPP-2026-900001 continue into ERP? Show the recorded handoff.
The run was sent with the page context CRM opportunity OPP-2026-900001. - The activity rail runs, then the answer arrives with its result: COMPLETE.
- The answer reads:
CRM opportunity OPP-2026-900001 is operationally linked to ERP sales order SO-2026-000001 with an active relationship type of OPPORTUNITY_TO_SALES_ORDER.
- The steps are opened: Checking cross-system links · COMPLETED · Writing the answer · COMPLETED.
- The evidence is opened: 1 item.
- The view returns to the answer.
Result semantics
The experience does not collapse every outcome into success or failure, because the runtime does not either.
COMPLETE
The request was answered.
PARTIAL
Part of it was answered, and the rest is named.
UNAVAILABLE
It could not be answered, and why is stated.
A step can be empty inside a complete answer
Show Kestrel's open invoices and total their open amount.
The query was valid, permitted and executed, and it matched nothing. Nothing matched names the predicate that found none — and the request as a whole is COMPLETE, because the question was answered. The answer is that there are none.


Resolving a name is not finding the record
Show me the account for the customer named Kestrel.
One organization resolved. Which CRM account was meant did not.


Resolving the customer does not erase ambiguity in the requested source record.
Conversations that are re-gated
EKA conversations are not browser history. They are rows the server owns, and reopening one is an authorization question rather than a display question.
- conversations
- messages
- runs
- run evidence
- result sets
- task threads
Every value-bearing row carries the classification of the evidence it was produced from, and the read that fetches it applies the reader's current access in the same statement. So a saved answer that rested on a restricted document is not fetched and then hidden — it is not returned.

The whole sequence — asked at RESTRICTED + HR + PAYROLL, reopened at INTERNAL, then opened by a different principal who is simply told it is not available — is the 1 min 09 s recording in chapter 10 of the EKA Guide.
One experience, two widths
Every captured frame exists at 1440 × 900 and 390 × 844, in both themes, because both are the product.




A phone frame is a layout exhibit and not an evidence exhibit: at 390 the composer cuts the lower evidence rows, so an evidence frame at that width shows the layout honestly and the evidence badly. The Sidecar overlay above is the same distinction from the other side.
From question to governed answer
A turn is not one call to a model. It is a governed pipeline in which the model participates three times — interpreting, planning and writing — and decides none of what may be read.
User question
↓
optional page context
↓
─────────── trusted server boundary ───────────
↓
reference resolution
↓
feature / authority resolution
↓
validated plan
↓
governed tools
↓
access-aware enterprise reads
↓
typed evidence
↓
deterministic calculations
↓
grounded synthesis
↓
EkaAnswer
↓
deterministic UI adapter
↓
Workspace / SidecarEverything between the two ends is the runtime's: which subjects exist, which features are available on them, which tools may be called, which rows the reader may see, which arithmetic is performed, and what the result state is. The model proposes a plan; the validator is authoritative and may refuse it.
EKA GuideCompanion pageRead the grounding, authority, evidence and runtime design in depth — thirteen chapters and five real runs, stage by stage.Context is not evidence
The Sidecar sends the page a reader is on. That is a hint about what they mean — never a grant, and never a shortcut past a read.
page context → reference hint → server resolution → access check
→ governed read → evidenceThe server does not trust a record because a browser said it was on screen. It resolves the reference itself, checks the reader's access to it, and reads it through the same governed path any other question would take. A field that happens to be rendered on the page did not thereby become evidence.
The interface must not imply that everything visible on the page became evidence for the answer.
Presentation enrichment
Once an object is already grounded in a turn, the interface may read it again — under the same viewer — purely to render it better.
EKA grounds ORG-000012
↓
UI presentation read, same viewer
↓
a fuller Organization cardPresentation enrichment can make a grounded object easier to read. It does not retroactively become evidence used to reach the answer.
So nothing a presentation read returns is shown as something the agent used, and a structured part — a journey, a resolution — renders only from structured evidence for that turn.
Activity versus evidence
Activity
Evidence
an activity log≠proof of a claim
a step that ran≠a fact that was established
Why the difference is load-bearing
A step can run, succeed and find nothing — and one that does is exactly how EKA establishes an absence. Reading the activity list as support would turn we looked and there was nothing into we found something.
The technology stack
Nothing here was chosen to make a demo work. Each layer owns one thing, and the boundaries between them are the point.
Application
- Next.js 15
- React 19
- TypeScript
- Vercel
Agent Experience
Presentation and interaction. Neither decides enterprise truth.
- genui-ds ui-web 0.20.0
- genui-ds tokens 0.10.0
- Tailwind CSS 3.4
- assistant-ui
Enterprise data
- PostgreSQL
- Supabase
- pgvector
EKA runtime
Server-side TypeScript. The whole of what may be asked and answered.
- runEka
- Queryable Subject Registry
- governed Tool Catalogue
- Explorer read services
- document retrieval
- evidence normalization
- deterministic derivation
Persistence
Postgres-backed, in a schema of its own.
- agent.conversation
- agent.message
- agent.run
- agent.run_evidence
- agent.result_set
- agent.task_thread
Runtime activity
- read-only trace observer
- server-sent events
Models
Behind a provider adapter, chosen by server-side policy.
- provider adapter boundary
- model policy
- fallback ladder
- qualification gate
- actual-model recording
What each layer owns
The EKA runtime owns
- enterprise meaning
- interpretation
- planning
- authority
- tools
- access
- evidence
- calculations
- result semantics
genui-ds owns
- the Twindexers visual language
- RecordCard
- StepTrace
- MessageTurn
- Prose
- DataTable
- notices
- badges
- responsive composition
assistant-ui supports
- conversation interaction mechanics
- thread / runtime integration
- composer and thread behaviour
assistant-ui≠the EKA reasoning engine
assistant-ui≠the Twindexers visual authority
genui-ds≠an authority on enterprise truth
The three components this experience needed — RecordCard, StepTrace and MessageTurn — were specified back to genui-ds and released there rather than copied into this app, so the design system stays the one place the visual language lives.
The client/server boundary
The browser renders. It does not reach the enterprise.
┌─────────────────────────────────────────────┐
│ Browser │
│ Workspace / Sidecar │
│ assistant-ui interaction │
│ genui-ds presentation │
└───────────────────┬─────────────────────────┘
▼
┌─────────────────────────────────────────────┐
│ Next.js trusted server boundary │
│ viewer resolution │
│ conversation persistence │
│ model policy │
│ request / response adaptation │
└───────────────────┬─────────────────────────┘
▼
┌─────────────────────────────────────────────┐
│ EKA runtime │
│ interpretation · planning │
│ Queryable Subject Registry │
│ governed tools │
│ evidence normalization │
│ deterministic calculations │
│ grounded synthesis │
└──────┬───────────┬────────────┬─────────────┘
▼ ▼ ▼
Canonical Source Documents
records systems / retrieval
└───────────┴────────────┘
▼
Evidence
▼
EkaAnswer
▼
deterministic adapter
▼
structured Agent ExperienceThe trusted viewer
The security boundary is not an instruction in a prompt. It is where the reads happen.
the browser cannot assert a principal
↓
the server resolves a trusted viewer
↓
access-aware reads
↓
permitted evidence only
↓
model synthesisMaterial the viewer may not use is filtered by the governed read layer before it can become evidence, so the model is never asked to keep a secret it was told. A request that carries a principal identifier is refused rather than ignored, because an ignored field looks exactly like an honoured one.
The browser cannot switch to another enterprise principal by sending a principal identifier.
A development-only View as control exists, and it accepts only the governed allowlist of real principals. Being the owner does not bypass authorization.
Static Day-0, live EKA
Adding EKA did not turn Day-0 browsing into a live-database application.
The Day-0 Explorer
EKA
EKA answers from the live Metrolane estate. This page shows the frozen Day-0 reference.
One compact notice at the panel level rather than a label on every answer, and it goes away on the day the two estates are explicitly aligned.
Activity streaming
runEka
│
├── read-only trace observer
│ ↓
│ server-sent events
│ ↓
│ live activity in the UI
│
└── completed EkaAnswer
↓
final structured responseThe observer is read-only. With no subscriber attached, EKA's semantics are identical.
That is what makes the activity rail safe to show: it cannot change the run it is describing, so nothing about an answer depends on whether anyone was watching it being produced.
Model architecture
The Agent Experience is not wired to one model, and the browser cannot choose an arbitrary one.
Agent Experience → model policy → provider adapter → qualified model
- the browser may select only an allowed policy, and a policy is chosen per conversation
- provider credentials stay server-side
- every run records the model that actually answered, which under a fallback is not always the one asked for
A model is not supported because its API responds. It is eligible once it passes the smoke and golden qualification the release policy requires.
That gate is switched on for release, and today no model has passed it — so the selector offers Auto and nothing else, and an unqualified model produces an explicit retryable failure rather than a degraded answer.
The structured UI adapter
runtime output → EkaAnswer → UI adapter → view model → genui-ds components
The adapter is deterministic and shared: the same function turns a captured run into a view model for a test fixture, a replay and a live turn, which is what makes a golden run usable as a UI regression test at all.
What it may not do
Do not infer a journey, a resolution or a timeline by parsing an answer's prose.
A structured part renders from structured evidence for that turn, or it does not render.
Deliberately deferred
Three capabilities are deliberately absent, and each is absent for a reason.
File attachments
An enterprise-safe attachment needs upload, storage, a type and size policy, extraction, indexing, access, evidence treatment and persistence.
A paperclip button is not the capability.
Bring-your-own provider keys
Credentials stay server-side in the current owner-only phase. Public activation is a separate decision and is not scheduled.
A run inspector
Deferred until there is a safe and useful one. It would show interpretation, feature resolutions, tools, evidence, calculations, timings, the actual model and the build.
Never private chain-of-thought.
- no business mutations
- no external web evidence
- no implicit currency conversion
- no model-authored SQL
- no effective-policy-at-time
- no personalization
Evaluation is part of the experience
The enterprise cases that test how EKA reasons are the same cases that test how the interface represents it.
a live EKA run
↓
an approved captured result
↓
an EkaAnswer fixture
↓
the deterministic UI adapter
↓
a UI view-model fixture
↓
Workspace and Sidecar testsBecause the adapter is deterministic, a run that was promoted for its reasoning becomes a regression test for its presentation at no extra cost — and a change that quietly altered how a limitation or a result state renders fails against a real answer rather than against a hand-written one.
What the curated suite covers
- absence without an invented cause
- deterministic aggregation
- source and document authority together
- PARTIAL
- UNAVAILABLE
- a successful empty result
- cross-system operational links
- unsupported effective-time reasoning
- ambiguity preserved
- saved-conversation access re-gating
What a case asserts, and what it does not
Asserted
- required facts
- forbidden claims
- evidence
- calculations
- result state
- access behaviour
Never asserted
The answer's prose. A synthesis is the one stage whose quality is a model judgement, so a case that matched sentences would fail on wording and pass on meaning being wrong.
A plan the validator refused
The strongest engineering example in the set is not an answer. It is a run whose first plan was rejected.
A model proposes a structured plan, and the validator is authoritative. When it refuses one, the refusal goes back once, verbatim; a second refusal ends the turn as invalid, and every attempt is recorded. The validator is never weakened to make something answer.


The interface can show a completed run with its limitations rather than pretending every step succeeded on the first attempt.
Golden run gallery
Eight promoted curated runs, each a replay of the very run the suite graded GOLDEN. Click a poster to play; every one has a transcript.
What do we owe Bharat Polymers, across how many invoices?
A refused plan, repaired once, and a run that says which steps were limited.
Transcript
- The question is typed and sent:
What do we owe Bharat Polymers, across how many invoices?
- The activity rail runs, then the answer arrives with its result: COMPLETE.
- The answer reads:
We owe Bharat Polymers an open amount of 0.00 INR across 11 invoices.
- The steps are opened: Resolving the reference · COMPLETED · Calculating · Could not run as planned · FAILED · Calculating · Could not run as planned · FAILED · Resolving the reference · COMPLETED · Calculating · COMPLETED · Calculating · COMPLETED · Writing the answer · COMPLETED.
- The evidence is opened: 3 items.
- The view returns to the answer.
Why was WCL-2026-000002 rejected, and what does the warranty policy say?
A source record and a document passage answering one question without merging.
Transcript
- The question is typed and sent:
Why was WCL-2026-000002 rejected, and what does the warranty policy say?
- The activity rail runs, then the answer arrives with its result: COMPLETE.
- The answer reads:
Warranty claim WCL-2026-000002 was rejected due to impact damage, which the extended policy excludes. The recorded decision reason states that impact damage is excluded under the extended policy WP-EXT-36. The warranty policy document states that impact damage is excluded from coverage under this policy, and that eligible manufacturing defects may be considered during the 36-month policy period when supported by claim evidence.
- The steps are opened: Reading the warranty decision · COMPLETED · Searching documents · COMPLETED · Writing the answer · COMPLETED.
- The evidence is opened: 7 items.
- The view returns to the answer.
Show canonical sales order SO-2026-000001 and tell me its total value.
The record is available and the canonical measure is not.
Transcript
- The question is typed and sent:
Show canonical sales order SO-2026-000001 and tell me its total value.
- The activity rail runs, then the answer arrives with its result: PARTIAL.
- The answer reads:
Canonical sales order SO-2026-000001 has a status of "D". The total value of canonical sales order SO-2026-000001 is not established because the canonical.SalesOrder.AMOUNT attribute is not present.
- The steps are opened: Finding matching records · COMPLETED · Writing the answer · COMPLETED.
- The evidence is opened: 1 item.
- The view returns to the answer.
What is the canonical total value of SO-2026-000001?
The feature registry settles the question before anything is retrieved — one step, no evidence.
Transcript
- The question is typed and sent:
What is the canonical total value of SO-2026-000001?
- The activity rail runs, then the answer arrives with its result: UNAVAILABLE.
- The answer reads:
The canonical total value of SO-2026-000001 is NOT_PRESENT at the canonical layer, as canonical.SalesOrder.AMOUNT does not carry an amount. The ERP source record erp_sales_order.total_amount contains a source value, but answering the canonical question from it would be an unlabelled authority substitution.
- The steps are opened: Writing the answer · COMPLETED.
- The evidence is opened: 0 items.
- The view returns to the answer.
Show Kestrel's open invoices and total their open amount.
Nothing matched, and the request still completed.
Transcript
- The question is typed and sent:
Show Kestrel's open invoices and total their open amount.
- The activity rail runs, then the answer arrives with its result: COMPLETE.
- The answer reads:
For Kestrel Auto Retail (ORG-000012), canonical invoice records with an open amount greater than zero were not found. The population is empty, so there is nothing to total.
- The steps are opened: Resolving the reference · COMPLETED · Finding matching records · Could not run as planned · FAILED · Calculating · Could not run as planned · FAILED · Resolving the reference · COMPLETED · Finding matching records · Nothing matched · COMPLETED · Calculating · Nothing matched · COMPLETED · Writing the answer · COMPLETED.
- The evidence is opened: 3 items.
- The view returns to the answer.
Did CRM opportunity OPP-2026-900001 continue into ERP? Show the recorded handoff.
A cross-system journey backed by an explicit operational link.
Transcript
- The question is typed and sent:
Did CRM opportunity OPP-2026-900001 continue into ERP? Show the recorded handoff.
The run was sent with the page context CRM opportunity OPP-2026-900001. - The activity rail runs, then the answer arrives with its result: COMPLETE.
- The answer reads:
CRM opportunity OPP-2026-900001 is operationally linked to ERP sales order SO-2026-000001 with an active relationship type of OPPORTUNITY_TO_SALES_ORDER.
- The steps are opened: Checking cross-system links · COMPLETED · Writing the answer · COMPLETED.
- The evidence is opened: 1 item.
- The view returns to the answer.
Which version of the warranty policy was effective on 2026-07-15?
Five readable passages, and a question about a date none of them records.
Transcript
- The question is typed and sent:
Which version of the warranty policy was effective on 2026-07-15?
- The activity rail runs, then the answer arrives with its result: UNAVAILABLE.
- The answer reads:
Based on the provided runtime notes, the effective date for any document (canonical.Document.EFFECTIVE_AT) is NOT_SUPPORTED, as document versions carry no effective-from/effective-to dates. Therefore, the evidence does not establish which version of the warranty policy was effective on 2026-07-15.
- The steps are opened: Searching documents · COMPLETED · Writing the answer · COMPLETED.
- The evidence is opened: 5 items.
- The view returns to the answer.
Show me the account for the customer named Kestrel.
The entity resolved; the requested source record stayed ambiguous.
Transcript
- The question is typed and sent:
Show me the account for the customer named Kestrel.
- The activity rail runs, then the answer arrives with its result: UNAVAILABLE.
- The answer reads:
The evidence establishes that the canonical organization for Kestrel is Organization ORG-000012, named Kestrel Auto Retail. However, the runtime notes state that finding CRM accounts for a canonical organization is not supported in V1, and the organization is never a substitute for the account. Therefore, I do not have the specific CRM account for Kestrel.
- The steps are opened: Resolving the reference · COMPLETED · Finding matching records · Could not run as planned · FAILED · Resolving the reference · COMPLETED · Writing the answer · COMPLETED.
- The evidence is opened: 1 item.
- The view returns to the answer.
One saved conversation, reopened three times: by its owner at RESTRICTED + HR + PAYROLL, by the same owner after their access was lowered to INTERNAL, and by a different principal who is told only that it is not available. Twice the length of every other recording, and the only one captured live rather than replayed — which is why it is here rather than inline.
Watch it in the EKA Guide, chapter 10What the media is
Every moving picture on this page is an interface capture of a real EKA run. It is worth being exact about what that does and does not mean.
- A replay capture re-runs a previously executed real run through the same adapter and renderers. No model is called during the replay — which is what the on-screen line “Model · scripted (captured run)” records.
- A live capture ran against the local estate at capture time, with the model the frame itself names.
- Nothing here was staged. No answer was written by hand, no transcript was composed after the fact, and no question was arranged to produce a flattering one. Where a run found nothing, refused, or could answer only part of what was asked, that is the run.
Not one build
The media spans more than one prompt bundle, and saying otherwise would be the easiest false claim on the page to make. The guide's own runs were captured under PROMPT-EKA-0.4.6; the eight GOLDEN captures were promoted under 0.4.4, and CUR-012 under 0.4.5. Each remains valid evidence for the case it was approved against.
Technical details
The Sidecar frames on this page were captured on 2026-09-23 from build e4cedfe3.
- The contextual Ask, the overlay and the finished Sidecar turn replay
guide-v4-01-closed-won-no-erp— scripted (captured run), result COMPLETE. - The continuation pair is a live run on the local estate, planned and worded by
google:gemini-3.5-flash-lite, result COMPLETE. A saved conversation id exists only in live mode. - Recordings are silent WebM at 1440 × 900, click-to-play, each with a poster and a transcript written from what the recording showed.
The live EKA surface itself is not public. This page shows captures of it; the application is owner-only and a deployment that does not enable it serves no EKA route at all.
One substrate, many agents
EKA is the first Twindexers Agent Experience built on Metrolane. The interaction model is deliberately not specific to it.
What another agent would change
- subjects
- features
- tools
- domain rules
- the questions worth asking
What it would reuse
- conversation shell
- context model
- activity presentation
- record vocabulary
- evidence treatment
- result semantics
- access boundary
- golden-case testing
Finance, operations, HR, compliance and cross-system monitoring are all the same shape of problem: a governed runtime that knows what may be read, and an interface that does not hide the structure underneath the answer.
The goal is not to make enterprise software look like chat. It is to make enterprise reasoning conversational without hiding the enterprise underneath the answer.




