All docs

Threads and providers

A thread is one provider session against one project. It keeps its own permission mode, an optional model override, and its conversation.

A thread is one provider session against one project. It keeps its own permission mode, an optional model override, and its conversation. After the first turn, the provider session id is locked in and follow-up turns resume where the previous one stopped.

  • Permission mode is sticky per thread: Ask first, Accept edits, Plan mode, Auto review, or Full access. Auto review lets the CLI's own reviewer approve routine actions (Claude and Codex) and still sends you anything it will not approve.
  • Model picker lists the provider's known models; providers without a list accept free-form model ids.
  • Reasoning effort can be set per thread where the provider supports it. On models with a fast tier, Speed sets Fast and the model button reads "· Fast".
  • Auto in the model picker routes the first turn by task tier: fast, balanced or strong, picked from the prompt. Map each tier to an agent profile in Edit Project, Model routing. Routing never changes the permission mode.
  • Agent picks a custom CLI agent for the thread on Claude and OpenCode (passed as --agent), from the project's and your own agent files.
  • Fork and hand off copies a thread, optionally onto another provider, and starts it on a new prompt. Fork from here on an assistant message copies the conversation only up to that message; on Claude the native session is forked at that point.
  • Best of N sends one prompt to several providers at once so you can compare the results. Tick Plan only to have each one draft a plan without building. On the plan card you like, pick a provider next to Implement in a new thread to build it there.
  • Agent profiles save a provider + model + effort + permission combination under a name, so a thread can be set up in one click instead of four. A profile can also carry a governance policy.
  • Open in new window in a sidebar thread's menu, ⌘⇧O, or dragging the card out of the window detaches the thread into a window of its own, while the main window stays the fleet overview. A thread that already has a window gets that window focused, and notifications for it open there.
  • Edit and resubmit rewinds to any past message of yours, lets you change it, and runs again from that point.
  • Scratch notes are a free-text field per thread, edited from the header and previewed in the sidebar, for the context that is not worth a memory entry.
  • Rename a thread from its header or the sidebar menu when the auto-generated title stops describing the work.
  • Snooze hides a thread until a preset (an hour, this evening, tomorrow, next week) without stopping the agent. A thread that blocks on you, or fails after you hid it, wakes early and shows a Woke pill. Settle on merge archives the thread when its PR lands.
  • Drop images and folders anywhere on the transcript, not only on the composer strip.
  • Pin a message in the transcript to jump back to it. Pins take an optional label. The agent never reads them.
  • Files on a question. When an agent asks you something, you can attach supporting files to the answer, not only type it.

The sidebar is a flat list, not per-project groups. Each card carries its project slug and, when the repo has one, its favicon or app icon; a scope filter at the top of the list limits every section to one repo, and status, provider, and tag filters plus group-by sit next to it. Each card uses a small provider mark instead of the harness name. Pinned threads sit in their own block at the top (oldest pin first) and never auto-settle. Below that, threads that need attention, then a Working shelf for quiet runs (a crew stays there while a background worker is still going), a Snoozed shelf (wake-soonest first) and a Settled shelf (newest wrap-up first, archived threads at the tail). Forks and subagents nest under the thread that started them; idle stopped fork workers drop off the list. Delegating, Orchestrating and Working show on the card. Right-click a card, or its overflow button, for the thread-actions menu: snooze (a nested submenu of presets), pin, fork or hand off, rename, mute, and settle. The menu is the native Electron menu when the app can show one, otherwise a keyboard-driven overlay (arrows, Home, End, Escape).

⌘N starts a new thread, ⌘⇧N starts one in a chosen project. ⌘K opens the command palette. Esc or Ctrl+C stops the live turn, including while the run is still preparing to launch. Quitting the app asks if agents are still working, then SIGKILLs detached CLIs so they do not linger. Click the project slug in the header to start another thread there. The composer's / palette lists orchestration commands, the CLI verbs, and the underlying CLI's own skills and custom commands. /btw (or ⌥Enter on a plain draft) asks a side question on the same thread without interrupting the live run. A card, not a new thread, not the follow-up queue. /usage opens live account quotas (five-hour and weekly windows where the provider reports them). A mic on the composer transcribes locally, and optional vim mode adds Insert and Normal motions. /goal <text> sets a standing goal for the thread, shown as a chip in the header; a bare /goal clears it. Codex uses its native goal and keeps taking turns until the goal is done. Other providers get the goal as a note on each prompt.

