Starting a new conversation
Navigate to the home page and type your first message in the input box at the bottom of the screen. Suggested actions are displayed when the input is empty to help you get started quickly.Open the app
Go to the root URL. The input area displays suggested actions if no conversation is active.
Your draft message is saved to
localStorage automatically. If you close the tab and return, the input is restored.Sending messages
Text messages
Type directly into the textarea. The input expands automatically as you type, up to 75% of the viewport height.File attachments
Click the paperclip button in the bottom-left corner of the input to open a file picker. Multiple files can be selected at once. Files are uploaded to/api/files/upload before the message is sent, and thumbnail previews appear above the input while they are uploading.
How streaming responses work
Responses stream word-by-word in real time using the Vercel AI SDK’suseChat hook with a 100 ms throttle (experimental_throttle: 100). Text appears progressively as the model generates it.
While a response is streaming, the send button is replaced by a stop button (square icon). Clicking it halts generation immediately and cleans up any incomplete tool invocations from the message list.
Message voting
Every assistant message has thumbs-up and thumbs-down actions that are visible on hover. Votes are stored against the message ID and fetched from/api/vote?chatId={id}.
- Thumbs up — marks the response as helpful.
- Thumbs down — marks the response as unhelpful.
Voting is disabled in read-only chats (public chats viewed by someone other than the owner).
Editing previous messages and branching
User messages can be edited to branch the conversation from that point forward.Public vs. private chat visibility
Each chat has a visibility setting that controls who can read it.Private
Only you can access this chat. This is the default for all new conversations.
Public
Anyone with the link can access this chat. The conversation is read-only for viewers who are not the owner.
Toggling visibility
The visibility selector is in the chat header, next to the model selector. Click the dropdown and choose Private or Public. The change takes effect immediately. You can also change visibility from the sidebar by hovering over a chat, clicking the more options menu (three dots), selecting Share, and then choosing Private or Public.Chat history sidebar
The sidebar on the left lists all your past conversations grouped by recency.| Group | Range |
|---|---|
| Today | Created today |
| Yesterday | Created yesterday |
| Last 7 days | Created within the past week |
| Last 30 days | Created within the past month |
| Older | Everything else |
The history sidebar requires you to be signed in. If you are not logged in, a prompt to sign in is displayed in place of the chat list.
Browsing past chats
Click any chat title in the sidebar to open that conversation. The active chat is highlighted.Deleting a chat
Hover over a chat in the sidebar
The more options icon (three horizontal dots) appears on the right side.
Select Delete
A confirmation dialog appears warning that the action is permanent and cannot be undone.
Reasoning model display
When you use the Reasoning model (DeepSeek R1), the model’s chain-of-thought is captured and displayed above the final answer.- While the model is thinking, a Reasoning label with a spinning loader is shown.
- After the response is complete, the label changes to Reasoned for a few seconds with a chevron toggle.
- Click the chevron to collapse or expand the reasoning block.
- The reasoning text itself is rendered as Markdown with a left border to visually distinguish it from the final answer.
The reasoning block is only shown for the Reasoning model. The Small model and Large model do not produce chain-of-thought output.