Radix-style React primitives for AI chat with adapters for AI SDK, LangGraph, Mastra, and custom backends.
A half-year of runs as a calendar of cells, dense where the work was.
Who you are about to talk to: its skills, its model, and the endpoint behind it.
A checklist the agent works through, with progress you can glance.
One pill that always answers: what is it doing, and for how long.
Next.js route handler that streams chat completions through the AI SDK.
Assistant page wired to the AI SDK chat route, with the thread component installed.
AI SDK route handlers with resumable stream context, so a run survives a reload.
Human in the loop: the agent asks before it runs anything with side effects.
A generated document as a tangible object, written live and versioned.
Floating chat bubble for support widgets and help desks.
Side panel chat for copilot experiences and inline assistance.
Attach files from the composer and view them inside messages.
Files as received rather than staged: an image to open, a document with its page count.
Work still going somewhere else, and the results waiting to be collected.
The thread steps aside and the document takes the room, still being written as you read.
Area, line, and bars, with points landing one at a time as the series streams in.
The whole family working together: a message, a pause, a streamed reply.
Points you can fall back to, with what each one would give back.
A unified diff with tinted additions and removals, sized for chat.
A snippet with a run button, and the output it produced attached below it.
Everything the app can do, one keystroke away and grouped by where it acts.
Two options weighed side by side, with the pick named and argued.
The unified input: attachments, commands, mentions, models, voice, and context in one surface.
Character triggered picker for @ mentions, / commands, and similar popovers.
The screen the agent is driving, with a cursor trail and what it is doing right now.
Which claims came from a source, which were inferred, and which are guesses.
The socket drops, the run keeps going on the server, and the stream is picked back up.
Where the window actually went: prompt, tools, files, conversation, and what's left.
Token usage against a model's context window as a ring, bar, or text, with a hover popover.
The props-driven context usage display: ring, bar, and text presets with the usage popover, no runtime required.
What the run spent, split by model, against the session total.
A small comparison table the model can answer with directly.
A drawn answer with zoom, reset, and a full-bleed view; you hand it the rendered graphic.
Render mention directives as inline chips in user messages.
The props-driven directive chip renderer: bring your own formatter, no runtime required.
A document the answer leans on, with the quoted passage and the page to jump to.
Come back to a thread and the sentence you never sent is still waiting.
Rewrite a turn in place, told up front how many replies the edit throws away.
Range normalization for the elements family: clamping a caller's counts, indexes, and shares to what the element can render.
Shared design language for the elements family: surface, ink, and motion class recipes plus the shimmer utility.
A server pausing mid-tool-call to ask you for the fields it still needs.
The first screen: a greeting, three ways in, and the composer front and center.
A quiet failure banner with a retry path, not a modal in your face.