Chat with your squad member
Talk to your squad in the dashsquad apps, on Telegram or WhatsApp, or through the WebSocket API.
After you deploy a squad member, you can talk to it in three ways: the dashsquad apps, Telegram or WhatsApp, and the WebSocket API.
Three ways to chat
| Method | Use it for | Setup |
|---|---|---|
| dashsquad apps (Desktop, web, iOS, Android) | Daily work and status checks | Desktop needs none. Phones and the web app need remote access. |
| Telegram or WhatsApp | Messages to your squad from a chat app that you already use | Connect the chat app in Desktop |
| WebSocket API | Your own integrations, automation and clients | Developer setup |
Desktop chat
In the sidebar, click a squad member under Agents to see its chats. Click a chat to open it. To start a new chat, click the new-chat icon on the squad member's row. Each conversation opens in a tab, so you can keep more than one conversation open.
| Shortcut | Action |
|---|---|
| Cmd+T or Cmd+N | Start a new conversation |
| Cmd+W | Close the current tab |
| Cmd+Option+Left or Cmd+Option+Right | Go to the tab on the left or on the right |
| Cmd+O | Show or hide the list of conversations |
If you do not open a conversation, the chat page shows your recent conversations and your squad members. If you have no squad members, click Deploy an agent.
In Desktop, the web app and the iOS app, a conversation with a response in progress stays at the top of the conversation list.
The strip above the conversation shows the model of the squad member. Click the model to change it. The change applies to the squad member immediately, and Desktop shows Model changed to and the model name. For more information, see Desktop chat.
In a conversation, you see these items:
- Live replies. The reply shows as the model writes it.
- Thinking. Desktop shows Thinking… while the squad member thinks. If the model sends its thoughts, click Show thinking to read them.
- Tool activity. Each tool call shows as a card. For more information, see Tool activity.
- Context use. A chip shows how much of the model context the conversation uses. When the context is full, the HQ makes a summary of the older turns. The conversation then shows Context compacted.
You can attach images to a message. Paste them, drag them into the message box, or click the paperclip button. Desktop accepts PNG, JPEG, GIF and WebP files, with a maximum of 4 images in each message. Each image must be 5 MiB or smaller. The combined size must be 12 MiB or smaller.
The HQ keeps each conversation. You can close Desktop and continue the conversation later.
In a long conversation, scroll to the top and click Load older messages to read earlier turns. Repeat until you reach the first turn. If a page fails to load, or the conversation updates while it loads, click Retry loading older messages. The messages already on screen stay visible.
Set the effort
Next to the model, the strip shows the effort control for models that support it. The control shows a gauge icon and the current level, for example Default. Choose Default or a level. The level applies to this conversation only, from the next reply. Desktop and the iOS app then show Effort set to and the level.
The web app, the iOS app and the Android app show the effort control near the message box. For more information, see Extended thinking.
Guide a response or queue a follow up
The message box stays open while your squad member works. Type your message and click Send.
dashsquad decides how to send it:
- If your message changes the work in progress, dashsquad sends it as a Steer. The squad member gets it at the next safe point. The message shows the label Auto-steered.
- If your message asks for different work, dashsquad adds it to the queue as a Follow Up. The message shows the label Auto-queued.
- If dashsquad is not sure, it asks you. It marks its best guess as Suggested. Your message stays in the box until you make a selection.
To make the selection yourself, open the chooser:
- In Desktop and in the web app, press Cmd+Return (Ctrl+Return on Windows) while the squad member works.
- In the iOS app and the Android app, touch and hold Send.
In Desktop, the chooser has the title A response is in progress. It has two options:
- Steer (Guide the response in progress). The squad member gets your message at the next safe point. The label shows Steered when the HQ delivers it.
- Follow Up (Send after this response finishes). The HQ adds the request to the queue. You can add more requests, and you can edit or remove a request before it starts.
If you close the chooser, Desktop keeps your text and your images in the message box.
How automatic routing works
To make the decision, the HQ sends some text to a decision model through OpenRouter. The model is typesafe/jev-1.13. The HQ sends this text:
- The request that started the current response.
- The last part of the response in progress.
- The text of your new message.
The HQ does not send your images. It sends only the number of attached images.
Automatic routing needs an OpenRouter key on your HQ. If the HQ has no OpenRouter key, dashsquad asks you each time. To turn off automatic routing, go to Settings > Chat in Desktop and select Always ask.
The Follow Up queue
Follow Ups run in their sequence. Stop ends the current response, and the queue waits.
If you stop a response or a response fails, the queue shows Follow Ups paused. No Follow Up starts until you choose Resume Follow Ups. Look at the failure first, if there is one. While the queue waits, you can write new text, and you can edit or remove requests in the queue.
The HQ keeps the queue when a device disconnects or the HQ restarts. Desktop, the web app, the iOS app and the Android app show the same queue for the same conversation.
If a Steer arrives after its response ends, the label shows Not delivered. The HQ does not change it into a new request.
These controls need an HQ that supports this version of the Mobile API. If your HQ is older, the app tells you to update the HQ.
Tool activity
When your squad member uses a tool, Desktop and the web app show a tool card. The iOS app puts a series of thinking, status and tool steps into one row. The row gives a summary of the work, for example "Ran 3 commands, edited 1 file". Tap the row to see each step in the Activity sheet.
Tool cards start closed. Each card shows the tool name, a short summary of the request and the result. For example, a bash card shows its command. Click or tap a card to see the full input and the result.
Some cards open automatically:
- Failures open automatically, so you can see the error immediately.
- File edits in Desktop open and show a diff with a
+added -removedcount. - Task lists show the plan of the squad member as a checklist. In Desktop, the task list shows in a panel above the message box, for example "Tasks: 2/5 completed". The panel disappears when the squad member clears the task list. In the web app, the task list card opens automatically.
Open cards show the result in a form that agrees with the tool. Directory lists show folders and files. Web searches show each result with its title and host. Search results from grep show the matches under each file. Other tools show the plain text result.
Sub-agents in chat
A squad member can start sub-agents to do parts of a job. Each sub-agent shows as a card in the conversation. The card shows the sub-agent type, its status and the number of tool calls.
Open a card to read the work of the sub-agent. You can also type a message to the sub-agent. In Desktop, open the Sub-agents panel to see all sub-agents, and click Stop to stop one.
A sub-agent can work in the background after the response ends. When it finishes, your squad member continues the conversation and tells you the result.
Questions from your squad member
If your squad member needs a decision from you, it shows a question card in the chat. The response waits until you answer.
- Select an option. An option can have the label Recommended. To type your own answer, select Other.
- Click or tap Submit to send your answers.
- To skip the questions, click or tap ✕. In the Android app, tap Skip. The card then shows Skipped.
If you type a usual message, the card shows Replied in chat. Desktop, the web app, the iOS app and the Android app show question cards. For more information, see Questions for you.
Your location
Each message from Desktop, the web app and the iOS app includes your time zone, locale and region. The HQ gives this information to your squad member with the message. Thus your squad member knows your local time.
In the web app and the iOS app, you can also share your approximate position. Turn on Share precise location in the Location settings. The HQ keeps the position with the conversation. In the web app, this setting needs an HTTPS connection to your HQ.
Your squad member can also read this information with the get_location tool.
Composer keys
The message box has these keys in Desktop, the web app and the iOS app:
| Key | Action |
|---|---|
| Return | Sends the message in Desktop and the iOS app. Adds a new line in the web app. You can change this in the settings. |
| Shift+Return | Adds a new line |
| Cmd+Return | Sends the message. While the squad member works, Desktop and the web app open the chooser. |
| Shift+Tab | Adds a new line |
| Tab | Moves the focus out of the message box |
To change what Return does, change this setting:
- In Desktop, go to Settings > General. Under Composer, select or clear Pressing Return sends the message.
- In the web app, click Devices. Under Composer, select or clear Pressing Return sends the message.
- In the iOS app, go to Settings > Composer. Set Return key to Sends the message or Starts a new line.
Tab always moves the focus. This lets keyboard users and screen reader users move out of the message box.
Telegram and WhatsApp
You can connect a squad member to Telegram or WhatsApp. Then you send messages to it as you do to a friend. The squad member replies in the same chat.
To set it up:
- Create a Telegram bot, or link a WhatsApp account.
- In Desktop, open Settings. Under ACCESS, open the page for chat apps and add the app.
- Select the squad member that replies to the messages.
After you connect the app, you can reach your squad member from any device that has the app.
WebSocket API
Developers can use the WebSocket API to connect their own applications to the HQ.
Connect
The HQ serves the chat WebSocket at this local address:
ws://127.0.0.1:9200/ws/chatPort 9200 applies to a standalone HQ. An HQ that Desktop starts uses a free port. It lists the port as channelPort in ~/.dashsquad/<hq id>/ports.json. See HQ ports.
Send the chat token in an Authorization: Bearer <token> header. For all connection details, see HQ Chat WebSocket.
Message flow
The protocol uses requests and replies:
- Send a message. Include an
id, the squad member ID, a channel ID, an existing conversation ID and your text. - Get the events. The HQ sends events while the squad member works, for example
text_delta,tool_use_startandtool_result. - Get done. A
donemessage tells you that the response is complete.
// Send a message
{
"type": "message",
"id": "req-1",
"agentId": "agent-01",
"channelId": "my-app",
"conversationId": "conv-1",
"text": "Summarize the latest logs"
}
// Receive streaming events
{ "type": "event", "id": "req-1", "event": { "type": "text_delta", "text": "Looking" } }
{ "type": "event", "id": "req-1", "event": { "type": "text_delta", "text": " at the" } }
{ "type": "event", "id": "req-1", "event": { "type": "text_delta", "text": " logs..." } }
// Stream complete
{ "type": "done", "id": "req-1" }To stop a request, send { "type": "cancel", "id": "req-1" }. If a problem occurs, the HQ sends a message with "type": "error".
Sessions
The HQ keeps each conversation as a session. When you send a message, the squad member sees the full history of that conversation. You do not have to tell it the same things again.
The HQ keeps the history in a database in its data directory on your computer. Each message, tool call and reply is in the history, in sequence.
Streaming
Replies arrive in real time while the squad member works. You do not wait for the full reply:
- Text shows word by word as the model writes it.
- Tool calls show as a closed card with the tool name and a short summary of the input.
- Tool results update the same card when the tool finishes. For more information, see Tool activity.
- Thinking shows only when the model sends a thinking block.
Streaming works in the dashsquad apps and in the WebSocket API.