Full Nori A3 docs coming soon. What works today.
Skip to content

Install the desktop app

The Nori desktop app bundles everything needed to talk to robot hardware — no Python, no terminal, no pip. Download it, drag it in, open it.

Installers are not available yet

There is no signed installer for macOS, Windows, or Linux yet. Until there is, run from source.

What the app actually does when it starts

Worth knowing, because most "the app won't open" reports are one of these steps failing:

  1. It spawns a frozen Python backend bundled inside the app, which serves the API and UI on 127.0.0.1:8000.
  2. It waits for that port to answer (up to 60 s).
  3. It opens a window pointing at it.

So the app is a local web app in a native window. If port 8000 is already in use by something else, that's a problem — see When it goes wrong below.

Run from source

Requires Python ≥ 3.12 and Node.

bash
git clone https://github.com/nori-robotics/NoriLeLab
cd NoriLeLab
pip install -e .
lelab            # serves API + UI on :8000 and opens a browser

For frontend development, lelab --dev runs Vite on :8080 against a reloading backend on :8000.

When it goes wrong

The window is blank, or the app quits on launch

The backend never came up on :8000. After 60 seconds of waiting, the app gives up.

The usual cause: something else is already using port 8000. Another copy of the app, a stray lelab process from a previous run, or an unrelated dev server.

Check what's holding the port:

bash
lsof -i :8000        # macOS / Linux
netstat -ano | findstr :8000   # Windows

Kill it, then relaunch.

The OS refuses to open the app

If the build isn't signed and notarized yet, macOS Gatekeeper and Windows SmartScreen will both block it.

A stray backend keeps running after I quit

It shouldn't. The app kills the backend child on window-destroyed and on app-exit, and the backend additionally self-exits if its parent dies. All three exit paths are covered.

If you still find an orphan on :8000, that's a bug worth reporting — tell us how you quit.

The app can't see my hardware

That's not a desktop-app problem — go to Leader arms.

Apache-2.0