Skip to main content

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.
1

Open the app

Go to the root URL. The input area displays suggested actions if no conversation is active.
2

Type your message

Click the text area labeled Send a message… and type your prompt.
3

Send the message

Press Enter to send, or click the send button (arrow icon) in the bottom-right corner of the input. To insert a newline without sending, press Shift + Enter.
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.
The send button is disabled while files are still uploading. Wait for all previews to finish loading before submitting.

How streaming responses work

Responses stream word-by-word in real time using the Vercel AI SDK’s useChat 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.
Vote state is reflected immediately in the UI via optimistic updates.
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.
1

Hover over your message

A pencil (edit) icon appears to the left of the message bubble.
2

Click the edit icon

The message switches from view mode to an inline editor.
3

Edit and resubmit

Modify the text and confirm. The AI regenerates the response from that point, effectively creating a new branch. All messages that followed the edited message are replaced.
Use message editing to refine a prompt without starting a new conversation. The previous exchange is discarded from that point so the new response has a clean context.

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.
Setting a chat to Public makes the full conversation history — including all messages — readable by anyone who has the URL. Switch back to Private to restrict access again.

Chat history sidebar

The sidebar on the left lists all your past conversations grouped by recency.
GroupRange
TodayCreated today
YesterdayCreated yesterday
Last 7 daysCreated within the past week
Last 30 daysCreated within the past month
OlderEverything 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

1

Hover over a chat in the sidebar

The more options icon (three horizontal dots) appears on the right side.
2

Click the more options icon

A dropdown menu opens.
3

Select Delete

A confirmation dialog appears warning that the action is permanent and cannot be undone.
4

Confirm deletion

Click Continue to permanently delete the chat and remove it from the server.
Deleting a chat is permanent. The conversation cannot be recovered after deletion.

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.