> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dashsquad.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Dash for iPhone and iPad

> Sign in to reach your HQ, share conversations with Desktop, and manage agents from iOS.

Dash 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.

<Note>
  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.
</Note>

## Sign in

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

<Steps>
  <Step title="Enroll your HQ in Desktop">
    Open **Settings → Devices → Remote access**, sign in to Dash, and create an HQ if you
    haven't already. Enrolling here is also what makes the HQ visible to the app.
  </Step>

  <Step title="Sign in on iOS">
    Open Dash and tap **Sign In**. A browser opens to the Dash sign-in page — sign in with the
    same account you used in Desktop, then the browser hands you back to the app.
  </Step>

  <Step title="Choose your HQ">
    Dash lists every HQ enrolled in your account, by its address. Tap one to connect. The
    Conversations tab opens once the HQ accepts the connection.
  </Step>
</Steps>

Dash for iOS always connects through Dash'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 Dash 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:

<Steps>
  <Step title="Get the code">
    On the browser asking for access — the web client — a QR code appears under
    **Approve this device**.
  </Step>

  <Step title="Scan it">
    On this phone, open **Settings** and tap **Approve a device**, then scan that code
    with the camera.
  </Step>

  <Step title="Confirm">
    Dash shows `Allow "<device>" to access <HQ>?`. Tap **Approve** to let it in,
    or **Deny** to turn it away.
  </Step>
</Steps>

If you take too long to scan or confirm, the code expires and Dash 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 Dash 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, Dash 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**. Dash shows thinking, tool activity,
[sub-agent](/tools#sub-agents) 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, Dash
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. This differs from Desktop and the web client, where Return sends; see
[Composer keys](/chat-with-your-agent#composer-keys).

While an agent is working, the send button becomes **Follow Up**. It adds your message to a shared
queue and runs it after the current response. Use the adjacent menu for **Interrupt & send** when the
new message should take priority. The work strip shows the active response and pending count. Tap
**View** to review, edit, or remove pending Follow Ups. **Stop** ends the exact active response and
pauses pending work; **Resume** continues it when you are ready.

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, Dash 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 Dash 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, Dash 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. Dash 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. Dash 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, Dash 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.

<Note>
  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.
</Note>

### 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, Dash 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,
Dash 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 — Dash 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 Dash'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.**

## 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, Dash 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.

<Warning>
  **Disconnect & Forget** cannot restore local drafts or cached attachments. Make sure anything you
  need has synced before removing the HQ.
</Warning>
