Repository navigation
OpenRemote 0.4.1
A console that admits what it does not know, a browser pane with real tabs, and a first day that works.
OpenRemote is one window for the agent harnesses on your computer - Claude Code, Codex, grok, pi, opencode, agy - and this release is the trust pass: every list, button and failure now says what is true.
The console feels different
- A list that has not answered is not an empty list. Chats, projects and devices say they are reading until the daemon replies. The sidebar no longer announces "No chats yet" over a request it has not made, and an unanswered device list no longer reads as an empty account.
- What a destructive press takes is on the button. "Remove it and its key", "Remove it and its schedule", "Remove it and its launch command", and the project row's line: the project goes; its chats move to Chats and the folder on disk is never touched. The safe answer comes first, the second press is the one that acts, and only one removal runs at a time.
- The app quotes what it does not know. A harness's failure reads in its own words; a daemon that stopped answering is named with its last words, and the row offers a Restart where this build can start one; a daemon that is still booting is not reported as a dead one. The same failure reads the same way on every screen.
- Ready means ready. The daemon announces itself when it can answer, not when it has bound a port, so a cold start no longer reads as a dead daemon.
- The keyboard is one layer at a time. Esc closes the dialog on top and nothing beneath it, a dialog holds the keyboard while it is open and hands it back to the control that opened it, and a picker opened from the keyboard lands back on its trigger. The sidebar is one Tab stop, with the arrows moving between chats and Home and End going to the ends. Right-click works in a text field again.
- Privacy mode covers what you typed. A name you entered yourself is veiled like everything else, and no Settings row disappears because privacy is on.
New
- Tabs in the browser pane. Ctrl+T opens one, Ctrl+W closes the active one, Ctrl+Shift+T reopens the last closed (five deep), and the tab's menu closes the others or everything to the right. The strip draws whole tabs only, with the rest behind one control that says how many, and Ctrl+K lists the open tabs and reopens a closed one.
- The pane header says which chat it holds, with the saved layouts a menu away from it.
- Copy a chat as Markdown from Ctrl+K: who spoke, what each tool ran, and how each decision was answered, with a long tool output capped and marked as shortened.
- Run a rule from the palette, without opening Automations first.
- The project line says what it holds: each project's head carries how many chats it has, and shows when one of them is unread.
- Saved setups. New chat keeps a chip for each saved setup, one of them the default, and a preset keeps only the model, effort and approval word its harness still offers, saying what it could not bring.
- Unread, and one page for what moved. A chat you have not read lifts one quiet step; Ctrl+K lists what moved while you were away and marks it all read in one press.
- One prompt, every harness. A race sends the same prompt to two to four harnesses at once, one per pane, and refuses before creating anything when there are not enough harnesses or free panes.
- Stop everything, and stop one harness. One action ends every running chat after naming them, another stops one harness's chats, and a chat on another computer is named and skipped rather than failed.
- A waiting chat says what it is waiting for, under its title in the Needs you group, read-only. Archiving a chat offers Undo for eight seconds.
- Changes in this chat gathers every file a harness reported changing, folded by path, with a diff and a note that it is what the harness reported rather than a git diff.
- A chat can become a recurring job, a chat can be renamed from wherever it is, and a pane layout can be named and restored later.
- A first day that works. A computer with no agent installed is offered the installer during setup, empty states say what the thing is for, and the window fits the screen it opens on, remembers the size you chose, and centres itself when a monitor it last opened on is gone.
Fixed
- The daemon row says which state the daemon is in and offers the control that exists, instead of a disabled dash where a button should be.
- Settings rows that remove something put the safe answer first, and say on the button what goes with the record.
- Privacy mode no longer hides Settings rows, and veils a name you typed.
- The sidebar and the command palette stop redoing work the poll did not change, so a large chat list and a long transcript cost the window less on every beat.
- A permission word survives a harness switch, and a preset stops promising a mode the harness lost.
- Restart waits for the old daemon to stop, keeping its last words for the failure row, and a maximized window no longer stores the screen's size as the size to restore to.
- A synced chat deleted from another device is no longer removed while its harness is still running: the row stays, the failure is logged, and the delete retries on the next sync beat. A sign-in that could not clean up the previous account's copies stops before saying you are signed in, and leaving Cloud exits with the answer the account gave.
Known
- A very long streaming turn still copies its transcript on every token. That is the next performance pass; nothing is wrong with the data.
Installing this
The installers are unsigned by decision, so Windows shows SmartScreen the first time: More info, then Run anyway. On macOS, right-click the app and choose Open. Android refuses an update whose version code does not exceed the one installed; this build's code is higher.
Linux gets both an AppImage, which runs anywhere, and a .deb for Debian and Ubuntu. Windows gets the same app twice, as a setup .exe and an .msi, for whichever your machine prefers. The Android file is the one APK, listed under both its version-free and versioned names. The daemon download, SHA256SUMS and the third-party notices are for servers, not desktops.
Upgrading keeps your chats, your settings and any paired phone.
No account is needed for Local mode: chats, harnesses, plugins and rules all run on this computer, and nothing about them is sent anywhere. Cloud mode is the part that talks to a relay, and it runs only if you sign in to it. If you find something wrong, the issue tracker is the fastest way to tell us.