Manual Chat Chatting - HenriGrimm/Minnow GitHub Wiki

Working in chat

The basics of chat take one minute. The controls on this page are the ones that make a long agent session survivable: correcting a run without killing it, queueing your next instruction, undoing a turn that touched files, and going back to an answer you liked better.

The composer

The composer is a card at the bottom of the chat column: the message field on top, one row of controls underneath.

Control What it does
Mode The tinted pill on the left: General / Build / Plan / Debug โ€” see Modes
Worktree Click the branch icon to enable an isolated checkout on send; click its name to change branch, switch worktrees, or go back to Local
Settings (cog) Context documents, code map, brain notes, and Off/Ask/Full for every tool.
Context ring Window usage; click for capacity, context breakdown, request/session totals, prompt profile, and compaction
Model ยท reasoning Per-chat model and reasoning level. Open the menu to change either. Ctrl+M / Cmd+M opens it with search focused.
Microphone Dictation โ€” see Voice
Send / Stop Enter sends; Enter again stops while streaming

Enter sends, Shift+Enter adds a line. โ†‘ with the caret at the start of the composer walks back through your previous prompts, shell-style; โ†“ walks forward.

Drafts survive switching chats.

Selecting a model in the composer remembers it for new chats across all projects and restarts. Existing chats keep their own models. Opening an old chat, running background work, or a pool choosing a model does not change the remembered choice. Changing the model during a response stops that generation; the next turn uses the new selection.

Clicking the branch icon enables Worktree for this chat without creating a checkout. Send your message to create a named branch from the current commit and prepare project dependencies. A Setting up your worktree panel appears in chat; your message runs in that checkout when setup finishes. Uncommitted edits stay in the original checkout. The selection survives a reload.

If setup fails, the checkout is kept and your draft and attachments stay in the composer. The setup panel shows the error with Retry setup and Back to Local actions. Send again to retry setup and run your message, or choose Retry worktree setup from the worktree menu to prepare it before sending. Minnow waits for setup to succeed before running the chat in the worktree.

Click the worktree name to open its menu. Choose Switch branch for a different branch in that checkout, Change worktreeโ€ฆ for an existing checkout, or New worktree for a custom name and start branch. Back to Local preserves the worktree and its files; enabling it again reuses that chat's managed checkout. Use Source Control or issue delivery controls for cleanup.

Drag files onto the composer to attach them for the next message, up to 10 MB each. Pasting images also adds an attachment.

The model label includes the current reasoning level, such as GPT ยท Medium. Its menu offers only the levels the model supports, including Off where available. Changes apply to this chat; Default restores the model's saved or inherited setting. Auto model pools continue to select reasoning through their task evaluator.

Link a tab to this chat. Drag a Code editor tab or an in-app browser tab onto the transcript or composer. Minnow pins a link chip on that chat โ€” the file or URL, not a one-turn attachment. The chip stays after reload; click it to open the file or page. Dragging from the file tree still attaches for the next message only.

While the model is working

Compact view draws a running turn as a timeline under your prompt. A round of reads and searches is one step โ€” Explored 5 files, 1 search โ€” with the files it touched as chips; open it for the individual calls. Thinking time rides on the step it led to. While the run is live, a line above the composer shows Working, the elapsed time, and how many actions the turn has taken.

When the turn finishes it folds into one line โ€” Worked 6m 55s ยท 20 reads ยท 16 searches โ€” with the final answer below it. Expand the line to see the timeline again. Recorded file changes appear in an Edited files card with per-file counts, Review, and โ€” on the latest turn โ€” Commit and Create PR. Copy, remake, and the reply's speed sit under the latest answer. Failed and stopped replies remain visible, with a notice that carries the recovery actions.

Choose Settings โ†’ Appearance โ†’ Chat view โ†’ Full to keep every step visible in the transcript. Tool calls and thoughts stay collapsed until you expand them. Switch back to Compact for the quieter view. The preference applies immediately and is saved across restarts; it changes only the display, not the conversation sent to the model.

You do not have to sit still and wait.

Type your next message and press Enter. It queues, and runs when the current turn settles. The follow-up appears in the transcript as a muted Queued bubble (and in the compact strip above the composer) so it is not sent-and-forgotten. Edit, push it in as a steer, or delete it from either place. The bubble leaves as soon as that turn starts.

Steer instead, when the run is going wrong. A correction sent mid-turn is injected at the next tool-loop boundary rather than aborting the stream โ€” so the model gets "actually, use the existing helper" before it writes the next file, without losing the work it has already done. This is almost always better than stopping and re-prompting: stopping throws away the context the model had built up.

On a local llama.cpp or MLX model the status line beside the assistant row shows a load percent while weights come up, a prefill percent while the prompt is ingested, then a live token count while it generates (including while it is calling a tool).

Stop when the run is genuinely off the rails. The partial reply stays.

When a turn fails

