Skip to main content
DashSquad for iOS is a native companion for your HQ. It lets you continue the same conversations you see in Desktop and manage agents without running an agent on the phone itself.
Your HQ remains the source of truth. The app keeps a local cache for reading and drafting while offline, then reconciles with the HQ when the connection returns.

Sign in

DashSquad for iOS connects to your HQ through your DashSquad account, not a pairing code.
1

Enroll your HQ in Desktop

Open Settings → Devices → Remote access, sign in to DashSquad, and create an HQ if you haven’t already. Enrolling here is also what makes the HQ visible to the app.
2

Sign in on iOS

Open DashSquad and tap Sign In. A browser opens to the DashSquad sign-in page — sign in with the same account you used in Desktop, then the browser hands you back to the app.
3

Choose your HQ

DashSquad lists every HQ enrolled in your account, by its address. Tap one to connect. The Conversations tab opens once the HQ accepts the connection.
DashSquad for iOS always connects through DashSquad’s hosted relay, so it works the same way at home, at the office, or on cellular — there’s no local-network step and no QR code to scan. The HQ picker’s toolbar also has Sign Out, which disconnects this device and returns to Sign In. If something goes wrong, the HQ picker tells you exactly what:
  • Couldn’t reach your DashSquad account service. Check your connection and try again. — check your connection and tap Retry.
  • No HQs linked to your account yet. Open Desktop → Settings → Devices → Remote access to enroll this machine. — open Remote access in Desktop and enroll this machine.
  • This HQ needs to be re-enrolled from Desktop before app access works. — its Remote access setup predates this app’s sign-in support; open Desktop on that computer once and it updates the HQ’s app access automatically.

Approve a device

As soon as you sign in, this iPhone or iPad becomes a signer for your account automatically — there’s nothing to turn on. From then on, whenever a new browser tries to reach one of your HQs for the first time, it waits for one of your signer devices to approve it instead of connecting right away. To approve one:
1

Get the code

On the browser asking for access — the web client — a QR code appears under Approve this device.
2

Scan it

On this phone, open Settings and tap Approve a device, then scan that code with the camera.
3

Confirm

DashSquad shows Allow "<device>" to access <HQ>?. Tap Approve to let it in, or Deny to turn it away.
If you take too long to scan or confirm, the code expires and DashSquad shows This code has expired. Ask the device to try again. — go back to the browser that’s waiting and have it request a fresh one. Accounts with no signer device yet skip this entirely: a new browser sign-in connects immediately, just like before. The moment your first DashSquad for iOS device signs in, every new browser sign-in after that needs approval from one of your signer devices.

Use shared conversations

The Conversations tab shows the HQ’s canonical conversation list. Changes made here also appear in Desktop.
  • Start a conversation by choosing an agent.
  • Open existing and archived conversations, including messages created on another paired device.
  • Rename or delete an idle conversation from its context menu.
  • Pull to refresh when you want to check the HQ immediately.
When a conversation changed elsewhere before your edit completed, DashSquad refreshes the canonical version and asks you to retry instead of overwriting it.

Chat from your phone

Open a conversation, enter a message, and tap Send. DashSquad shows thinking, tool activity, sub-agent rows, questions, and response text as the HQ streams them. Tool calls and thinking are collected into a compact Activity row. Tap it to inspect each step and its available output. Thinking appears only when the model supplies it. Long responses stay compact in the transcript and offer Continue reading for the complete response. You can attach supported images or answer an agent question. The Tasks button in the toolbar lists every sub-agent in the conversation, with stop and resume. The transcript follows new text while you are reading the latest response. As soon as you scroll away, your position stays fixed even while more text streams in. Latest shows how many meaningful updates arrived and returns to the live response. If you send while reading earlier messages, DashSquad briefly reveals your new message and offers Back to reading so you can return to the same place. With a hardware keyboard, Return inserts a line break and Cmd+Return sends — matching the Send button. You can change the Return-key behavior in Settings; see Composer keys. While an agent is working, sending a message no longer interrupts it. By default the HQ decides whether your message should steer the response in progress or wait as a Follow Up:
  • Auto-steered messages change the work in progress and appear in the conversation with that label.
  • Auto-queued messages wait in the Follow Up list and run after the current response.
