Skip to content
Local OperatorDocs

Install & first run

Local Operator installs three ways that share one runtime: the terminal runtime (a Python package), the desktop app (a bundled build of the same runtime), and container / Nix paths for the rest. Pick the surface you want to drive it from; you can add another later without losing sessions.

Note:

The runtime needs Python 3.12 or newer. On systems with an externally-managed Python (Debian/Ubuntu, Homebrew), use pipx or uv instead of pip.

#

Terminal runtime

bash
pip install local-operator

The install provides two equivalent entry points: lop (used throughout these docs) and local-operator.

Optional features live behind extras. pip install "local-operator[all]" brings every extra listed below:

ExtraAdds
serverThe HTTP API server (lop serve) and the background scheduler
mcpModel Context Protocol client support
imagesHEIC/HEIF image attachment decoding
tokenizerExact BPE token counting (estimated otherwise)
fetchMarkdownify renderer for web_fetch
lspJedi-backed Python navigation for the lsp tool
allEvery extra above, lsp included

If a feature's extra is missing, the agent tells you which one to install instead of failing with an import error.

#

Desktop app

The desktop build for macOS, Windows and Linux ships its own backend and uses an existing Local Operator install when it finds one — a separate lop install is optional. Grab the installer from the downloads page, or run it from a terminal (Node.js 22.13.1 or newer):

bash
npx local-operator-ui              # download and run in one command
npm install -g local-operator-ui   # or install it globally

The desktop app guide covers the app in full — what it adds on top of the runtime, and how the two work together.

#

Docker and Nix

bash
docker compose up -d      # with the provided compose file
nix develop               # reproducible dev shell via the flake
#

Verify the install

bash
lop --version
lop login                 # list the providers you can sign in to