G
YouTube TikTok Games

Chat UI (native chat)

Optional chat surface over supported agent sessions — structured transcripts, skills, model pickers, and inline visuals.

Chat UI is a view for supported agent sessions. Choosing Chat for an agent opens eligible new sessions in Orca's structured native chat — a transcript + composer that keeps the session state in Orca, so the tab and its conversation can be restored after an app restart. Structured chat covers Claude, Codex, Grok, OpenCode (including 2.x), Pi, OMP, Antigravity, GitHub Copilot, and Kimi Code. Agents without a structured implementation, and WSL or SSH sessions, use terminal-backed Chat UI instead.

Choose Chat or CLI

Open Settings → Chat UI or Settings → Agents to choose Chat or CLI for each supported agent. During onboarding you can choose Chat UI or Terminal, select an agent, and install skills for that setup. New installs default to Terminal unless you choose Chat; existing users keep their launch preferences, and existing conversations keep their surface. The per-agent choice applies to starts from the desktop, including CLI, orchestration, and launches relayed from your phone. You can also set a default for agents without an individual choice.

Use the tab's right-click menu or Agent Session History to move a supported conversation between chat and a terminal.

Structured chat

When Chat is selected, an eligible new local Claude, Codex, Grok, OpenCode, Pi, OMP, Antigravity, GitHub Copilot, or Kimi Code session opens as a structured chat tab that keeps its state in Orca, so the tab and its conversation can be restored after an app restart.

Structured chat is available for eligible sessions on local macOS, Linux, and native Windows, and for workspaces on a paired Orca Server that owns them. WSL and SSH sessions continue to use terminal-backed Chat UI, and agents without a structured implementation stay on the terminal. Existing terminal sessions remain terminal sessions.

Copilot Chat requires Copilot CLI 1.0.88 or later and sign-in; models appear after startup, and plans without a model choice use Auto. Importing Copilot Session History into Chat is not supported. Kimi Chat requires Kimi Code 2.5.0 or later and sign-in.

The Use your shell environment setting controls the variables passed to new or resumed structured chats. It is on by default, so they receive exports from your login shell. Turn it off to allow only selected variable names in addition to basic shell variables such as PATH, locale, and SSH_AUTH_SOCK. Terminal-backed chat continues to use its terminal shell.

Structured chats launch the agent with the Command and Arguments saved for that agent under Settings → Agents. Set the chat font, text size, code size, width, and contrast for structured chats under Settings → Chat UI, or turn on Match terminal interface to follow your terminal's font and colors — including later theme changes. Inline visuals in that pane lets an agent draw charts, diagrams, and mockups inside a reply, on desktop and phone; you can open a visual in its own tab when you want more room, and Mermaid diagrams follow the chat's theme in dark mode. Under Settings → Agents, choose Manual, Auto, or Yolo for new Claude and Codex terminal and structured-chat sessions. Auto lets supported agents approve routine actions themselves; use Other agents to choose Manual or Yolo for agents without Auto support. An existing chat keeps its own mode when you change the default or switch models.

In a Codex chat running in Ask mode, Orca keeps workspace access read-only until Codex requests an edit. Approve that request to let the edit proceed, or start the chat in Approve for me or Full access when that is appropriate for the work. A permission choice affects the next turn; work already running keeps the permission it started with.

Antigravity chat uses its own chat server. If the server is not installed on the host that will run the chat, choose Install from its Providers row or from the chat's install card, then sign in with that server's Google flow. The runtime is downloaded only after you choose Install. From its installed Providers row, choose Remove to remove the downloaded runtime; this stops running Antigravity chats on that host, while keeping their history.

Working chats resume automatically after an Orca restart on new installs. Existing users keep their saved choice; profiles that never chose remain off. Change this behavior under Settings → Chat UI → Behavior. If automatic resume is off, Orca offers to resume an interrupted structured chat when you reconnect. You can close that dialog and open it later from the chats to resume item in the status bar. The item disappears when there are no longer chats available to resume. A chat tab you close stays closed instead of reappearing on the right.

Fork a response and use Plan mode

