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.
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
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:
| Extra | Adds |
|---|---|
server | The HTTP API server (lop serve) and the background scheduler |
mcp | Model Context Protocol client support |
images | HEIC/HEIF image attachment decoding |
tokenizer | Exact BPE token counting (estimated otherwise) |
fetch | Markdownify renderer for web_fetch |
lsp | Jedi-backed Python navigation for the lsp tool |
all | Every 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):
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
docker compose up -d # with the provided compose file
nix develop # reproducible dev shell via the flake
Verify the install
lop --version
lop login # list the providers you can sign in to