slug: desktop

Desktop App

The OAR desktop app is a Tauri v2 shell that bundles the oar binary, the Web UI and supporting resources into a single native installer for macOS, Windows and Linux. The shell itself is intentionally a dumb launcher — it does not implement any routing logic. It spawns the backend, exposes the window, and stays out of the way.

PlatformInstallerArchitectures
macOS.dmgaarch64, x64
Windows.msix64
Linux.deb, .rpmx64

Installation

Download the installer for your platform from the Download page and run it. The installer bundles:

  • the oar binary (the actual backend service)
  • ui-dist (the admin Web UI)
  • assets and vendor-icons
  • a manifest.json used to sync these resources on every launch

No separate Node.js install is required — everything the backend needs ships in the bundle.

What happens on launch

Every time the app starts, the Tauri shell runs oar init --from-app. This step:

  1. Reads manifest.json from the bundled resources.
  2. Hash-compares each bundled file against the matching entry in ~/.open-agent-router/.
  3. Copies over any file whose hash differs (or that is missing locally).
  4. Spawns the backend service, which binds to 127.0.0.1:26969.
  5. Waits for the port to become reachable, then shows the Web UI window.

Because the hash comparison is per-file, routine launches are fast — unchanged resources are skipped. The sync only rewrites files that actually changed in the bundle.

One port, one process

The admin API (/api/*) and the agent proxy both live on :26969. The desktop window is just a browser pointed at that port. There is no second backend.

System tray

The app lives in the system tray, not in your taskbar's running-apps row. The backend service keeps running even when no window is visible.

ActionResult
Close window buttonHides to tray — backend keeps running
Tray left-clickShows the window
Tray right-click → Show OARShows the window
Tray right-click → Quit OARActually quits (stops the backend)
Closing the window is not quitting

The close button hides the window. The backend keeps serving requests on :26969. Use the tray's Quit OAR entry to stop the service.

macOS specifics

On macOS, both the close button and the conventional quit shortcuts are repurposed to hide to tray:

  • Cmd+W (Hide Window) — hides the window, backend keeps running.
  • Cmd+Q (App menu) — hides the window, backend keeps running.

To actually quit, use Quit OAR from the tray's right-click menu.

Dock management

The keepDock setting controls whether the app keeps a Dock icon while running (default true). When set to false, hiding the window also removes the Dock icon, so the app presence collapses to the tray only.

oar settings set keepDock false

Menu bar shortcuts

MenuItemShortcut
AppAbout OAR
AppHide OARCmd+Q (hides, does not quit)
EditUndo / Redo / Cut / Copy / Paste / Select Allstandard
ViewReloadCmd+R
WindowHide WindowCmd+W
HelpDocumentation
HelpGitHub
HelpGitee
HelpAbout OAR

Cmd+R reloads the embedded Web UI — useful if the admin panel gets into a bad state. It does not restart the backend.

Auto-start

On macOS, auto-start is implemented via a launchd plist with KeepAlive and RunAtLoad set. When enabled, OAR launches at login and relaunches if the process exits unexpectedly.

  • Enable — toggle Auto-start in the desktop app Settings, or via the tray menu.
  • Disable — run oar service uninstall to remove the launchd entry.
disable auto-start — bash
$ oar service uninstall
oar service status
# stopped: no enabled: no

Auto-update

Updates are delivered from the R2 CDN as the primary channel, with GitHub and Gitee as fallbacks. The downloaded binary is verified with an MD5 hash before the existing one is replaced. The replacement is atomic — a rename, not an in-place overwrite — so a failed update cannot leave the install in a broken state.

  • Interactive updateoar update checks, prompts, and applies with a progress bar.
  • Check onlyoar update check reports available updates without applying them.
  • Non-interactiveoar update --json emits a JSON result for scripts.
update — bash
$ oar update
# checking R2 CDN ...
# new version 1.4.2 available (current 1.3.0)
# downloading ████████████ 100%
# verifying md5 ... ok
# replacing binary ... done
# restart OAR to apply

In desktop mode the tray menu surfaces the same update flow as a one-click action.

Continue to the CLI Reference for the full command surface, or the Quickstart for a hands-on walkthrough.