If a reply errors mid-stream, the partial stays on screen. Continue retries with the full conversation still in context. Clear removes the failed assistant output and keeps your prompt. Neither control wipes earlier turns.

Very large replies can stop with a replay memory limit error. Minnow budgets about 32 MiB of retained stream data and chunk overhead per generation, and 128 MiB across generation requests and replay. The retained prefix ends with an explicit error; it is not treated as a completed reply. Ask for a smaller output or wait for other replies to finish before retrying.

A connection that accumulates more than 4 MiB of pending stream data or stalls for 30 seconds is disconnected so other replies can continue. Reconnecting replays the retained bytes in order with their completion or error status. A saved reply too large for the available replay budget reports an error instead of loading a partial replay.

Watching what agents do

  • Inference metrics โ€” tokens, tok/s and totals for the turn. In Code, the strip at the bottom of the chat column.
  • Activity โ€” the menubar dropdown shows what needs your input, what is running, and recent outcomes across the current workspace. Expand a running item to inspect its sub-agents, model, and context usage.
  • Sub-agent cards and inspector โ€” every spawned agent gets a card in the transcript. Open it for its Conversation: available thoughts, responses, grouped tool calls, and a Result tab. Conversations remain accessible after reopening the chat.

A background sub-agent that finishes while you are elsewhere pushes its result to the parent conversation, so the model sees it without a wall of text appearing in your transcript.

Undoing a turn

The undo control on the latest Edited files card in the transcript rewinds the last settled agent turn back to your message. Where Minnow captured a git snapshot around that turn, it restores the working tree too โ€” not just the conversation.

Details worth knowing:

  • The file-restoring undo appears only in a git repository and only when that turn actually changed files. No repository means no snapshot, so there is nothing to restore.
  • The message โ‹ฎ menu always offers Undo turn for a conversation-only rewind.
  • Undo does not auto-regenerate. You get your prompt back and decide what to do.
  • The undone reply stays redoable through the branch picker.
  • Orchestrate, board-linked and worktree-isolated chats do not support undo; the control is disabled with the reason.

Snapshots are made with dangling commits, so your index, HEAD and branch are never moved. If two chats share one repository, the last restore wins.

Files from the assistant

An assistant can present saved project files and generated deliverables as compact cards beneath its response. Each card shows the title, path, file type and size, with Open and Download actions. Cards stay visible when the work transcript is collapsed and remain after reopening the chat.

Open uses Code's editor or document preview. Download saves the file's original bytes. These are links to saved files, so both actions use the current file on disk rather than a copy frozen in the conversation. The source workspace stays attached to the card, including files produced in a worktree or sandbox. If a file has been moved or deleted, it must be restored or presented again at its new path.

Branches

Regenerating or forking a turn creates a branch โ€” a separate continuation from the same point. The branch picker appears on that message and lets you move between them; the branch you leave keeps its follow-up messages, so switching back and forth does not destroy either side.

This is how you try "do it with X" and "do it with Y" without two chats and manual copy-paste.

Managing conversations

  • New chat from the rail, or the tray menu.
  • Search from the rail โ€” full-text over your message history, with โ†‘ โ†“ to move and Enter to open.
  • Groups organise related chats; orchestrate boards appear as folders with their member chats nested.
  • Chats belong to a workspace folder, so the rail shows what is relevant to where you are.

There is no fixed limit on how many chats you can keep. Deleting a chat is immediate and confirmed in-app.

Chats with an active /loop show a rotating icon in the rail โ€” spinning while a loop is live, still when every loop on that chat is paused.

Notifications

The menubar Activity icon appears before Models and opens live work and notifications for the current workspace. While agents are running, a spinning wheel shows their count, including nested sub-agents. Paused agents and background title jobs are excluded from that count. When no agents are running, only the icon is shown. Inside the dropdown, running work counts each parent once and nests its sub-agents.

Needs you holds unanswered questions, tool approvals, failures, and review requests. Opening the dropdown or choosing Mark seen does not resolve them. Reply / review opens the owning chat. Failures can be inspected and dismissed into Recent; failed scheduled jobs also offer Retry run. Running shows current work, including timer waits and queued work. Background title tasks are collapsed. Recent retains completed, failed, and stopped outcomes for the session, including replies you watched finish.

Mute alerts silences sounds and desktop notifications while Activity keeps updating. Settings โ†’ General โ†’ Notifications controls delivery categories and sounds, including whether cues play while you are already watching the active chat. Stop allโ€ฆ cancels chats, their sub-agents, and title jobs in the current workspace after confirmation.

Desktop notifications appear when an agent asks a question or finishes its turn while Minnow is in the background. Use Test desktop notification in notification settings to check delivery without starting a chat. In a browser, the test requests notification permission if needed. If the test reports that it was sent but no banner appears, check your system's notification settings and Do not disturb. On Windows, development builds appear separately as Minnow Dev.

Asking you questions

The model can ask you something mid-run with a question card rather than guessing and being wrong. Answer it and the run continues. Skills like /ask-user use this deliberately.

Related