In a supported structured chat, hover the last reply in a finished turn and choose Fork from this response. Orca opens a new chat next to the original, with the conversation through that turn and the same workspace, agent, model, and permission mode. Claude and Codex can fork any finished response; OpenCode and OMP can fork the latest response when the installed version supports it. On mobile, the fork action appears beside Copy. The original chat stays unchanged.

Use /fork to fork from the latest response. Use /btw to ask a side question in a fork beside the original chat while it keeps running. Chats that open or push to a pull request can show its CI result in the conversation.

In a Claude or Codex structured chat, choose /plan from the slash menu to enter Plan mode. The choice applies to the next fresh turn and stays with the chat when you reopen it. Use the Plan pill's exit action to return to Build; Codex also offers /default. Plan mode and permissions are separate, so choose the permission level appropriate for the work. See Settings → Chat UI for chat preferences.

Composer

  • Type a message and send (or stop a working turn). Attach files/images when the host supports it. You can drag files from the file tree or your desktop onto the composer—or anywhere in the chat pane—to add them as paths the agent can read. In updated local Codex chat, paste images from the app menu or clipboard; pending images appear as removable thumbnails before you send, and you can open a thumbnail for a larger preview. Files you attach show as filename pills in the composer. Unsent draft text and attachments stay with the pane across disconnect/reconnect when the host can restore them. A settled transcript also stays on screen while the same session reconnects, instead of blanking until the fresh load finishes (desktop and mobile share that retention).
  • Select text in a file editor or terminal and use Add to chat from the right-click menu, or select text in a Markdown preview and use its floating Add to chat button. Choose an agent in the workspace or New agent; Orca inserts the quoted selection with its source into the target input without sending it. In terminals with right-click paste enabled, use Ctrl+right-click to open the menu.
  • Type @ in the draft to pick workspace files and insert them as paths the agent can read. The same suggestion popover appears on desktop and in mobile Chat UI.
  • Press Cmd+F on macOS or Ctrl+F on Windows / Linux to find text in the chat. Select part of an agent reply and choose Add to chat to quote it into the composer, and press Up/Down in an empty draft to recall every prompt you sent.
  • By default, Enter queues a message you send while the agent is working as a card above the composer. It sends when the turn ends, unless you Steer it into the running turn, edit it, or delete it — you can edit a queued message in place even while the agent is asking you a question. Drag cards to reorder them. Edit a queued message with the full composer, including images, skills, and @files. The same cards appear above the mobile composer. Press Cmd+Enter / Ctrl+Enter to send directly into the running turn; with an empty composer, the shortcut steers the first queued message. You can also turn off Queue follow-ups in Settings → Chat UI → Behavior to reverse the default. On mobile, hold Send to choose Queue or Steer; a tap follows the host setting. Older clients or hosts without queue support send immediately. If a turn fails, queued follow-ups stay paused instead of sending into the same failure. Use Resume to send the next queued message, send an individual queued message, or send a new message. A successful turn lets the remaining queue continue; another failure holds it again. Queued messages can resume after an app restart.
  • Stop ends the turn. For Claude it ends the process, including background commands and subagents; if Codex refuses or never answers a stop request, Orca ends it too. A message the chat told you was not sent stays unsent until you choose Retry, and a steered message is never re-sent. An outgoing message reads Sending… until the host confirms it, and Not sent with the reason when delivery fails; a reply cut off by an Orca crash or quit reads as a finished turn with a single explanation. A reply Orca had to cut off says why and offers Continue, which first asks the agent to check whether its last step finished.
  • Use Rewind to here on a sent message (the undo action on its hover strip) to take the conversation back to that point; the message returns to the composer so you can edit and resend. Rewind needs an idle agent with nothing waiting on you, and Codex rewinds the whole turn.
  • In updated structured Codex chat, active tool calls show live progress while they run. When a tool finishes, its activity settles into a compact row that you can expand to inspect command or result output.
  • Tool rows identify the action they performed, including MCP and web-search work, instead of exposing internal operation names. You can stop an individual running task from its row without stopping the other tasks in the session.
  • Long sent messages fold behind a toggle, and a run of thoughts and tool calls between replies collapses into one expandable row, so a busy transcript stays readable.
  • When an agent asks a question with numbered choices, press the number key to answer; Orca advances to the next question.
  • Use the pane actions to split Chat UI or move it to another pane while keeping the same session.
  • Successful Claude and Codex edits can appear as a changed-file summary with line counts in the turn. Select a file to load its patch inline. Agent file edits also appear as inline diff cards. Click file paths and links in the transcript to open them in Orca.
  • In structured chat, /clear starts a fresh conversation in the same pane and keeps the earlier conversation in history. /compact asks the agent to reduce the current conversation context so you can continue working; Claude, Codex, Grok, OpenCode, and OMP support it. A /compact you send while the agent is working waits in line instead of being refused.
  • If Orca or the agent restarts while a message is being sent, Orca checks the provider transcript and settles the send when it can prove that the message arrived. If it can prove the message did not arrive, Retry becomes available; when the transcript cannot distinguish the outcome, Orca leaves the send marked unconfirmed rather than risking a duplicate.
  • New chats are named from their first message when Orca can generate a name; without one they stay Claude Chat or Codex Chat. By default, the chat’s own agent and account generate the name; Settings → Chat UI → Chat naming → Advanced lets you choose another naming agent, and you can rename a structured chat tab from its tab actions. A name you set stays with the chat in Agent Session History, on your phone, and in other windows after you close the tab.
  • Type / at the start of a draft or after whitespace to open one grouped list of slash commands and discovered skills. The picker inserts the token that agent expects (/skill for Claude or $skill for Codex); $ no longer opens a separate picker. Choosing a command mid-sentence completes the token without sending the surrounding draft. The command and skill catalog is agent-aware and shared with mobile Chat UI. On desktop, Claude command rows use descriptions and argument hints reported by the installed CLI when available.
  • Agent-owned commands pass through to the agent instead of being rejected by the chat surface. That includes Claude /init, /review, and /help, plus Codex /goal <objective>; Orca still handles its own conversation commands such as /clear and /compact.
  • Use the model and options pills (thought level, Fast mode, and other agent-specific session options) when the agent exposes them. A Search models… field filters the picker when a provider exposes many models. Fast mode is a provider- and model-aware toggle; Orca shows it only when the active agent reports support and preserves the provider's supported routing. Claude model choices come from the installed Claude CLI on that host (not a hardcoded list), so new models show up after you update the CLI. Codex supports direct model selection from the pill (sends /model <id>), with bare /model still opening the agent picker, and offers Ultrafast as a speed choice. Grok exposes model (-m at launch, /model mid-session) and reasoning effort (--reasoning-effort at launch, /effort mid-session); the model list is probed from the signed-in Grok CLI (grok models) so retired ids drop out of the picker. Effort choices follow the selected model: Grok 4.6 includes Extra high, while Grok 4.5 stops at High. The model picker no longer waits for the agent to start: before the agent process starts, the composer shows the model and effort choices for that agent, and they apply on first start. After the session is live, pills that only affect a running turn stay disabled or labeled until the session is ready. Live values go to the CLI in that tab.
  • In updated structured Claude chat, the ring beside the model and effort controls shows how much of the context window the conversation uses. Open it to see token counts and the space used by messages, tools, memory files, and other context. It updates during a turn and stays available when you reopen the chat.
  • Codex, Pi, and OMP say when they are signed out before you send, without disabling Send, so you can fix the login instead of waiting on a failed turn.

