> ## Documentation Index
> Fetch the complete documentation index at: https://docs.circuit.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Chat widget features

> What the Circuit chat widget renders and how it handles streaming, citations, images, and errors.

This page describes what visitors see and can do in the embedded chat.

## 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](/it/chat-widget/configuration).

## Conversation continuity

The SPA stores the session token in `localStorage` 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 using `window.CircuitChat.open()` and `window.CircuitChat.close()`. See the [JS API reference](/it/chat-widget/api-reference) for details.
