Unichat

Build chat UIs that can become widgets.

Keep ordinary replies as messages, render interactive widgets when the answer needs one, or create a safe interface on the fly. Your app owns the components and actions.

Choose a task

Render replies as working UI

Send a message or click an action. The reply can stay text, render a known widget, or return the next interactive workflow state.

Chat UI preview

Send a normal reply through the chat route, or compose a safe UI document directly in this thread.
Reply mode

Built with Unichat example

Support case workflow

Run tool-like server actions against a local case and append validated widget state into the transcript.

Changelog

2026-08-23 - Living portfolio exploration graph

  • Added the opt-in v7 portfolio contract as a living editorial graph: a fresh thematic trailhead, nine semantic project lenses, and 81 authored nodes replace the visible six-page carousel.
  • Replaced source links, hashes, test counts, and receipt language as product proof with embedded scenarios, mechanisms, annotated artifacts, decisions, experiments, boundaries, connections, and open questions. V7 graph nodes and screens contain no URLs or link actions.
  • Replaced `Next view`, `Remix`, and `VIEW n/6` with contextual `Deeper`, `Follow thread`, and `New thread` branches. The graph has no terminal state, and browser Back remains local history.
  • Kept fresh trailheads, Deeper, Follow thread, replay, and Back provider-free. Only explicit Wander may ask OpenRouter to choose one allowlisted authored node ID; it cannot write claims, copy, UI, media, actions, links, layout, style, or code.
  • Bound v7 to its own rotatable HMAC cursor domain, exact replay, fixed-screen copy and byte budgets, graph completeness checks, additive v4-v6 compatibility, and a 10,000-turn no-dead-end provider-free traversal test.