Streaming responses
Responses stream in real time. Visitors see the answer appear progressively as the agent generates it, with a status indicator while the agent works. Auto-scroll keeps up with new content; if the visitor scrolls up to review earlier messages, auto-scroll pauses so they are not interrupted.Markdown rendering
Agent responses render as formatted Markdown:- Headings, bold, italic, and inline code
- Ordered and unordered lists
- Links, which open in new tabs
- Blockquotes and horizontal rules
- Fenced code blocks with syntax highlighting and a copy button
Tool usage visibility
When the agent uses tools, the widget shows status pills with the tool name, a progress indicator while it runs, and its completion status. Visitors can see what the agent is doing rather than waiting on a blank screen.Citations
When the agent cites source documents, the widget displays them as clickable references showing which document the information came from.Inline images
If a response includes images, such as diagrams from indexed documents, the widget renders them inline. Visitors can click an image to view it at full size.Welcome message
The chat window can open with a configurable greeting. Set the welcome message in the agent’s Chatbot settings. Leave it blank for no greeting. See configuration.Conversation continuity
The SPA stores the session token inlocalStorage under a per-key prefix, so a visitor who navigates away and returns picks up where they left off. Sessions last 24 hours. If localStorage is unavailable (sandboxed iframe, private browsing), the widget still works but the chat resets between page loads.
Window controls
Visitors can expand the chat window, collapse it back, and close it to the bubble. Each response has a copy button. An unread count badge appears on the bubble when the agent sends a message while the chat is closed.Mobile fullscreen mode
On small screens the widget switches to an edge-to-edge layout so the full viewport is available for the chat.Error handling
If the connection drops or an error occurs mid-stream, the widget shows a clear error message, lets the visitor retry, and preserves the prior chat history.Programmatic control
Your page can open or close the chat from its own buttons or links usingwindow.CircuitChat.open() and window.CircuitChat.close(). See the JS API reference for details.