If the HQ isn’t sure, DashSquad asks: choose Steer to guide the response in progress or Follow Up to send it afterward. The option the HQ suggests is listed first. To choose yourself, touch and hold Send. With VoiceOver, use the Choose Steer or Follow Up action on the Send button. Closing the chooser preserves your text and images; the message box clears only after the HQ acknowledges your submission. The strip above the composer shows what the response is doing and how many Follow Ups are waiting. Tap View to review, edit, or remove pending Follow Ups. Stop the active response to move straight to the next Follow Up. If a response fails, the queue shows Follow Ups paused — tap Resume Follow Ups to continue them. A Steer that reaches the HQ too late is labeled Auto-steer · Not delivered (or Steer · Not delivered when you chose it yourself) and stays in the conversation for you to review. Automatic routing needs an OpenRouter key on the HQ; see Guide a response or queue a follow up. These controls require a current HQ with Mobile API v2. Older HQs retain the previous single-turn composer. Every paired client sees the same admitted turns, activity, command outcomes, and Follow Up order. Each window keeps its own text draft and reading position. If the connection drops, DashSquad keeps the partial response visible and resumes from the last durable event after reconnecting. New mutations wait for a connection, while the draft and cached conversation remain readable. If the connection fails before DashSquad can confirm that a new message was admitted, the app checks the HQ’s canonical conversation before doing anything else. An ambiguous message stays saved across app restarts and is never resent automatically. When the conversation still exists, Retry reuses the exact original request ID so the HQ can resume or deduplicate the same turn instead of creating a second one. If another client deleted that conversation, DashSquad never recreates or resends the saved message. It appears in Needs Recovery at the top of Conversations. Open it to copy the exact text and preview or share its readable attachments, then discard it with confirmation when you no longer need it. DashSquad uses the same manual recovery flow if it finds unreadable saved attachment data. The same flow also protects an earlier rejected message if a newer draft was saved separately: the newer draft and earlier message are both preserved in one recovery item. You can copy either text and preview or share readable attachments from either copy. If the conversation is still available, discarding the earlier message preserves the newer draft in the composer. If the conversation is unavailable, the confirmation makes clear that discarding removes both copies. DashSquad checks again before deleting anything; if availability changed while the confirmation was open, it stops and asks you to review and confirm the current outcome. The affected chat stays read-only until you explicitly discard the recovery item. Corrupt attachment data cannot be previewed or shared, but the exact text for that copy remains available. Recovery items survive app restarts and never include a Retry action.

Talk to your agent

When your HQ has a speech provider configured, DashSquad can turn your voice into a message, read an agent’s replies back to you, or hold a full hands-free conversation in voice mode.
This needs an HQ running the version that adds speech, installed at the same time as (or before) an app build that expects it. An older app can’t decode the capability an updated HQ advertises, and an older HQ rejects the settings a newer app sends — pair the app and HQ updates together.

Dictate a message

Tap the microphone button to the left of the paperclip in the composer to dictate instead of typing. Recording replaces the message field with a live level meter and a countdown, and stops automatically after 60 seconds. Tap the checkmark to finish early and insert the transcript, or the × to discard the recording. If iOS has denied microphone access, DashSquad shows Microphone access is off. Turn it on in Settings. with a Settings button, since iOS only prompts for the permission once. A phone call or other audio interruption ends the recording with Recording was interrupted. A clip that transcribes to nothing shows Nothing was heard.

Read a reply aloud

Open the context menu on an assistant message and choose Read aloud to hear it spoken. The same item becomes Stop reading while it plays. Starting a read on another message stops whichever one was already reading. Only the first 4,000 characters of a reply are read aloud.

Voice mode

