Phone
The phone app (apps/mobile, an Expo app) lists your sessions, opens a session’s conversation,
sends turns, and reviews the change with comments that go back to the session. It talks to a Mend
server over its HTTP API with a token of its own.
In 0.36 the app is not published: there is no App Store or Google Play build, and the Mend server
does not serve it. mend pair says so:
the app is apps/mobile — build it yourself; it is not published yet. What runs in a phone’s
browser is its web build, from a checkout of the Mend repository.
Open it
Section titled “Open it”From a checkout with dependencies installed (pnpm install), on a machine the phone can reach:
pnpm --filter @mend/mobile webThis runs expo start --web, which serves the web build on port 8081 by default. Open
http://<that machine's address>:8081 in the phone’s browser; the port must be reachable from the
phone. Alternatively, npx expo export --platform web (run in apps/mobile) writes a static build
to dist/, one HTML file per route, for any static file server you run.
The phone then has to reach two things: the web build, and the Mend server it pairs with. See Work from another device for reaching the server. The server answers browser calls only from origins it was told about, so add the web build’s exact origin:
mend server setup --origin http://<that machine's address>:8081The list given replaces the saved one, so repeat any origin already configured. Without it, the
server refuses the app’s requests (Origin not allowed).
Pair it
Section titled “Pair it”- On the machine, open the web app’s Settings → Devices and choose Pair a phone, or run
mend pair. Either shows a code, the server URL, and a QR. A code is good for one device, once, for ten minutes. - In the phone app, choose Pair with your machine (on Now, or under Settings). The browser
cannot scan a QR (
the camera rides the native app — type the code below), so choose Type the code instead. - Enter the Server URL shown beside the code and the Pairing code (
ABCD-EFGH), then Pair.
The server mints a token for the phone and lists the device under Settings → Devices, where you revoke it. The web build keeps the token in the browser’s storage. Unpair in the app’s Settings clears it on the phone only. Settings → Advanced takes a server URL and bearer token typed by hand instead, such as one from Mint a token by hand in the web app.
What it does
Section titled “What it does”- Now lists sessions under
Needs you,LiveandRecently settled. A row names its harness:Claude Code,Codex,OpenCode, and any other by its id, such aspiorshell. - Projects starts a
claudeorcodexconversation in an adopted project, with a worktree name, model, thinking effort and base. The first turn goes through the composer. - A session opens as its conversation. Send a turn in
Message the session…, stop the open turn, answer approvals (Allow once,Allow for session,Decline) and questions, and attach images. Header actions includeResume,Deliver follow-up,Review the changeandDiff; the rest sit underMore actions, andStop sessionis only ever there. - A Claude workflow shows as a card on the turn that started it while it runs: each phase, each
agent’s state, model, tokens and current tool, and the totals. The turn Claude starts to report it
reads
the agent continued · …. - Review the change shows the diff with
Suggest fixes,Read this changeand the change’s description and tour. Tap a line to comment on it, or comment on the change as a whole, thenSend reviewsends the comments to the session as one instruction you can edit first. If the agent is still working, it is saved as a follow-up forDeliver follow-up. - Once a change is landed, its pull request shows as a card in the conversation, the review and the
session row, with
Open on GitHub, andRefreshfor the change’s owner. Read where the pull request shows.
What it does not do
Section titled “What it does not do”- It does not land a change. Land from the web app or the CLI; the phone shows the result.
- It starts only
claudeandcodexsessions, as conversations. It does not startopencodeorpi, and does not attach to a terminal agent; a terminal session shows its transcript. - In the browser, several native parts are missing. The shell reads
React Native WebView does not support this platform., and push notifications answerunavailable. - LaTeX in assistant replies shows as its source in the browser.