For long structured conversations, a message rail appears along the transcript edge with one marker per user prompt. Hover or focus it to preview prompts, then select one to jump back to that turn; long histories are sampled so the rail stays compact.

In Settings → Chat UI → Behavior, choose whether sending moves the scroll position and when idle chat agents stop; select Never to keep them running. Stopping an idle agent does not delete its conversation. The pane header also offers chat width controls.

Scroll up to read older messages. Chat UI loads earlier history before you reach the top; if a page fails to load, use the retry button there. On desktop, hover a sent text message to copy it from the button beside its timestamp.

If the same conversation is open in a terminal that might still be writing to it, Chat UI does not send a competing message. Quit the agent in that terminal or close the terminal first, then send from the chat. For Claude and Codex, once Orca can establish that the terminal agent has exited, the terminal tab can remain open.

Fenced code blocks and shell commands in chat are syntax-highlighted, and each fenced block has a Copy code button. It copies only the snippet, not the surrounding message.

Follow agent work

Structured chat keeps delegated and background work visible while the main turn is active and afterward:

  • The background-task strip stays visible while work is live. Its summary counts agents, shells, monitors, workflows, and other tasks; expand it for grouped rows with names, state dots, and elapsed time. Each Claude or Codex child stays visible until its own work finishes, with its task and result in the expanded view; agent children also appear as indented rows beneath the session in the sidebar. A Codex chat can stop a background command or a subagent from its row without stopping the rest of the session, and a Grok chat can list and stop the commands it left running in the background. Grok shows its subagents as subagent rows too.
  • Select a subagent in the roster, activity strip, or sidebar to open its task, live steps, and final reply in a dedicated view. Use Back to main agent or Escape to return to the previous transcript position. The roster also shows its model, current work, and result.
  • When a Claude subagent is waiting on a permission prompt, its child row reads as waiting, and the parent session reads waiting rather than blocked — matching how the CLI reports a subagent asking for approval.
  • If a structured chat stops mid-turn to ask for approval or input, Orca raises an alert for it like any other waiting agent, so you don't have to watch the transcript.
  • Claude TodoWrite and Codex update_plan updates render as inline checklists. The latest plan also appears in a collapsible progress panel above the composer.
  • The active Codex goal appears above the composer with its current state. Use the goal controls there to pause, resume, clear, or expand the objective; enter /goal to send the next draft as a goal.
  • A running turn has one activity row at the end of the transcript. Thinking means the current turn is producing reasoning; provider activity such as running a command takes precedence. Completed or interrupted durations stay with the turn across reloads and app restarts. If Orca did not observe the turn end, it omits the duration instead of estimating one.
  • Codex goal changes appear as transcript rows when a goal is set, paused, blocked, completed, stopped, or cleared. Repeated accounting updates do not add duplicate rows.
  • When a turn settles, its header can summarize the unique files changed and their additions/deletions. Expand it to reveal the existing diff cards. Answered approval and question cards remain as receipts showing your selected answer.
  • A finished turn collapses to its answer. If the agent reports a failed turn, the turn ends instead of continuing to show as running.

