Steering and multiplayer
Every task in Rivets is shared. Anyone with access to the repository can open it and watch the agent work in real time. To send it messages, they also need access to the worker the task runs on. This page covers how streaming, steering, and queued messages work when several people work on the same task. To talk to each other without interrupting the agent, use Team chat. To keep track of what happens across your tasks, use the Inbox.
Live streaming
Agent output streams to every open client as it happens: web, Mac, iPhone, and iPad. Each conversation is an ordered log, so a client that reconnects picks up exactly where it left off, and every viewer sees the same transcript in the same order.
The Changes tab follows the agent too. After each tool call that may have written files, the worker uploads a fresh snapshot and everyone’s view updates.
Presence and participants
The task header shows avatars for the people on the task: whoever created it, anyone who has sent it a message, and anyone viewing it now. Up to five avatars are shown, followed by a count of the rest.
Select the avatars to open Task participants. It labels each person Created this task, Contributor, or Viewing, and marks who is Here now, Directing the agent…, or Typing to the team….
Steering
Send a message while the agent is working to steer it. Steering needs access to the task’s worker, as well as its repository. See Access.
What happens next depends on While the agent is working under Settings › General:
| Option | Behavior |
|---|---|
| Steer the agent (default) | Your message goes to the agent straight away. |
| Queue | Your message waits until the current turn finishes. |
On Mac, iPhone, and iPad the options are Steer and Queue. The setting is per person and syncs across your devices. The composer placeholder changes to tell you which mode you are in.
With Claude Code, a steered message does not stop the agent. Claude reads it at its next step and carries on, so background tasks and sub-agents keep running. Until Claude reads it, your message sits at the end of the transcript marked Sending…, with an Interrupt button. If the current step is taking a long time, for example a test run, choose Interrupt to stop that step so Claude reads your message now. A steered message cannot be edited or deleted.
With Codex, which runs a process per turn, the current turn stops and the session resumes with your message. The transcript notes Paused to read your message.
Queued messages
In Queue mode, your messages wait above the composer until the agent takes them, so the agent’s output cannot bury them. Each one stays in your hands:
- Edit the message before the agent takes it.
- Delete it.
- Send now, which interrupts the turn in progress so the agent takes this message next.
Teammates see your waiting messages at the end of the transcript, marked Queued, and cannot change them. When the agent takes a message, it lands after the run it waited behind, not where it was sent.
If you edit or delete a message just as the agent picks it up, the change may arrive too late. When that happens, Rivets says so in the conversation rather than showing words the agent never received.
Attribution
Every message records who sent it. The transcript shows the author of each message, and commits and pushes made from a task carry the identity of the person who triggered them.
Cancel a run
To stop the agent, use the stop control in the composer or press ⌘.. Cancelling ends the current run, and shows Stopping… until it lands. Stop works even if the worker is offline. You can send another message to continue.
Connection problems
A strip above the composer tells you when something is wrong, for example Reconnecting…, You’re offline, or that the task’s worker is offline and work continues when it reconnects. While you’re disconnected, the run’s timer pauses. When you reconnect, the transcript catches up from where it stopped, and shows Catching up… if that takes more than 10 seconds. When your app runs on the same machine as the task’s worker, the transcript keeps streaming from the worker while Rivets catches up.
Drafts are kept. Text in the composer, attachments, and messages still being sent survive a reload, a lost connection, or switching organization.
A message that gets no reply is sent again automatically, after 4 seconds and again after 12, under the same request, so it can never arrive twice. Only if none of the attempts is answered within 30 seconds does it show Rivets didn’t reply, with Retry and Discard.
If a worker loses its connection to Rivets, the agent keeps working and the worker keeps its output on disk until the connection returns. If an outage is long enough to fill that buffer, the worker pauses the agent until it has caught up. A worker that stays unreachable for 7 days has its running jobs ended as Worker unreachable. A laptop asleep overnight keeps its runs, and if a worker comes back after its jobs were ended, they resume.
Reading the transcript
Opening a conversation
A conversation opens on its latest exchanges, including at least your three most recent prompts, so your own messages are never hidden behind Show older entries a few tool calls into a run. Older entries load above as you scroll up, and the transcript keeps your place while they do.
Tool activity
While the agent works, its tool calls fold into runs so the answer stays readable. Open a run to see each call. A shell command Claude runs is titled by Claude’s short description of what it is for, with the command itself beside it. A failed call folds like any other, and the run’s header counts failures, such as 2 failed, because a non-zero exit is often expected.
Run summary
When a run completes, a footer under the agent’s answer shows how long it took and when it ended, a Copy response button, and the files that run edited. Choose a file to open it. Line counts appear only when the edit said exactly what changed. The list covers that run’s edits, not the branch’s whole diff, which is in Changes.
Images from the agent
When an agent saves an image, such as a screenshot, and names its path in its answer, Rivets shows a preview under the answer. Choose a preview to open it in a lightbox. Click the image to zoom in, and click again to zoom further or to fit it back. Drag or scroll with two fingers to move around a zoomed image. Use the arrow keys to step through the answer’s images, and Escape to close.
A path that turns out not to be an image, or a file that does not exist, shows no preview. Rivets checks again shortly afterwards in case the agent creates it later.
Find in a transcript
Press ⌘F to search the current conversation. Matching rows are highlighted, and folded tool activity that matches opens while the search is active. Press Return and Shift-Return to move between matches.
Export a transcript
Copy a conversation as Markdown from its tab menu:
| Action | Contents |
|---|---|
Copy conversation (⌥⌘C) |
Messages and the agent’s replies. |
| Copy full transcript | The conversation plus reasoning and every tool call. |
Delegated work
When an agent spawns a sub-agent, Rivets nests the sub-agent’s work under the call that started it, with progress counted on the header. See Agents and models.
Access
Two kinds of access apply to a task:
| To | You need |
|---|---|
| See, stream, and replay it, read its changes and files, and talk in Team | Access to the repository |
| Send, edit, delete, interrupt for, or send now a message, use its terminals and scripts, or commit and push | Access to the repository and to the task’s worker |
A worker belongs to the member who registered it, and only they can use it until they share it. If a task runs on a worker that hasn’t been shared with you, the composer is replaced by a View only note. Choose it to see what you can still do, what needs the worker, and who to ask for access. You can still follow along. See Worker access.
When access changes, open clients update in place. Only the tasks you lost disappear, and your drafts are kept. If you lose access to a conversation you have open, it says You no longer have access to this chat.