hobhob

Parallel agents

Divide a task across agents and providers, keep their exchanges visible, and decide when work continues.

An implementation benefits from a second set of eyes. A larger project may need several workstreams at once. hob lets you put the right agents beside each other, give each a clear responsibility, and follow their work in one project—even when they use different backends.

In the guestbook, one agent writes the character counter and another reviews it without changing files. Their conversations, handoff, and provider choices stay visible together.

Claude Code implementing the guestbook counter beside a Codex reviewer, with Files open in the right Dock
Claude Code implementing the guestbook counter beside a Codex reviewer, with Files open in the right Dock
The implementer's summary and the Codex review are visible beside each other.

Launching agents

Choose New Agent from the command palette to add an agent to the workspace. The default Alt+A shortcut reuses an empty agent pane if one is available; Alt+Shift+A always creates a fresh one. Name the pane after its responsibility, such as “Review the counter.”

You can also ask the agent already working on the task to open a reviewer:

Ask your agent

Open a second agent to review the character-counter change. Give it the files and acceptance criteria, ask for a read-only review, and have it send its findings back to you. Wait for that review before changing more code.

Each pane has its own conversation, backend, model selection, and permission settings. A new agent needs a task and relevant context; it does not automatically inherit every detail from the agent beside it.

Agent input

Use the chips below the composer to choose this pane's backend, profile, model, and reasoning effort. Choose them for the task: a reviewer may need different settings from the agent implementing the change.

ControlUse it to…
Auto approvalLet hob answer this pane's permission requests automatically.
Fast modeRequest faster output on supported models. It applies on your next message and restarts the agent process.
PlanAsk for an approach to review before implementation.

Auto approval and Fast mode have a chevron for On, Off, and saved defaults. The main button changes this pane; the menu's markers set defaults for new agents. Shift+Tab cycles permission and plan choices.

Agent composer with the Auto approval menu open, Off checked for this pane, a default star beside each choice, and the Fast mode and Plan controls
Agent composer with the Auto approval menu open, Off checked for this pane, a default star beside each choice, and the Fast mode and Plan controls
The check shows this pane's choice. A star sets the default for new agents.

Claude Code, Codex, and OpenCode can run side by side. That gives you options when a provider is unavailable or you want another model's perspective. It is not automatic failover: choose another agent and give it the context it needs. An existing conversation does not move between backends. Supported account switching and compatible profiles on the same backend are separate choices; see Accounts and profiles.

Review the pane's permission settings before sending its task. The effect of an approval mode depends on the backend and its configuration; a toggle is not a guarantee that every command will prompt. For questions, permissions, and plans, see Working with your agent.

Divide the work before running it

Give agents complementary roles and a clear handoff point:

AgentResponsibilityBoundary
Add a character counterImplement the small change and explain what to reviewWait after handing it to the reviewer
Review the counterRead the diff against the issue's acceptance criteriaReport findings without editing files

These panes share the same checkout. Tiling two agents does not isolate their file changes. For simultaneous implementation on separate branches, use worktree workspaces. For work in one checkout, agree on file ownership and when one agent must wait.

Fork a conversation to try another direction

Keep the context of a useful conversation while trying another approach. For the guestbook, keep the counter that shows characters used, then fork the conversation to explore a label that shows characters remaining.

Hover the metadata row beneath a completed assistant turn and select Fork from here. The button appears when the turn completed successfully and has a saved backend checkpoint. You can choose an earlier eligible turn, too. Read-only conversations cannot fork. This action lives on the turn; it has no keyboard shortcut, slash command, or CLI command.

Fork from here control beneath the completed guestbook counter response
Fork from here control beneath the completed guestbook counter response
Fork from here appears beside the actions under a completed response.

hob opens Fork: Add a character counter to the right, with the conversation through that turn and an empty composer. A source in the Dock creates its fork in the Dock. The backend, account, and working directory come from the chosen turn. Model, effort, and permission mode copy the source pane's current settings. The backend stays fixed.

Send your first message to start the new direction:

Ask your agent

Show characters remaining instead. Wait for my review before changing the shared files.

Until that first send, the pane is a preview: no new backend session is created, and queueing, steering, scheduling, and another fork are unavailable. On send, hob uses the backend's native fork support in Claude Code, Codex, or OpenCode. It continues the chosen context without replaying it as a fresh prompt.

After the backend accepts the message, Forked on the source and Forked from on the new conversation let you navigate between them. The original conversation keeps its own direction. Inherited turns do not add to Stats; a started fork can itself be forked.

Original counter conversation and its fork with reciprocal lineage buttons and the new request for characters remaining
Original counter conversation and its fork with reciprocal lineage buttons and the new request for characters remaining
Forked and Forked from keep both directions of the conversation within reach.

A failed first send reports an error and can restore your draft. A native child may already exist when delivery fails. If hob reports an unknown creation or delivery outcome, check that error before trying again; do not assume that no session was created.

Hand off starts a fresh agent; a fork continues the chosen conversation.

A fork stays in the source environment and worktree. Both agents can touch the same files, so keep the file-ownership boundary from the preceding section. Forking requires an active license. It also works in hob mobile while you hold control; hob mobile does not have a Dock placement.

Let agents talk to each other

An agent can send a scoped request to another pane and receive its response through hob. The recipient sees an attributed message, and the source pane reference keeps the origin within reach. You can inspect the exchange in the same interface where the work happens.

The reviewer transcript showing an attributed message from Add a character counter and a read-only review reply
The reviewer transcript showing an attributed message from Add a character counter and a read-only review reply
The request carries its source pane. Read the handoff and review where they happened.

