Harness Remote v2.10.0
Release
Stable release of Harness Remote 2.10.0: the Android APK below, plus unsigned Windows, macOS and Linux desktop builds attached by the desktop workflow.
What's Changed
- Codex CLI is now a supported harness. It connects through the same bridge as the other ACP backends, using the official
@agentclientprotocol/codex-acpadapter. The adapter embeds@openai/codex, so nothing else needs installing, and the bridge signs in with the ChatGPT method — acodex loginon the host machine is all it wants. Sessions, streaming, cancellation, queued follow-up prompts, plan updates, model selection and slash commands all work; the README section covers setup and the per-backend limits. - Conversations open in the Codex desktop app are readable here. Codex allows one writer per conversation and holds the lock for as long as a client keeps it open, so those sessions cannot be joined over the protocol — which is most of the ones worth reading from a phone. The bridge shows them anyway, from the transcript Codex already keeps on disk, and they carry on updating as Codex works. They stay read-only, and the app labels them as started by another client.
- A redesigned interface on desktop and mobile. A grouped sidebar, a command palette, a server switcher in the header, and a connect wizard that hands you the exact command to paste on the machine running the agent, filled in with the address and credentials you just typed.
- A real application menu on macOS, drawn by the system rather than the page, with the shortcuts where a Mac user expects them.
- The browser keeps its own keyboard shortcuts.
Ctrl+RandCtrl+Fused to be taken by the app in a browser tab, costing you reload and find-in-page — the two keys people reach for when something looks stuck. They now bind only in the packaged desktop app.
Fixes
- A session whose history failed to load left the transcript spinning with no explanation. It now says what went wrong and offers a retry, and clears itself as soon as a later refresh succeeds.
- Loading a session's transcript and its model list at the same time — which the app does on every open — could make one failure sink both, so a session the harness would not fully open could not be opened at all.
- Bridge errors reached the screen as raw JSON. They read as sentences now, including the detail Codex hides behind a bare "Internal error".
- The model picker vanished when its list could not be fetched, hiding a control every other session has instead of saying why.
- Sheets kept their phone styling on desktop and opened flat against the bottom of the window; they are centred dialogs there now, and unchanged on a phone.
Contributors
- A big thank you to @giuliastro (Giulio Ardoino) for the Codex backend and its disk-backed history, the interface redesign, the macOS application menu, the keyboard-shortcut and session-loading fixes, the documentation, and the release.
Notes
- Built from
9919e02b058c2880817787cb146dd688da15c94d - Version code
21000
Full changelog: v2.9.0...v2.10.0