All posts

3 min readConceptsRooms

Why every request gets an ID, and what “resume” really means

Every task sent to a shared agent gets a public id like R20260906-07 and a small state machine: pending, approved, running, done, failed, cancelled, expired. The id is what people quote in chat, and resume means continuing under the same id after an interruption, not starting over.

By Noah· Product at Muti AI

Every task sent to an agent in a room becomes a request with a public id such as R20260906-07 and one of seven states: pending, approved, running, done, failed, cancelled or expired. The id exists so that a person in a chat thread, a person on a phone and the owner looking at an approval card are all talking about the same thing. Resume means continuing that same request, under the same id, after an interruption.

This is unglamorous plumbing. It is also the difference between “the agent is doing something” and “the agent is doing R-07, which Sarah asked for, which you approved at 14:02, which is 60% through”.

The id

R + the UTC date + a per-day counter. Short enough to type from a phone, unique enough to be a link. It appears in the room, in the audit log, in chat-platform threads and on approval cards. When Feishu or Slack connectors are in use, the thread for a task is titled with it. See the Feishu design.

The states

Seven states and the transitions between them; the dashed amber path is a resume.Seven states and the transitions between them; the dashed amber path is a resume.

StateMeaningWho moves it on
pendingReceived, waiting for permissionThe owner approves, or a standing grant applies immediately
approvedAllowed, waiting for the machineThe daemon picks it up on its next poll
runningExecuting on the owner’s machineThe runtime finishes, fails, or is cancelled
doneFinished; reply and artifacts postedTerminal
failedThe runtime reported an error; the tail of output is in the timelineTerminal, retryable
cancelledStopped by the requester or the owner, or by a revocationTerminal, retryable
expiredAn approval went unanswered past its TTL (24 hours by default)Terminal, retryable

Owner requests skip pending; they go straight to approved.

Cancel, retry, resume

Cancel sets a flag the daemon checks between tool calls. A running request stops at the next safe point; a queued one is removed. Revoking a person’s grant or a machine cancels everything queued for them.

Retry creates a new request with a new id that references the old one. The room shows both, so history stays honest.

Resume is different. When a machine sleeps mid-run or the daemon restarts, the request keeps its id and its runtime session reference. On return the daemon continues the same session rather than replaying the prompt from scratch. The timeline shows a gap, not a duplicate. This is what makes a laptop that closes at 6 pm a reasonable place to run an agent other people depend on.

Why per-agent queues are serial

Each agent processes one request at a time, in order. Two people asking the same agent at once get R-07 and R-08, and R-08 waits. Different agents on the same machine run in parallel. Serial-per-agent keeps a working directory consistent: two concurrent edits to the same repository are how you get a state nobody asked for.

Approval TTL

An approval that nobody answers expires, by default after 24 hours, and the request becomes expired rather than running a day later when nobody remembers the context. The requester can retry; the owner sees the expiry in the audit log. See what an audit log must record.

Frequently asked questions

Can I reference a request in a new one? Yes. Mention the id and the agent gets that request’s result in context. Referencing a message, an output or a request is how a follow-up avoids a re-brief.

What happens to a running request if I revoke the requester? It finishes and stays in the history; anything queued from them is cancelled. Stopping mid-run can leave a repository in a worse state than finishing.

Are ids global or per room? Per owner, per day. Two owners can both have an R20260906-01; within a room there is no ambiguity.

Does resume work with Codex as well as Claude Code? Both runtimes expose a session reference; the daemon stores it with the request and resumes with it.

Give the work a name and it becomes something people can talk about. Give your agent a room.

Published

Give your agent a room.

muti is free during the private beta. Connect the machine where your agents live and invite the people you trust.

Get started

Keep reading

6 min readComparison

QoderWake and muti

Of every agent product launched in 2026, Alibaba's QoderWake is the closest in shape to muti. Both run on your own machine, and both let a group send it work, through a chat that has to be paired first. They split on whose agent it is, what it runs, and who approves when a colleague's request reaches a delete.

9 min readComparison

WorkBuddy, QwenWork and QoderWake

Tencent's WorkBuddy lets you drive the agent on your own computer from WeChat and WeCom. Alibaba's QwenWork merges desktop, cloud and DingTalk agents into one product. QoderWake runs a team of digital employees on your machine behind a single bot the whole group can mention. All three let colleagues use the agent. They answer how in very different ways.

5 min readPersonal agents

An agent with its own phone number

Manus Cue gives each personal agent an email address, a phone number, a wallet and a computer. That makes the agent reachable by anyone who has the number, which changes the permission question from "what may my agent do" to "what may a stranger make it do". What Manus 2.0 shipped, and what reachability asks of an agent.