Skip to content
Cuelark UI
Agent UI kit · 29 componentsNew

Interfaces for agents that think, act and ask.

Everything you need to show an AI agent at work: the composer, the conversation, reasoning, tool calls, plans that wait for approval, diffs, terminals, citations and a live trace. Works with the Vercel AI SDK, or any stream.

A live agent run

billing-agentacme/billing

A scripted agent run, built only from Cuelark agent components. Send the prompt to start.

All agent components

DocumentQ4 billing changes

Q4 billing changes

Tax is now computed in one helper and applied only to customers with a tax ID. Totals match across the API and PDFs.

  • Reverse-charge VAT for B2B customers
  • Cent-accurate rounding
  • 22 billing tests, all passing

Artifact

Something the agent made, in its own panel with actions.

Centralize tax in tax(): zero without a tax ID, cent-rounded otherwise. Both the API and PDFs call it; two new tests lock the behavior in.

3 / 3

Branch

Flip between regenerated versions of a reply.

  1. Read the failing test output (in progress)
  2. Searched the codebase for “prorate” (pending)
  3. Writing the fix in billing/prorate.ts (pending)
  4. Run the test suite (pending)

Chain of Thought

The steps an agent took, on a rail with live status.

Checkpoint

A restore point in a conversation.

billing/tax.tsts
1export function tax(i: Invoice) {2  if (!i.customer.taxId) return 03  return Math.round(i.subtotal * i.rate * 100) / 1004}5 6export function total(i: Invoice) {7  return i.subtotal + tax(i)8}

Code Block

Code in a reply: filename, line numbers, highlights, wrap and copy.

Send the weekly report to 24 recipients?

The agent drafted the email from this week's dashboard.

Run a command in production

This deletes rows and cannot be undone.

psql $DATABASE_URL -c "delete from sessions where expires_at < now()"

Confirmation

An agent asking permission, with press-and-hold for risky actions.

Context Meter

How full the context window is, with tokens and cost on hover.

What's the fastest way to add dark mode?
Put your colors in CSS variables, define a .dark block, and toggle the class on <html>. Cuelark's theme already does this.
And to avoid a flash on load?
Run a tiny inline script in <head> that reads the saved preference and sets the class before the first paint.
Can the user override the system setting?
Yes: store their choice in localStorage and only fall back to prefers-color-scheme when nothing is saved.

Conversation

A transcript that sticks to the bottom while streaming and lets go when you scroll.

src/billing/tax.ts+4 −1
11 import { Invoice } from './types'
22
3−export const tax = (i: Invoice) => i.subtotal * i.rate
3+export function tax(i: Invoice) {
4+ if (!i.customer.taxId) return 0
5+ return Math.round(i.subtotal * i.rate * 100) / 100
6+}
47
58 export function total(i: Invoice) {
69 return i.subtotal + tax(i)
710 }

File Diff

A change an agent proposes to a file, with accept and reject.

File Tree

The files an agent touched, with added, modified and deleted marks.

Tailwind v4 moves configuration into CSS with the @theme directive1, and every GSAP plugin became free for commercial use in version 3.132.

Inline Citation

Numbered citations inside a sentence, with a preview on hover.

Can you summarize what changed in the billing service this week?
C

Three changes shipped: proration now rounds to the cent, failed renewals retry twice before emailing the customer, and invoices include the tax ID when one is on file.

Message

One conversation turn: user bubble or assistant document, with hover actions.

Model Selector

Pick the model: grouped by provider, searchable, with context and tags.

Plan · fix tax on invoices1/6
  1. Create a shared tax helper
  2. Use it in the invoice API
  3. Use it in the PDF renderer
  4. Add tests for both paths

Plan

A plan an agent asks to run, with approve, reject and auto-run countdown.

Prompt Input

The composer for prompting an agent: autosize, attachments, model picker, stop.

Queued3
  • 1Also update the changelog
  • 2Then open a draft pull request
  • 3Ping #billing when it's up

Queue

Messages queued while the agent is busy, reorderable.

Reasoning

A model's thinking, streamed live, then folded to "Thought for 6s".

Sources

"Used N sources" with stacked tiles, expanding into the list.

TypeError: Cannot read properties of undefined (reading 'taxId')

  1. taxsrc/billing/tax.ts:3
  2. totalsrc/billing/invoice.ts:18
  3. renderInvoicesrc/pdf/render.ts:57
  4. (anonymous)at async Promise.all (index 0)

Stack Trace

Readable errors: your frames highlighted, library frames folded.

Subagent

Work delegated to a sub-agent, nested with its live activity.

Suggestions

Follow-up prompt chips that scroll sideways on small screens.

  • Write the shared tax helper
  • Switch the API to the helper
  • Switch the PDF renderer
  • Backfill invoices from this month

Task

A to-do list the agent works through, with progress.

agent · shell
$ pnpm test billing

Terminal

Streaming command output in a dark console.

1 failing 3 1 120ms
    • totals include tax6ms
    • credit notes are negative9ms
      expected -42.5 to equal -42.50
        at invoice.test.ts:31
    • multi-currency (pending)

Test Results

Pass/fail summary with failing assertions inline.

Searching the docs…Generating a migration plan

Text Shimmer

A light sweeping through muted text: the "working" status.

Parameters

{
  "env": "production"
}

Error

Error: build failed: Type error in src/routes/index.tsx:42

Tool

A tool call: name, live status, timing, parameters and result.

Span
0s2s4s6s8s
support-agent
7.8s
claude.plan
1.5s
search_docs
1.2s
billing-subagent
3.4s
sql.query
1.1s
stripe.refund
0.6s
stripe.refund
1.2s
claude.reply
1.2s
agentmodeltool2,760 tok · $0.018

Trace Waterfall

An agent run on one timeline: agents, model calls and tools.

Web Preview

A small browser for what the agent built, with device widths.

Agentic UI, answered

What is agentic UI?
Agentic UI is the interface layer for AI agents that take actions, not just answer questions: showing reasoning, tool calls, plans that wait for approval, file changes, test runs and the sources behind an answer, so people can follow and steer the agent.
Is this an alternative to shadcn AI Elements?
Yes. It covers the same building blocks (prompt input, message, conversation, reasoning, chain of thought, tool, sources, inline citation, plan, confirmation, task, queue, terminal, file tree, stack trace, test results, artifact, web preview, branch, checkpoint, model selector, context) in the Cuelark style, with GSAP motion and extra pieces like a trace waterfall and file diff.
Does it work with the Vercel AI SDK?
Yes. The components are presentational: map useChat messages, message parts, tool invocation states and reasoning onto their props. They also work with LangChain, the OpenAI or Anthropic SDKs, or any stream.
How do I install an agent component?
Run npx shadcn@latest add https://ui.cuelark.com/r/<name>.json, for example prompt-input or reasoning. The source lands in your project, so you own and can change every line.
Are the agent components accessible?
Yes. Streaming regions are polite live regions, every control is keyboard operable (Enter to send, Esc to stop, ⌘Enter to approve a plan), and all motion respects reduced-motion settings.