# The phone

The phone app shows the sessions Moontors runs on your computer, and works on them from your phone:
the board, each session's transcript and the composer, as the window has them, laid out for a phone.
It pairs with your computer directly, on the same network or through your tailnet, with no account
and nothing in between. What you do in it goes only to your computer, and a transcript you export
only to the app you share it with.

:::note
The phone app is for Android, from [Google Play](https://play.google.com/store/apps/details?id=com.moontors.mobile). The iPhone app is coming soon.
:::

## Pairing

The phone pairs with your computer once, and from then on opens on its board.

- On your computer, open Moontors 0.6.0 or newer, choose **Phones** in the header, then
  **Pair a phone**. It says "In Moontors on
  your phone, scan this code, or choose this computer and type the code below.", and shows a QR
  code, the six-digit **Pairing code**, when they expire, and how many tries each has left.
- On your phone, **Pair with your computer** offers **Scan the QR code** and **Enter the code**.
  **Privacy Policy**, under them, opens Moontors' privacy policy in your browser.
- Without the phone app yet, **Get the Android app on Google Play** in the computer's **Phones**
  opens its page in your browser.
- Either way, the phone asks to pair with your computer by its name: choose **Pair**. Your computer
  then asks too, naming your phone, and both show the same number. Check your phone shows the one
  your computer does, then choose **Allow** on your computer, or **Decline** to turn the phone away.
- **Cancel**, on either, stops the pairing. Once paired, the phone says so and opens your
  computer's board.
- The link between them is encrypted and pinned to your computer's own key, which the phone learns
  while pairing, so nothing between the two can read it or stand in for your computer.

### By QR code

- **Scan the QR code** opens the camera, asking for it the first time: choose **Allow the camera**.
  Then "Point the camera at the QR code your computer shows."
- The camera reads QR codes alone, on the phone, and keeps no picture.
- If the camera is off for Moontors, **Open Settings** turns it on, or choose **Enter the code**
  instead.
- The QR code carries your computer's addresses, its tailnet's among them, and a secret that works
  once, until the code expires.

### By code

- **Enter the code** looks for your computer on the phone's network, saying "Looking for your
  computer on this network…", and lists what it finds. Choose your computer, type the code it
  shows, and choose **Pair**.
- It finds your computer on the local network, so the phone and the computer need to be on the
  same one. Through a tailnet alone, scan the QR code instead.
- If the phone won't let Moontors use the local network, it says so, and **Open Settings** turns it
  on.
- The code itself never leaves the phone: the phone proves it knows the code, without sending it.

### When pairing fails

The phone says why, with **Start over**:

- a QR code that isn't a Moontors pairing code, or one shown by another computer;
- a code that didn't match, with **Try again** to type it again;
- a computer it can't reach: check it's on the same network as the phone, or on its tailnet;
- a computer this phone already knows under another identity: forget it on the phone, then pair
  again;
- a connection that dropped before the computer answered, or a computer that declined the phone;
- Moontors older on one side than on the other, which says which to update: "The computer's
  Moontors is older than this phone's. Update Moontors on the computer, then pair again.", or "This
  phone's Moontors is older than the computer's. Update Moontors on this phone, then pair again."

On your computer, the dialog says when the code expired or every try was used, with **Start again**
for a new code. When no phone gets through, it says "If your phone can't connect, check it's on the
same network as this computer, or on its tailnet.", and names the firewall that may be blocking it,
on macOS, Windows or Linux.

### Your phones on the computer

- **Phones** lists the **Paired phones**, each with its kind, when it paired and when it last
  connected.
- **Remove** unpairs a phone. The next time it connects, the phone goes back to pairing, and what
  was typed on it and not sent goes.
- **Forget all phones…** unpairs every phone and gives your computer a new identity, so each phone
  has to pair again.

### When the computer can't be reached

When the phone can't reach your computer, it says so over the board, and why:

- "It may be asleep, or off this phone's network and its tailnet. Moontors keeps trying." **Try
  again** tries at once.
- Something at its address answered with another identity than the one the phone paired with, as
  when Moontors on it was reset. Forget it on the phone, and pair again.
- The phone can't use the local network: **Open Settings** turns it on.

**Forget this computer** asks first: "This phone stops reaching it, and you pair again to reach its
sessions. Nothing on the computer changes." Choose **Forget**, or **Keep it**.

## The demo

**See a demo**, on the pairing screen, opens the app on sample sessions, so you can see it work
before pairing.

- The **Demo** bar stays at the top of every screen, saying "Sample sessions on a pretend computer.
  Nothing here reaches a real one."
- Its board, sessions, transcripts and composer work as they do paired, on a made-up company's
  projects.
- Attaching files offers the demo's own sample photos and files, never yours.
- Anything you type gets the demo's own reply, which says it's a demo, and so does a side question
  with `/btw`. A rename, `/clear` and a goal work as they do paired.
- What needs a computer behind it says "That isn't in the demo, as there's no computer behind it.
  Pair with Moontors on your computer to do it.": changing or adding a folder, a recap, reloading
  the agent's configuration and a subtask.
- **Back to pairing** leaves it. What you typed in it is gone, and the next demo starts afresh.

## The board

The board is your computer's board, as a list: its sections under one another, with **Sessions**,
those in no section, first, each with its cards. It changes as your computer's does, and what you
change on the phone shows on your computer at once (see [The board](/docs/sessions-and-board/#the-board)).

- The chips at the top filter it: **All projects**, one per project, and **Archived**. They scroll
  sideways when there are more than fit.
- A card is the window's card (see [A card](/docs/sessions-and-board/#a-card)): the session's state,
  its agent and model, where it works, the context it's used and its last lines. Tap it to open the
  session.
- A card and a section's name each have a handle. Drag a card by it to move it within its section
  or to another, or a section by its own to move the section; the unsectioned stay first. Near the
  top or bottom, the board scrolls as you drag.
- **Accounts**, the round button at the top, shows each agent's sign-in and account as your
  computer's **Accounts** does, read only: "Sign in from Moontors on your computer."
- When archiving a session couldn't remove its worktree, the board says so until you **Dismiss** it.
- When a move, a reopen or a delete is refused, or the board can't be listed, it says why under the
  chips.
- Sections are made, renamed and removed on your computer, and sessions are created there (see
  [Limits](#limits)).

### Archived

- **Archived** shows the **Archived sessions** in the board's place, the latest archived first,
  under the same project filter.
- Tap one to read its transcript, read only. **Back to the list** goes back.
- **Reopen** puts it back on the board, and **Delete** deletes it, asking first.

## A session

Tapping a card opens its session full screen: its header, its whole transcript and the composer, as
the window's panel has them.

### The header

- **Board** goes back to the board, as you left it.
- Tap the title to rename the session.
- Under it are the session's state, agent and model, its folder and its usage.
- **Plan**, once the session has one, opens it, with a dot while one waits unseen (see
  [Plans](#plans)).
- **Session actions** opens what else the session can do.

### Session actions

Each where the session's agent can:

- **Export the transcript** shares the whole transcript as a Markdown file, through the phone's
  share sheet, so you can save it or send it to any app.
- **Fork** starts a new session from the conversation as it stands now, and opens it in this one's
  place.
- **Archive** asks first, as the window does (see
  [Archiving and deleting](/docs/sessions-and-board/#archiving-and-deleting)), then takes the
  session off the board.
- **Delete** asks first too. It can't be undone.
- A session with terminals running on your computer says how many archiving it ends, before it does,
  whether you archive it or delete it.

### The transcript

- It shows what the window's does, newest at the bottom (see
  [What the transcript shows](/docs/sessions-and-board/#what-the-transcript-shows)): your messages,
  the agent's replies as they come, tool cards with what they printed or changed, thinking, and
  each other row.
- What you send from the phone says **from phone**, on the phone and in the window.
- Tap a tool card or thinking to open it. Tap a turn's last reply for the time the turn took and
  **Copy reply**. Text can be selected and copied.
- A permission ask offers **Allow** and **Deny**, and **Allow for this session** where the agent has
  it.
- Files a message took show under it; tap one to open it.
- Lines a rewind undid are dimmed. A subtask's notice offers **Open the subtask**.
- While the session's agent installs, a bar shows how much has come.
- When something you asked of the session is refused, such as a rename, an archive or a fork, it
  says why under the header.

### Questions, forms and links

The agent's questions, a tool's forms and the links it asks you to open show in the transcript as
cards, as the window's do (see [Questions](/docs/questions-and-plans/#questions)):

- Questions show their options as rows, with **Other** and **Notes** where the agent takes them, and
  a header chip each where there are several. **Submit answers** sends them once each has an answer.
- A form takes its fields, then **Accept**, **Decline** or **Cancel**.
- A link shows the whole page it goes to, and **Open** opens it in your browser, for https only.
- Anything else says "The agent is asking something this app can't show. Answer this on the
  computer."
- **Board** leaves a question open, to answer later.

### Plans

A waiting plan shows in the transcript, and opens full screen, as does **Plan** in the header (see
[Plans](/docs/questions-and-plans/#plans)).

- **Earlier plans** picks one before it, to read.
- While it waits, "Press and hold a paragraph to comment on it": **Add Comment** adds yours, and the
  paragraph is marked with its number.
- **Accept this plan?** ends it as in the window: a Yes for each mode the agent can go on in, Bypass
  asking first, or **No, keep planning**. With comments, **Send feedback and keep planning** sends
  them.
- Once answered, it's read only.

### Background tasks and side questions

- **Background tasks** shows what the agent runs in the background, such as a dev server, each with
  its **Output** and **Stop**. `/tasks` goes to them.
- `/btw` asks a **Side question**, even while the agent works. Its answer shows over the composer
  until you dismiss it.

### Commands

The composer's built-in commands work as in the window (see
[The built-in commands](/docs/conversation-commands/#the-built-in-commands)), each opening the
phone's own sheet:

- `/help` opens **Commands**: the session's commands, each with its kind and what it does.
- `/goal` opens **Goal**, with **Set goal**, **Pause** or **Resume**, and **Clear goal**.
- `/approve` opens **Actions the agent's review denied**, each with **Approve once**.
- `/rename`, `/export`, `/archive`, `/delete` and `/context` do what the header, **Session
  actions** and the composer do.
- A command whose view is the window's alone, such as `/diff`, says it opens in the desktop app.

### Rewinding and branching

- Beside each message you can go back to are **Branch from before this prompt** and **Rewind to
  before this prompt**. `/rewind` and `/branch` ask which prompt first.
- **Rewind** asks first, naming the files it would restore, as the window does (see
  [`/rewind`](/docs/insight-and-code-workflows/#rewind)). After it, the prompt comes back in the
  composer, to edit and send again.
- **Branch** asks first, then opens the new session in this one's place, with the prompt in its
  message.

## The composer

- Type in **Message the agent**, and **Send** sends it. While a turn runs, **Stop** stops it.
- When a message or a command can't go now, the composer says why under it, and keeps what you
  typed. Subtask reports waiting for your next prompt say "Subtask reports go to the agent with your
  next prompt."
- What you've typed and not sent stays on the phone, for each session, until you send it, even if
  the app closes. It's the phone's own: the window's message is its own too.
- `/` at the start opens the commands list, each with what it does, or why the session can't run it
  now (see [The commands list](/docs/conversation-commands/#the-commands-list)). `@` lists the
  session's files and folders, to name one (see
  [Naming files with `@`](/docs/insight-and-code-workflows/#naming-files-with-)).
- The context ring beside **Send** shows how much of the context is used. Hold it for its words;
  tap it to compact, where the agent can.

### The pickers

The pickers under the message are the window's (see
[The composer](/docs/sessions-and-board/#the-composer)), each opening a sheet:

- **Permission mode**, the model, and its effort where the agent switches it.
- **Settings**, where the agent has some: the session's own, such as Claude Code's **Fast mode**,
  **Output style** and **When it compacts**, and Codex's **Daybreak** where your account has it
  (see [Session settings](/docs/configuration/#session-settings)).
- Choosing Bypass asks first: "Turn off permission prompts?", with **Switch to Bypass**.

### Attaching files

Where the session's agent takes files, **Attach files** offers **Photos** and **Files**, and the
phone's own picker opens (see [Attaching files](/docs/sessions-and-board/#attaching-files) for
what each agent takes).

- The files show above the message, in a row that scrolls sideways. Tap one to open it full screen:
  an image, a text file's text, or any other kind's name. Its X takes it off.
- A file that can't go says why on it, until it's taken off.
- They go with your next message, and only to your computer.

## Landscape and tablets

The app turns with your phone, upright or on its side, and works the same on a tablet or an
unfolded foldable.

- On a wide screen, the board, a session and each sheet stand in a column in the middle, as wide as
  on the desktop: the board as wide as a card, a session as wide as the window's panel opens, and a
  sheet or the pairing as wide as the desktop's dialogs.
- On its side, the app keeps clear of the camera's cutout and of a navigation bar at the side, and
  a session's header keeps to its title and status, leaving the transcript the room: its folder and
  usage show with the phone upright.
- Where the screen is too short for all of the pairing, as on a phone on its side, it scrolls, and
  the camera's square takes at most half the screen's height.

## What the phone keeps

All of it in the app's own storage, which no other app can read:

- the computer it's paired with: its name, its addresses, its key's fingerprint, and the phone's own
  id and token there, in Android's encrypted storage for the app;
- what you've typed and not sent, each until you send it or its session goes, and all of it once
  the phone is no longer paired;
- copies of the photos and files you attach, each until it's sent, taken off or its session goes,
  and of a transcript you export, until you export another; any still there go when the app next
  starts.

Sessions, transcripts and files stay on your computer, and the phone shows them only while it
reaches it. Android's backup is off for the app.

Moontors itself sends no telemetry; each agent's own usage data follows that agent's settings. The phone app has no analytics, crash reporting or advertising ID, and each release
is checked for it before it goes to Google Play: nothing in it reports to Google, and nothing asks
for the advertising ID. The crash reports Google Play gives Moontors' developer come from Android
itself, on phones that share diagnostics with Google, not from the app.

## Limits

- It needs Moontors 0.6.0 or newer on the computer.
- One computer at a time: the phone opens on the one it paired with last. To pair with another,
  remove the phone in your computer's **Phones**, or, while it can't be reached, **Forget this
  computer** on the phone.
- Not on the phone yet, so done on your computer: creating a session; the Git and Files views, the
  terminal and the Configuration dialog; signing an agent in or out, installing one and setting up
  the sandbox; adding a folder without typing its path; and pasting an image or files into the
  message as attachments.
- The phone reaches your computer on the same local network, or through Tailscale. There's no way
  in from anywhere else yet.
- Finding the computer by the code way is proven on the emulator's network, not yet over a real
  Wi-Fi network. If the phone doesn't find yours, scan the QR code instead.
- The phone doesn't notify you yet when a session waits, fails or crashes: open the app to see.
- Only https links open from the phone.
- An answer too large for the phone's link says "That's too much to send over the phone's link.
  Open it on the computer."
- A session opens over the board, on a tablet too, never beside it as in the window.
- The iPhone app is coming soon. It turns on its side too, and is for the iPhone only, not the
  iPad.