When a structured chat finishes successfully in the background, Orca marks its tab and workspace unread. This does not send a desktop notification or sound. See Notifications & Inbox for the other attention controls.

When you select a skill from the slash-command picker, it stays visible as a pill in the draft. A skill name you type or paste manually remains ordinary text. See Orca skills for installation and updates.

Questions from the agent

When Claude shows an AskUserQuestion (or similar structured permission/question card), Chat UI should render the question card in the transcript so you can answer from the composer path instead of treating it as a collapsed tool call. Confirm with Submit on the card. That includes agents running on a paired Remote Orca Server / headless host — not only local panes.

Move a conversation between chat and terminal

Right-click a tab to switch a supported session live between Chat UI and TUI.

You can move a conversation between structured chat and a terminal from the tab's right-click menu or from an Agent Session History row: Resume in New Native Chat opens the earlier conversation as a structured chat, and Resume in New CLI forks it into a terminal. The original conversation is left as it was. Once a conversation is reserved for structured chat, use the chat rather than terminal Resume for that session.

Use Hand Off in the chat header or the tab’s right-click menu to hand the work to another agent. When a Claude or Codex chat reaches a usage limit with a known reset time, you can opt in to Continue chats automatically when a usage limit resets under Settings → Chat UI → Behavior. Orca sends a continuation after the reset; choose Don't continue on the limit notice to cancel it for that chat. The setting belongs to the host running the agent, and closed chats or sleeping workspaces wait until reopened or awakened. Resets more than 24 hours old require manual continuation.

Availability

Chat UI ships on desktop for supported local and remote (paired server) agent sessions. The mobile companion reuses chat-style transcript patterns for the same paired sessions.