By default, messages reach a running agent at a turn boundary. Use hob message --now only when an agent needs to steer ongoing work; see the CLI delivery boundary. The recipient is responsible for sending its answer back; the sender should finish its turn rather than polling the other conversation for a reply. A useful request states the scope, constraints, and what should come back—not just “take a look.”

Hand a pane to an agent as context

Type @- in the composer and select another pane. hob inserts a reference with a readable title and backend label, so you can ask about a particular conversation without copying its transcript. The picker starts with agent panes; change its scope to include other pane types. Panes in the same workspace appear first, and the current pane is excluded.

The reviewer composer with the pane-reference picker listing Add a character counter, and the Codex backend and model chips below
The reviewer composer with the pane-reference picker listing Add a character counter, and the Codex backend and model chips below
Give this Codex conversation the implementer's pane as context. Each conversation keeps its own backend.

Selecting a reference adds it to the draft; it does not send the message. Describe what you want the agent to recover from that context, then send it. You can also follow pane references in transcripts to return to their source.

Follow work that needs you

Open Home to see the workspaces and panes that need attention. A question, permission request, or plan may need your judgment before an agent continues. The workspace activity indicators help you find those moments without checking every conversation in turn.

Use Stats to review how conversations start and which ones reach a commit. Its Hours section separates combined agent effort from elapsed busy time, so parallel work is easier to understand.

Working with a running agent

Keep the next task ready, correct the current direction, or stop to review:

You want to…Use…What happens
Add work after this turnEnter in the composerThe message joins the Outbox and waits for the running turn to finish and any earlier queue items or gates.
Correct the running taskCmd/Ctrl+Enter in the composerhob sends the message as steering, without waiting for the normal queue.
Cancel the running turnStop, Esc Esc, or Cmd/Ctrl+C with no text selectedThe turn stops; changes and commands already performed are not undone.

Claude Code, Codex, and OpenCode accept steering. The backend decides when it can incorporate the message, so delivery during a turn does not mean the model acts on it instantly. Use steering for a correction that matters to the work already underway; queue an independent follow-up.

To make Enter steer instead, set Settings → Agents → Enter while an agent works to Send now. Cmd/Ctrl+Enter then queues the message. This applies only while an agent works; an idle agent always sends on Enter.

For example, while the agent adds the guestbook counter, compose this and press Enter (with the default setting):

Queue for after this turn

Mention the counter in README.md.

If the agent starts introducing an unnecessary color, compose this and press Cmd/Ctrl+Enter:

Steer the running task

Keep the existing light and dark palettes. Use the muted text color for the counter; do not add a new accent color.

After stopping a turn, inspect what changed before continuing. Stopping is separate from answering a question or approving an action.

Manage the Outbox

The Outbox shows messages in delivery order, with scheduled gates between them. Each message has Send now, which delivers it as steering, Remove, and More actions → Edit message. Drag a message by its handle, or use Ctrl+↑ / Ctrl+↓ to move a focused item across a gate; its position determines when it can run.

Outbox with two guestbook follow-ups separated by a Hold until gate; each row has Send now, Remove, and More actions, and the first row shows its drag handle
Outbox with two guestbook follow-ups separated by a Hold until gate; each row has Send now, Remove, and More actions, and the first row shows its drag handle
Reorder, edit, or remove queued work. Send now steers the running agent; the gate holds the later message.

ready in… appears while a queue-order change settles. Session limits can add a Session limit gate with Try now. Its automatic continuation and gate have restricted controls.

If steering cannot be delivered

A failed composer steering message returns to your draft with “Couldn’t send yet. Try again in a moment.” The running turn continues. Review the draft before retrying; hob preserves any newer text you have already started typing.

A failed Send now keeps the message in the Outbox. If the backend rejects it after accepting delivery, hob restores it at the head of the queue and reports the failure in the conversation. Check the queue before sending it again.

In hob mobile, you can queue messages, use a queued row's Send now, and remove messages. The send button and Enter follow the Enter while an agent works setting; Cmd/Ctrl+Enter does the other action when using a keyboard. Creating schedules, editing queued text, and reordering items are desktop/browser IDE controls; hob mobile displays their gates.

Scheduling a message

Write the prompt, then right-click the composer action button (Send, or Stop while working), or press Alt+Enter, to open Schedule send. Choose a day and local time, then select Schedule. The day picker covers today and the next six days.

A scheduled prompt appears behind a Hold until gate. Several messages and gates can coexist; the position of each message relative to a gate determines when it becomes eligible. Select the gate's time to change it. The composer stays available while messages wait.

Reaching the scheduled time makes a message eligible; an active turn or earlier work can still delay delivery. Scheduling runs on the hob Host, including a headless Host. Switching projects or workspaces does not cancel the schedule.

Return to a paused schedule

The Host must be running to deliver messages. An overdue gate discovered when restoring a queue is not released automatically. The banner says Scheduled prompt was due… · paused; choose Continue when ready. If the head gate is still in the future, choose Resume schedule instead.

A restored guestbook queue whose banner says the scheduled prompt was due and is paused, with a Continue button
A restored guestbook queue whose banner says the scheduled prompt was due and is paused, with a Continue button
A missed schedule waits for you to continue; restoring the queue does not release an overdue gate.

For repeatable work with several steps, inputs, or a recurring schedule, use Automations.

For agents

Create a delegate with its assignment in one operation:

hob pane open agent --task "Review the character-counter diff without editing files. Check the acceptance criteria and report findings back to the requesting pane."

Use hob pane list to identify an existing collaborator, then hob message --pane <pane-id> --text "<scoped request>" to deliver the request. Include your source pane ID when it is needed for the reply. hob pane input only changes a draft; it does not deliver it. Send your final response back to the requesting pane, then end the turn. See Working with your agent for opening evidence and drawing the person's attention to the result.

Next

On this page