Tap the waveform button to the right of Send to start a hands-free conversation. It appears once your HQ’s speech is available and microphone access hasn’t been denied. If you haven’t decided on microphone access yet, iOS asks the first time you tap it. A full-screen orb opens with a line underneath naming what’s happening — Listening, Thinking, Speaking — plus captions of what you said and what the agent is saying. Just talk. When you stop, DashSquad sends what you said, and the agent answers out loud. There’s no button to press in between — speak, pause, and the reply comes back. To interrupt the agent while it’s speaking, start talking — DashSquad hears you and stops playback right away — or tap the orb. A mute button sits below the orb: while muted, the agent keeps speaking, but nothing you say is sent until you unmute. While voice mode is open, the agent knows you’re speaking to it and answers in short spoken sentences. If a reply would include code, a table, or something long, the agent tells you it’s in the transcript rather than reading it aloud. Voice mode always tells you why it stopped, then closes the cover: Connection lost if the HQ connection drops, Microphone stopped if a phone call or other interruption takes the microphone away, or Voice mode ended if you close it yourself or send the app to the background. Either way, nothing is lost — every turn from the conversation stays in your chat afterward like any other message. Voice mode also works over DashSquad’s hosted relay, so it behaves the same way on cellular as it does on Wi-Fi. Read aloud isn’t available while voice mode is open — close voice mode first.

Settings → Speech

Open Settings → Speech to see and change what the HQ hears and speaks with: the speech-to-text model, the text-to-speech model and voice (with a Preview voice button that speaks a short sample), and the language dictation expects — Auto lets the provider detect what you’re speaking. A Realtime row explains that live back-and-forth conversation isn’t available yet on any configured provider. This row only appears once your HQ has a speech provider configured; otherwise the Speech section in Settings reads Update your HQ to use speech.

Settings → AI Providers

Open Settings → AI Providers to manage the API keys your agents use. Each provider shows whether it’s connected and lists its keys by name with the date each was added, never the keys themselves. A Claude or ChatGPT subscription is listed under the account’s email. Tap Add Key and paste a key to add one. Tap ⋯ next to a key (or swipe it) to Replace it with a new one or Remove it. Keys are stored encrypted on your HQ and shared with Desktop. To use a subscription instead of a key, tap Sign in with Claude or Sign in with ChatGPT. For Claude, open the sign-in page, approve, and paste back the code it shows. For ChatGPT, enter the short code shown on the page it links to — on this phone or any other device — and the sheet closes by itself when you’re done. See AI Providers. This section only appears when your HQ supports it. If it’s missing, update your HQ.

Live browser view

When an agent with the browser tool opens a browser, View browser appears in the conversation’s ⋯ menu. Open it to watch the agent’s browser live, full screen. While the agent is working the view reads Agent is driving and is watch-only; between turns it reads You have control — tap the page to click, drag to scroll, and type in the text field above the keyboard and press Return to send it (Return on an empty field presses the page’s Enter). There’s no paste or hover on iOS. Only one live view can be open per browser, so opening it here ends one open elsewhere. Backgrounding the app ends the view with Live view ended. (connection lost) — reopen it when you come back. See Browser → Live view.

Manage agents

Open Squad to inspect HQ-owned squad member status and configuration.
  • Create an agent by choosing a name, model, and system prompt.
  • Edit the model or prompt for an existing agent.
  • Enable or disable an agent. Disabling requires confirmation.
  • Start a shared conversation directly from an agent’s detail screen.
  • Delete an agent by typing its exact name. Its conversations remain in history as archived chats.
Provider credentials, connectors, projects, HQ shutdown, and other host administration remain in Desktop.

Work through connection changes

Previously synced conversations and agents remain readable when the HQ is offline. You can keep a local draft, but creating, sending, renaming, deleting, and agent changes wait until the HQ reconnects. A banner distinguishes an offline HQ, a temporary relay failure, a rate limit, rejected credentials, and an incompatible app or HQ version. Use Settings → Reconnect after fixing connectivity. If the HQ rejected the saved credentials or its identity changed, open Settings and choose Disconnect & Forget, then sign back in and tap the HQ again in the picker — no QR code needed.

Remove an HQ from the device

Open Settings and choose Disconnect & Forget. After confirmation, DashSquad stops its connections and removes that HQ’s credentials, cached conversations, agents, attachments, and drafts from the device. The canonical HQ data is not deleted.
Disconnect & Forget cannot restore local drafts or cached attachments. Make sure anything you need has synced before removing the HQ.