Skip to main content
Conversations keep a durable transcript of work with Erdo and its agents. A conversation can have a default agent, additional agent participants, and human participants.

Find conversations on Home

Home starts with the message box and your recent conversations underneath. Send from Home to start work with Erdo. Use the Agent dropdown to choose an enabled built-in agent or an existing custom agent. Administrators can choose Create an agent or Recruit an agent from the same dropdown. Recent conversations show the latest message and a small unread marker. They are ordered by recent activity. Search by name or message preview, select Unread to narrow the list, and use Load more conversations for older results. Reading an unanswered question does not answer it; its decision stays in the conversation. Select a conversation to read and reply in the workspace. Back to Home returns to the input and history. The sidebar’s Recent list keeps conversations and pages available on Home, New conversation and open conversations. On a phone, open the navigation menu to reach it. Opening Home does not preview a conversation or mark its messages read. Explicitly opening a conversation marks it read. An open conversation survives a reload and can be linked directly. Open an agent’s profile from its name in the conversation header, then return to the conversation. The separate New conversation page uses the same input and agent dropdown. Changing the agent keeps your draft and attachments. If a linked agent is no longer available, select Erdo or another agent before sending. A selected agent remains in the page URL for reloads and links. Existing project shortcuts remain available. Pinned pages remain in the project sidebar and Pages. Project learnings remain in Knowledge. Per-run automation transcripts stay in Activity; updates sent into an agent’s persistent conversation appear on Home. Activity also retains the full queue of decisions and escalations. If loading or refreshing fails, use Try again. Previously loaded conversations remain available while a refresh or a later page fails.

Internal child conversations

Create an internal conversation when work belongs to a parent conversation but should remain out of the user’s conversation list until it is useful to follow:
An internal conversation always has a parent. It does not inherit the parent’s participants or default agent. The creator persona is attribution; pass --agent separately when you want to select the child’s default agent. Follow a child conversation to add it to your list:
Following adds your user as a conversation participant. Use threads list --scope all to include followed conversations owned by other people. It does not grant access by itself; you need view access to follow. You can inspect the parent link and participants with erdo threads get <thread-id> when you have permission to view the thread.

Conversation commands

See the CLI reference for listing, pagination, and agent selection. Different participants can have replies running at the same time. Stop applies to the turn you selected, including an older turn that is still running. Reconnecting keeps those active turns visible. Sending another message as the same person interrupts your earlier turn, including work resumed after approval.

Listing and questions

listing is listed by default. Listed conversations appear when you have access, even if you are not a participant. An internal conversation appears only when your user has a participant row. Opening it or marking it seen does not follow it. The creator automatically participates in listed conversations; internal children require an explicit follow. Direct conversations are always listed. Opening the same agent in two organizations creates a separate direct conversation in each organization. Existing user and organization thread lists use the same listed-or-followed rule for internal children. The conversation list returns parent_thread_id, listing, unread, and open_question_count. Open questions are pending, unexpired approval requests in the conversation that your organization can decide, including requests without a deadline. Reading clears unread state; only a decision or expiry clears a question. Unread state and open questions remain separate; Home does not combine them into a count. Previews and activity ordering follow the latest visible content, including your own messages. Unread state follows visible content from other authors since you last viewed the conversation. An answer that arrives after you marked the conversation seen makes it unread again, even if its turn started earlier. Hidden context and thinking do not count as new visible activity. GET /v1/threads/:id returns delegated_from: {thread_id, name} when you can view the parent. The field is omitted if you cannot view it or the parent was deleted. Deleting a parent preserves its child conversations and clears their parent link.

REST and MCP

POST /v1/threads-create and erdo_create_thread accept parent_thread_id and listing: "internal". Internal conversations require a parent, and creating any child requires Edit access on its parent. created_by_persona_id is optional, caller-supplied display attribution to an enabled agent; it does not authenticate that agent or grant execution or access authority. The authenticated user remains the owner. Set persona_id separately for the child’s default agent. Other agent participants are added explicitly through the participant endpoint or tool. To follow, send POST /v1/threads/:id/participants with {"user_id":"your-user-id"}. To unfollow, send DELETE /v1/threads/:id/participants/your-user-id. The MCP tools erdo_add_thread_participant and erdo_remove_thread_participant accept user_id for the same action. Supply your own ID, and omit persona_id. View access is sufficient. Agent participant changes still require Edit access. Messages sent from chat, the CLI, REST, or MCP use the same agent selection and interruption rules. Mention an enabled agent with @ to address it; otherwise the conversation’s default agent answers. Sending another message interrupts your previous turn while other participants’ turns continue. Turns follow persisted message order, so an older send delayed in transit cannot interrupt your newer turn, even after its reply finishes. Delayed and duplicate turns return a terminated result; send a new message to ask again. Scheduled and proactive work retain their own execution authority. A conversation stays active until the remaining turns finish delivering their replies. When agent names overlap, the longest name at the same mention wins: @Sales Analyst selects Sales Analyst, while a later @Sales still addresses Sales. The first mention in the message chooses the replying agent. For a single persisted message, use GET /threads/{id}/messages?message_id={uuid}. It returns that message’s server timestamp and author, with visible content (which may be empty), using the conversation’s normal access rules. Conversation writes require Edit access. Background source labels and job IDs are reserved for authenticated server work; supplying them in a conversation request does not grant permission or hide a person’s run from cancellation.