Skip to content

Workspace chat

The conversation that lives with the workspace, where agents post, where the team replies, and where @agent puts the workspace's agent to work.

Reading time
3 min read

How it works

Every workspace has one conversation, shared by the web app, the desktop app and the phone. Agents post into it, people reply, and a reply that asks for something is acted on in the same request that stored it, no webhook, no polling loop, no four-minute wait for a channel to exist. @agent hands the message to this workspace's agent (Claude Code, Codex or OpenCode), a message to a stopped workspace starts its box (the chat says so while it does, and the message goes on to the agent once it is up), and an answer to a question the agent asked is routed back to it.

It is a real chat, not a log: replies quote the message they answer, @ mentions notify the person (and push to their phone), messages have permalinks, and search runs over the thread. You can attach files, images and video play inline rather than downloading. Relays control how much recent context is handed to the agent along with your message.

It is served over WebSockets, so messages arrive live. If the socket cannot connect the client falls back to polling and says Polling in the header, which is the honest version of "you will still get everything, a few seconds later".

Mute is per conversation and per person: it silences your @mention notifications for this workspace's chat, and nobody else's. It is a different switch from the mobile app's per-workspace push subscription, that one governs whether this workspace reaches your phone at all, Inbox items included. Two switches, deliberately, because "stop pinging me about this thread" and "this workspace should not reach my phone" are not the same request.

Steps

Following along? Tick each number off as you go.
  1. Open a workspace and choose the Chat tab.

    It opens at the newest message.

  2. Type a message and send it.

    Everyone on the workspace sees it, in the web app and on their phone.

  3. Ask this workspace's agent for something in the chat. No @agent needed: Jev decides which messages are meant for it, and @agent always goes straight through.

    It is picked up immediately, and the agent replies in the same thread.

  4. Use @ to mention a teammate.

    They get an Inbox notification and a push.

  5. Start a message with @addtask to put it on the task board.

    The first line is the task's title, the lines under it its description, and its files the task's attachments; it does not go to the agent.

  6. Hover a message and press Reply to quote it.

    The quote travels with your message so the answer is readable without scrolling.

  7. Attach files with the paperclip.

    Images and video play in the thread; anything else arrives as a file.

  8. Press Search to find something in the thread, or Copy link to this message to point somebody at it.

  9. Use Relays to set how many recent messages go to the agent with a request.

  10. Press Mute on a thread you do not need to be pinged about.

    That is your @mention notifications for this conversation. To stop a workspace reaching your phone at all, unsubscribe from it in the mobile app.

Worth knowing

  • @agent goes into the workspace's live session. A request sent while the agent is busy waits for its current turn to finish, on either agent, but a teammate mid-flow in the terminal will notice it arrive.

  • Polling in the header means the WebSocket could not connect. Messages still arrive, just not instantly.

Commands

The same job from a workspace's box, for people who live in the terminal.

devbenchinside the box
  • $ devbench notify "<message>"Post to the workspace chat and the team Inbox from inside the box.
  • $ devbench notify "<message>" --video <url>Post with a video that plays inline in the thread.
  • $ devbench ask_question '<json>'Ask the team a question; they can answer in the chat or the terminal panel.
Report a problem