Conversations

Managing chat sessions, message history, export, and conversation features

Conversations are the primary way you interact with Foxl. Each conversation is a separate chat session with its own context and history.

Creating Conversations

Click New chat in the sidebar, press Cmd+N (Ctrl+N on Windows and Linux), or use File > New to start a fresh conversation. A new chat starts empty: whatever was sitting in the message box - text, attached images and files, pasted-text cards - is cleared with it, along with the find bar and any open file tabs from the previous conversation. Each conversation gets:

  • A unique session ID
  • Its own message history
  • Separate agent context (tools used, files read, etc.)

Conversation History

All conversations are saved automatically. The sidebar lists them by title (auto-generated from the first message), grouped by when you last used each one - see Grouped by date.

Desktop App

Conversations are stored in the local SQLite database at ~/.foxl/data/pilot.sqlite (%USERPROFILE%\.foxl\data\pilot.sqlite on Windows).

Web App

In the web app (app.foxl.ai) and on the phone, the conversation list and every transcript come from your desktop through the desktop relay. The device keeps its own encrypted copy of what it has already loaded, so when the desktop is asleep you can still read a chat: it is marked Saved on this device, and you can reconnect the desktop to reply or continue here as a new chat.

Grouped by date

The sidebar list is grouped by when you last used each conversation. Scroll and a date marker appears between the rows: Today, Yesterday, then the individual day for anything inside the last week ("Fri, Jul 3"), then by calendar month, and by month and year beyond that. The markers fade out when you stop scrolling, and stay while your pointer rests on the list.

The groups never overlap - a conversation belongs to exactly one of them.

Pinned chats

Any conversation's context menu has Pin. Pinned chats sit in their own group at the top of the sidebar instead of sliding down the list every time you answer something else. Up to eight, remembered per device.

Two conversations at once

Open beside in a chat's context menu docks that conversation as a resizable pane on the right, so you can read one thread while writing in another rather than bouncing through the sidebar and losing both scroll positions.

  • The side pane is read-only for now. Open here swaps it into the main pane when you want to answer in it.
  • Desktop widths only, and the width is remembered.

Searching conversations

Search matches conversation titles and message contents, so you can find a chat by something said inside it rather than only by its name. The agent can search them too, with its conversation_search tool - so "what did we decide about the schema last week?" works in chat, not just in the search field.

Search is a ranked full-text index: the best match comes first and the excerpt shown is the part that matched, so a conversation genuinely about your subject beats one that mentions it in passing (v0.6.21). On macOS and Linux the app's bundled runtime ships a SQLite build with that index; on Windows, which ships Node, the same search falls back to a plain text scan - correct, just slower on a large history.

Desktop

The search field sits in the centre of the window titlebar. Click it (or press Cmd+Shift+F, Ctrl+Shift+F on Windows and Linux) and results open beneath it as you type. Use the arrow keys and Enter to open one; opening a result jumps to the matching message and highlights it.

  • An empty field lists the conversations you opened from search most recently. That list is kept on the device, not synced.
  • The filter icon narrows results to title matches or message matches.

The titlebar can show live agent status instead of the search field - see Settings > General. Search remains reachable from the header's search icon either way.

Web and mobile

There is no titlebar on app.foxl.ai or on the phone, so search opens as a centred palette from the search icon in the header, or with the same keyboard shortcut.

Message Features

Streaming Responses

Foxl streams responses token-by-token in real-time. You can see the response forming as the AI thinks.

Extended Thinking

When using Claude Opus 5, Fable 5.1, Fable 5, Opus 4.8, Opus 4.7, Opus 4.6, Sonnet 5, or Sonnet 4.6 - and the GPT-5.x, GPT-6 Astra and Grok models on their own reasoning levels - you can see the model's reasoning process in a collapsible "Thinking" section above the response.

Opus 5 is the default where Foxl picks for you, and it has adaptive thinking on by default - you get a Thinking section without opting in. Effort is selectable across five levels (low, medium, high, xhigh, max) and defaults to high. See Adaptive thinking.

Tool Use Display

When the agent uses tools (browser, code execution, file read, etc.), each tool call is shown inline with:

  • Tool name and action
  • Input parameters
  • Execution result
  • Duration

File paths in a tool's arguments are clickable. A path in an expanded tool row - what file_write just changed, what file_read looked at - opens the workspace viewer at that file, and at the cited line when the tool named one. Selecting text across a tool row no longer collapses it, so you can copy a path out by hand too.

In the desktop app a file path in the reply text is clickable too, including one that starts with ~: Cmd-click (Ctrl-click on Windows and Linux) opens the file in whatever application handles that kind of file, and a folder opens in your file manager.

The receipt on every reply

Hover an assistant message and its timestamp appears. Open it and you get:

  • the model that answered
  • the tokens it read and wrote
  • what the prompt cache saved
  • how full the context window is
  • the estimated cost of that turn
  • Delegated - the tokens the subagents this chat spawned used, and how many of them there were. They count toward the chat's usage but not toward its context bar, since a subagent's prompt is not what sits in your window

It reports the whole turn rather than the last model call, so a reply that ran six tools tells you what the reply cost.

Message Editing

Click Edit on any of your messages to change it. Foxl removes that message and everything after it from the conversation, then sends the edited text - there is no second branch to come back to, so copy anything you want to keep from the later replies first.

Regenerate

Click the regenerate button on any assistant message to get a different response to the same input.

Deleting a chat is undoable for 7 days

Deleting a conversation does not destroy it immediately. It moves to Settings > Archived chats, where you can read it, Restore it, or delete it for good - and everything there is removed automatically after 7 days. There is also an Empty trash button when you want it gone now.

Desktop app only, since it is your local database that holds the chats.

Export

Export conversations in multiple formats:

  • JSON: Full conversation data including tool calls and metadata
  • Markdown: Clean text format suitable for sharing or archiving

Right-click a conversation in the sidebar (long-press on a phone) and pick Export as JSON or Markdown.

Conversation with Desktop Relay (Mobile/Web connection)

When connected via Desktop Relay, conversations in the web app are routed through your desktop agent:

  • The desktop agent processes tool calls locally
  • Conversation history is stored on the desktop (not in the browser)
  • Traffic runs over TLS, and the relay in the middle can read the message you send, the chat deltas and the tool results it forwards - it keeps none of them. It is a trusted-service hop, not an opaque pipe; see Transport security for the exact message types and why.

When your desktop is unreachable there is no fallback model: the web app tells you that chat runs on your desktop and to open Foxl on your computer. You can still read the chats saved on the device, and start a new chat from a saved one once the desktop is back.

On this page