Numbers don't read
An agent describing a 12-row sales breakdown in prose loses the reader by row 5. The point of returning data is so people can see patterns, not parse sentences.
Ready to get started?
Deploy sovereign AI on your infrastructure - in weeks, not months.
Developers · Component Builder · 17 built-in · Custom via SDK
Twenty built-in components let agents return charts, citations, approval cards, drafts, and forms - rendered inline. Numbers become shapes. Decisions become buttons.
Bring your own when the built-ins don't fit. Typed, versioned, governed.
17 built-in components Six categories · charts to forms Custom via SDK Typed schemas · versioned
Most enterprise AI sends back paragraphs. The user reads them. Maybe re-reads them. Maybe scrolls back up. Then opens a separate tab, finds the dashboard, exports the data, drafts the email, sends the form. The agent did half the job. The user did the other half.
An agent describing a 12-row sales breakdown in prose loses the reader by row 5. The point of returning data is so people can see patterns, not parse sentences.
When an agent recommends a budget approval, the human needs to actually approve or reject. Reading 'consider approving' and switching to a different tool is friction the agent should have absorbed.
Agent produces a polished email response, user copies it, pastes into Outlook, makes two edits, sends. The agent could have rendered an editable composer with the recipient pre-filled. It didn't.
The agent decides what kind of component to use. The platform validates the data against the component's schema. The UI renders it inline. No separate dashboard, no copy-paste, no context switch.
From agent decision to rendered UI · annotated
Six categories cover what enterprise agents actually need to render: numbers and shapes, document workflows, citations, decisions, code, and communication drafts. Each component has a typed schema, a preview, and a live renderer. Every agent in your business can use them on day one.
Q4 PIPELINE
Charts and metrics rendered in-thread. Numbers become shapes.
· bar_chart
· line_chart
· pie_chart
· data_table
· metric_card
Q3-report.pdf
generated · 4 pages
3 changes · review and approve
Artifact workflows without leaving the conversation.
· artifact
· document_viewer
· diff_view
Section 2.1 · Remote work policy
SharePoint /HR/Policies · p.3
↗ open sourceCitations and sources the user can verify in one click.
· citation_card
· source_preview
· search_results
Approve refund?
$240.00 · order #4827
Human-in-the-loop decisions rendered as buttons, not as prose.
· approval_card
· form
· status_card
· progress_tracker
def calculate(x):
return x * 2 + 1
$ python -c "print(calculate(5))"
11
Syntax-highlighted code blocks and live terminal output.
· code_block
· terminal_output
TO
vendor@acme.com
SUBJECT
Re: Q4 contract renewal
SEND ↗Drafts, pickers, and scheduled meetings the agent hands to the user.
· email_composer
· calendar_picker
· meeting_card
Browse the registry at /studio/comp-library. Build a custom component with the wizard at /studio/comp-builder. View the typed schema for every component. The chrome below is what your team sees on day one.
Component LibraryA2UI
17 components · 5 categories · typed schemas · versioned · same governance as agents
Metric Card
DATA VIZ
Bar Chart
DATA VIZ
Line Chart
DATA VIZ
Pie Chart
DATA VIZ
Data Table
DATA VIZ
Citation Card
KNOWLEDGE
Approval Card
INTERACTIONS
Dynamic Form
INTERACTIONS
Status Card
ACTIONS
Progress Tracker
ACTIONS
Code Block
CODE
Terminal Output
CODE
Custom Widget
FREEFORM
KPI Dashboard
COMPOSITION · COMP
Comparison View
COMPOSITION · COMP
Report Summary
COMPOSITION · COMP
Timeline View
COMPOSITION · COMP
/studio/comp-library and /studio/comp-builder in your sandbox today, including all 13 base components, the 4 composition templates, and the typed-schema view.An agent doesn't have to pick one component. A revenue review reply might include a metric card up top, a bar chart in the middle, citations to source docs, and an approval card at the bottom. All four render inline. The user sees the answer, sees the data, sees the source, and acts.
How did Q3 sales go? Should I approve the Q4 budget increase?
Q3 closed strong. Revenue beat plan by 14%, driven by Enterprise expansion. Recommend approving the Q4 increase - the pipeline supports it.
Q3 REVENUE · ACTUAL vs PLAN
$4.2M
↑ 14% vs plan · ↑ 18% QoQ
PLAN
$3.7M
BY SEGMENT · Q3
bar_chartSOURCES · 2 documents
citation_cardQ3 Sales Close Report
Snowflake · sales.q3_2024_close · yesterday
Q4 Pipeline Forecast
Salesforce · Reports/Q4-2024-Forecast · today
Approve Q4 budget increase?
+18% vs Q3 · brings total to $4.96M · funds 2 new AE hires + AdWords expansion
your decision routes to: HITL queue · approver: VP Finance · audit: logged
The agent emitted four components in one reply. The user sees the headline number, sees the segment breakdown, sees the source documents, and decides - all in one screen. No tab switching. No copy-paste. The decision routes through the same approval queue as any other governed action.
Define a schema for your component's props. Write the React renderer. Register it in the platform. Every agent in your business can now use it. Same validation, same versioning, same rendering pipeline as the built-ins.
{
"name": "risk_score",
"props": {
"score": "number",
"reasons": "string[]"
}
}
JSON schema for the component's props. The platform uses this to validate every emission.
export default RiskScore(p){
return <Card>
{p.score} · risk
{p.reasons.map(...)}
</Card>
}
A React component that takes the validated props and renders. Standard React - any libraries you already use.
RISK SCORE · PREVIEW
72/100
· high transaction velocity
· device mismatch
Sample data so the gallery and the agent builder can show what your component looks like before agents emit it.
● PUBLISHED · v1.0
risk_score
now in component picker
available to all agents
Publish via the SDK or the UI. Gets a version number. Older agents keep their pinned version while new agents adopt it.
Every component has a typed schema. Every emission is validated. Every component is versioned. When you ship v2 of a component, agents pinned to v1 keep working - they upgrade on their own schedule.
Every component emission is checked against the registered schema before render. Wrong shape, wrong type - the agent sees the validation error and the user never sees a broken component.
Component versions follow semver. New v2 with breaking changes ships alongside v1, not on top of it. Agents pinned to v1 keep rendering. Migration is a deliberate decision.
Components run in a sandboxed renderer. No script injection, no arbitrary HTML, no fetches to unknown URLs. The schema is the only attack surface. The schema is small.
How do I keep brand consistency?
Components are themed. Set your brand colours, fonts, and spacing once at the platform level. Every component built-in or custom inherits the theme. The agent's chart looks like the rest of your product, automatically.
How do components actually render?
Standard React. The platform passes validated props to your renderer; you return JSX. Use whatever component library you already have - shadcn, Material, your in-house design system. The platform doesn't care, as long as the schema validates.
How does the agent know which to use?
Components are listed in the agent's knowledge of available outputs, with descriptions. The agent picks based on what it's responding with - structured data triggers a chart, a decision triggers an approval card, a draft triggers an email composer.
Are components in the audit log?
Yes. Every component emission is logged - which component, what data, which agent, which user. If a regulator asks 'what did the agent show this user?' you can answer with the exact rendered output. The data is in the audit, not just the prose.
Plain text masquerading as a product.
The agent returns markdown. The chat client renders headers, bullet lists, and code blocks. Charts are described in prose. Approvals are 'consider approving X.' Drafts are paragraphs the user copies somewhere else.
Frontend engineering forever.
Build a custom React frontend for each agent. Charts wired to that agent. Forms wired to that agent. Six months later you have six agents with six different frontends. Update one component, regression-test six surfaces.
Twenty components. Custom via SDK. Day one.
Twenty built-in components covering charts, citations, approvals, drafts, code, and more. Custom components register against the same schema/renderer pipeline. Themed centrally. Versioned. Audited.
Chat is a starting point, not a destination. The first generation of enterprise AI shipped with paragraph-shaped outputs because LLMs returned text. The second generation - the one that actually replaces dashboards and forms - returns components. Numbers become shapes. Decisions become buttons. Drafts arrive ready to send. The interface changes, and the work the agent does for you changes with it.
Sandbox access in 24 hours. Comes with the 17 built-in components, a sample agent that exercises six of them in one reply, and the SDK to build your own.
A custom component takes about two hours start to finish. Less if you already have a React design system.
