Sign in
Developer tools
0%

Developer tools

iohr ui

iohr ui serves the InOrbit web UI on this machine and opens it in your browser. It is in iohr-preview today and needs a checkout of the SDK repository.

iohr ui serves the InOrbit web UI on this machine and opens it in your browser. The UI is the desktop app's window in a browser tab: the frame, the header, the sidebar, the menus, a dock on the right, and the panels of the extensions you have installed.

It is not in the release yet. It is in iohr-preview, and today it serves a UI you build from a checkout of the SDK repository.

Start it

You need iohr-preview, a checkout of the SDK repository, pnpm, and Node 22.18 or newer. Build the UI once in the checkout, then serve it from there:

cd sdk
mise run ui:build      # installs the UI's locked dependencies, then builds it
iohr-preview ui        # serves it and opens your browser

iohr ui with no verb serves the UI and opens it. Stop it with Ctrl-C. To serve without opening a browser, or to choose where it listens:

iohr-preview ui serve                    # serve only, until Ctrl-C
iohr-preview ui serve --open             # serve and open
iohr-preview ui serve --port PORT        # a fixed port; a taken one is an error
iohr-preview ui serve --dir path/to/dist # a UI built somewhere else (or IOHR_UI_DIR)
iohr-preview ui open                     # open the one already running

Without --port the system picks a free port. Without --dir it uses the nearest ui/dist above the folder you are in, so run it inside the checkout. When no built UI is found it says so and tells you to run iohr ui build in the checkout or pass --dir.

IOHR_NO_BROWSER prints the address instead of opening a browser, for iohr ui and iohr ui open.

Work on the UI itself

If you change the UI, these run the UI package's own scripts in the nearest ui/ folder (or the one --package names):

CommandWhat it runs
iohr-preview ui buildBuilds the UI
iohr-preview ui devThe UI's dev server, which reloads as you edit
iohr-preview ui checkTypes, lint and tests

The same are mise run ui:build, ui:dev and ui:check in the checkout.

What you see

  • The header says InOrbit and has an Extensions menu.
  • The sidebar has Home and an Extensions section: every installed extension that declares a panel. With none, it says "No installed extension declares a panel." ⌘\ (Ctrl+\ elsewhere) hides and shows it.
  • Home is marked Stub. It shows the frame and tells you how to use it; it has no content of its own yet.
  • An extension's page has a Start button. Its panel then runs inside the page, in a sandboxed frame. Right-click an extension in the sidebar for Start (or Open, once it runs) and Stop.
  • Details opens a dock on the right with what the extension's listing says about it. You can resize the dock.

Install an extension that has a panel with iohr ext install; see Extensions.

What it serves and what it refuses

  • This machine only. It listens on loopback, never on another address, and answers only requests addressed to its own address.
  • Reads only. Pages are GET and HEAD. A path cannot leave the UI's folder or follow a link.
  • Its own pages only. The UI's API answers only the pages it served. It lists the installed extensions that declare a panel, and starts or stops a panel only when you ask.
  • Panels start like iohr ext run. The same launch and the same trust check. One copy of each runs at a time, and every panel stops when iohr ui stops.
  • One record while it runs. It writes its address to a private file in your InOrbit data folder, so iohr ui open finds it, and removes it when it stops.

Where it stands

PartState
iohr ui, serve, open, build, dev, checkIn iohr-preview, not released
The window: header, sidebar, menus, dock, extension pagesIn iohr-preview
Starting and stopping a panelIn iohr-preview
HomeA stub
Serving from any folder, without a checkoutIn progress, not in any build
The UI shipped with the release and iohr upgradePlanned, not in any build

Work in progress lets iohr ui serve from any folder: a new iohr ui install puts a built UI in your InOrbit data folder, the preview install builds and installs it too, and a missing UI ends with exit code 1 and names the fixes. Until that lands, use a checkout as above.

iohr released (0.1.0-alpha.39) does not have iohr ui.