⌘F finds text in the open thread, including messages outside the rendered tail and collapsed tool groups, and in loaded diffs in the Git pane. Enter and ⇧Enter step through matches. Threads with eight or more prompts get a tick rail on the right edge, one mark per prompt; hover it for the labeled outline and click to put that prompt at the top. /jump auth opens the same outline filtered to prompts containing "auth". ⌘⇧T reopens the last closed pane. Copy link in the thread header menu or the sidebar menu copies a solenta://thread/<id> link that opens the thread; the project filter menu copies solenta://project/<id> links. A thread id in an assistant reply is a link when it belongs to this project.

Coming back to a thread that sat idle for half an hour or more shows a dismissible Recap card: what was asked, what changed, where it stands, and what is open. It is built locally after each turn, so no provider is billed. While the agent thinks, the working row shows the last line of its latest thought instead of just Thinking.

Agents can render an html block, or an MCP tool's UI, as a page inside the transcript. It runs in a sandboxed frame with no network access. When an agent calls secret_request, a masked Secret requested card asks for the value. Provide puts it only in the environment of that thread's runs for 24 hours, never in the transcript, and the value is redacted from any output that echoes it. It survives a restart in its own owner-only file in the app's data folder, encrypted only when OS credential encryption is turned on. When an MCP server asks a Claude run for input mid-turn, the question shows as an input card instead of failing.

A thread that fails keeps its failure reason and shows it on the sidebar card and in the Agents panel, so a red thread says what went wrong without being opened.

When a provider returns a usage-limit error with a reset clock, the thread parks as quota-wait instead of failing. A banner names the resume time; the same prompt is sent again when the quota resets, or immediately with Resume now. Exhausted balance with no clock is still a hard fail. Solenta's own daily and orchestration spend caps are a separate gate and do not park this way.

New thread on the search row follows your defaults: Isolate new threads in a git worktree and Delegate new threads to a worker in Settings, the second winning over the first. The caret beside it lists the other ways in:

  • New worktree thread: its own git worktree and branch, so the agent never touches your checkout.
  • New orchestrator thread: the thread hands its first prompt to a worker in a worktree and supervises instead of editing (see Orchestration).
  • New plain thread: straight in the project checkout, no worktree.
  • New teach thread: hints and review, not a finished solution (see Teach mode).
  • New ask thread: read-only repo Q&A; no worktree (see Ask mode).
  • From an issue: start from a GitHub or Linear issue.

On a draft, the strip under the composer chooses Local checkout, New worktree, or Previous worktree (stacked on the project's latest other worktree branch). That choice locks after the first message.

Queue or steer

While Claude or Codex is running, choose Queue to send your draft after this turn, or Steer to inject guidance into the live turn. ⌘Enter follows that choice; ⌘⇧Enter steers directly. A delivered steer appears on the current turn with a Steered label. If the live turn ends before delivery, Solenta can fall back to queueing; a failed delivery keeps your draft. Other providers use the follow-up queue.

A failed or stopped turn leaves queued instructions waiting for you. Failed queue edits keep their text, and Retry uses the actual failed message, including a machine-delivered worker notice. A side question through /btw remains a separate card.

Pins, quotes and attachments

Pin a message and optionally label it, then use the pin to jump back even when it is outside the currently rendered transcript. Pins are your bookmarks and are not added to the agent's prompt. Select text inside an assistant reply and choose the quote action or press ⌘⇧C (Cite) to attach that selection as a quote chip for your next send. A draft can hold several quote chips, each with an optional note.

Type @ in the composer to attach more than files. The list shows your prompt snippets first, then threads, PRs and skills, then files. A thread, PR or skill becomes a chip that survives a restart and is expanded into the prompt when you send. Files still insert @path. Save reusable text in Settings, Agents, Prompt snippets, then insert one with @name.

Attach a screen recording (.mp4, .m4v, .mov, .webm) and the agent gets up to eight sampled frames, each labelled with the clip name and time. Queued follow-ups show their files as chips, and cancelling a queued follow-up gives back both the text and the files.

A Claude thread that sat idle past the prompt cache window with a large context shows a strip above the composer: Compact first compacts the conversation before your next send re-reads all of it.

Question cards accept supporting files on each answer. Those files belong to that question, separate from the composer draft. In web mode the paperclip accepts ordinary files and offers a folder picker; dropping a directory preserves its tree. Images are available only for models that accept them. Screenshots captured from Browser stay with the thread that requested them if you switch before capture ends.