local-operator-ui

中文文档
0.48.11发布于 2026/11/04MITCommonJS构建来源已验证

User interface for AI agent assistants that run Python code safely on your device through an intuitive chat interface. Supports local and cloud LLM models with built-in security features.

原始使用文档
文档目录25 节
  1. Getting started
  2. Prerequisites
  3. Run with npx
  4. Install with npm
  5. Desktop applications
  6. What it looks like
  7. Chat and agents
  8. Subagents
  9. Teams
  10. Media in a conversation
  11. Agent hub
  12. Schedules
  13. Projects
  14. Appearance
  15. Features
  16. Project structure
  17. Building from source
  18. Python bundling
  19. Code signing and notarization
  20. Contributing
  21. Troubleshooting
  22. Common issues
  23. Getting help
  24. Credits
  25. License
Shows a black Local Operator Logo in light color mode and a white one in dark color mode.

Local Operator

AI agent assistants on your device — they plan, write, and run Python, and every step stays in the conversation.

Latest release CI status npm version License: MIT Platforms: macOS, Windows, and Linux


The app's chat view: an agent's reply, the run details panel with two subagents running, and their shared to-do list.
the app at work — a conversation with an agent, two subagents running beside it, and the to-do list they share.


Local Operator runs AI agent assistants on your own machine, from a desktop chat app. You give an agent a goal; it plans the work, writes and runs Python on your device, reads and writes files, and asks before it takes anything risky. The whole run — messages, tool calls, commands, and results — stays in the conversation in front of you.

For the agent environment CLI and server backend, see the Local Operator repository.

Agent backend • Website • Examples

Getting started

Prerequisites

  • Node.js 22.13.1 or newer, for the npm install paths below. nvm is a good way to manage Node versions. The desktop installers need no toolchain.

Run with npx

# Download and run in one command
npx local-operator-ui

This runs the latest version and launches the app.

Install with npm

# Install globally
npm install -g local-operator-ui

# Run the application
local-operator-ui

Desktop applications

Prebuilt apps are on the download page and the releases page:

  • macOS: Download the .dmg (or .zip) and open it.
  • Windows: Download the .exe installer and follow the installation prompts.
  • Linux: Download the .deb, .rpm, or .AppImage for your distribution.

The Local Operator backend is bundled with the application and is installed automatically on first run. If you already have a Local Operator backend installed, the application detects it and uses it instead; by default it connects to the backend API at http://localhost:1111.

What it looks like

Chat and agents

LightDark
Light theme: a conversation showing tool rows, a blocked risky action, and a question the agent asked.Dark theme: the same conversation.

chat — a working agent's tool rows, a blocked risky action, and the question it asked before continuing.

Subagents

LightDark
Light theme: the run details panel, two subagents running with their elapsed time and cost, a third child queued behind the capacity gate, and the shared to-do list.Dark theme: the same run details panel.

subagents — two helpers working one request, each with its own elapsed time, context use and cost, and the next child queued behind the capacity gate.

Teams

LightDark
Light theme: the agents and teams page, with the release-crew roster: its manager agent, members and collaboration instructions.Dark theme: the same teams page.

teams — agents grouped under a manager, with a roster, collaboration instructions and a project brief.

Media in a conversation

LightDark
Light theme: a conversation holding a pasted chart and a bar chart the agent plotted, rendered under the tool row that made it.Dark theme: the same conversation.

media — a chart pasted in by hand and one the agent plotted, both rendered inline in the transcript.

Agent hub

LightDark
Light theme: the agent hub with categories and a grid of community agents.Dark theme: the agent hub grid.

agent hub — community agents you can browse and download, by category.

Schedules

LightDark
Light theme: the schedules page, listing scheduled wakes with their cadence and run history.Dark theme: the schedules page.

schedules — conversations that wake on a timer, with what ran and when they run next.

Projects

LightDark
Light theme: the projects board with active, paused, and done columns.Dark theme: the projects board.

projects — workstreams you and your agents track across sessions, as a board or a timeline.

Appearance

LightDark
Light theme: the appearance picker showing the Local Operator themes as swatches.Dark theme: the appearance picker.

appearance — 59 colour themes ship with the app; Local Operator Dark is the default.

Features

  • Chat with agents — real-time conversation with markdown rendering for code blocks and formatted text, syntax highlighting, and per-conversation history.
  • Agent management — create, update, and delete agents, and configure their settings: model and description (general), temperature and top_p (chat), and security prompt and execution permissions (security).
  • Settings — system prompt configuration, API credentials management, and application configuration in one place.
  • Local Operator API integration — the app talks to the Local Operator backend API and shows real-time status updates for long-running operations.
  • Bundled backend — the Local Operator backend is installed automatically on first run on every platform; an existing backend installation is detected and used instead.

Project structure

The codebase is organized for modularity and code reuse:

  • src/renderer/src/shared/: Contains all shared code, including components, hooks, stores, configuration, themes, and utilities. Use the @shared/ path alias for imports.
  • src/renderer/src/features/: Contains feature-specific code for the UI, organized by domain.
  • src/renderer/src/app.tsx, main.tsx, etc.: Entry points for the Electron renderer process.
  • build/, resources/, scripts/: Build assets, static resources, and build scripts.

Import conventions:

  • Use @shared/ for shared modules (e.g., import { useAgents } from "@shared/hooks/use-agents").
  • Use @features/ for feature-specific modules.
  • The build also resolves the older aliases (@renderer, @components, @hooks, etc.) for the files that still import them.

For more details on building or contributing, see the Contributing Guide and BUILD.md.

Building from source

If you want to build the application from source, see the BUILD.md file for detailed instructions.

Python bundling

For macOS builds, the app bundles a standalone Python directly instead of requiring a Homebrew installation. This approach:

  • Needs no admin privileges during installation
  • Keeps the application self-contained
  • Works offline
  • Supports installing Python packages with pip

To set up the standalone Python for development:

# Run the setup script to download and configure standalone Python
pnpm setup-python-standalone

This uses python-build-standalone, the same approach used by Datasette Desktop and PyOxidizer.

For more details, see the PYTHON_BUNDLING.md documentation.

Code signing and notarization

All desktop applications are code signed and notarized to ensure security and trust:

  • macOS: Applications are signed with an Apple Developer ID and notarized with Apple's notarization service
  • Windows: Applications are signed with a trusted code signing certificate
  • Linux: While code signing is less common on Linux, packages are built with integrity checks

For detailed information about the code signing and notarization process, see the CODE_SIGNING.md document.

Contributing

Contributions are welcome! Please see our Contributing Guide for details on how to get started with development, code style guidelines, and our contribution process.

Troubleshooting

Common issues

Application fails to connect to the backend

  • The application will automatically install and start the Local Operator backend if it's not already running
  • If you have an existing backend running on http://localhost:1111, the application will use that instead
  • Check that the VITE_LOCAL_OPERATOR_API_URL environment variable has not been set to a different URL. This value is set automatically to http://localhost:1111 if a custom .env doesn't specify otherwise
  • If you want to disable the automatic backend management, set the VITE_DISABLE_BACKEND_MANAGER environment variable to true
  • Verify network connectivity between the UI and the backend

Backend installation fails

  • Check the application logs for error messages
  • For macOS, the application uses a bundled Python framework instead of requiring Homebrew and pyenv
  • If you encounter issues with the bundled Python, see the PYTHON_BUNDLING.md documentation
  • As a fallback, you can try installing the backend manually with pip install local-operator and then start it with local-operator serve

Development server crashes

  • Check the console for error messages
  • Ensure all dependencies are installed correctly
  • Try clearing the node_modules folder and reinstalling dependencies

UI rendering issues

  • Check for console errors in the developer tools
  • Ensure you're using a compatible version of Node.js
  • Try restarting the development server

The window came to the front on its own, or a run never appeared

Every time the app brings a window to the front it writes one line to its own backend log (~/Library/Application Support/Local Operator/logs/backend-service.log on macOS; the LOCAL_OPERATOR_LOG_DIR environment variable moves it):

[window-raise] trigger=second-instance mode=normal requested=focus pid=9182 cwd=/Users/you/project applied=restore+show+focus

trigger names what asked: initial-present (the app starting up), second-instance (a second launch sharing this profile), banner-click, viewer-focus or viewer-resume. pid and cwd, when they are there, name the process that asked — that is the one to stop if something keeps doing it. A run that raises nothing writes nothing, so an app that never came forward has no line at all — although a conversation that is WAITING for a window does: a headless launch against an app with no window open writes applied=parked, parked=<id> rather than a raise, and that conversation opens the next window you give the app. In the line above, mode is the window mode the raise ran under and applied is what it actually did.

A second launch only brings the window as far as IT asked: a headless run never raises it (it can still load the conversation it names), an inactive one orders the window without activating the app and without pulling it back out of the Dock, and a launch that declares nothing — you double-clicking the app while it is already running — still comes to the front.

Getting help

If you encounter issues not covered here, please:

  1. Check the GitHub Issues for similar problems
  2. Open a new issue if your problem hasn't been reported

Credits

Some general style and interaction UX here is inspired by deepseek-harness (dsh).

License

This project is licensed under the MIT License — see the LICENSE file for details. It is open source because AI tools should be accessible to everyone, and your contributions and feedback help make that real.

版本与发布记录

local-operator-ui 共发布 427 个版本,首次发布于 2025/03/09;过去 12 个月发布了 351 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.48.11latest2026/11/04今天
0.48.102026/11/041 天前
0.48.92026/11/041 天前
0.48.82026/11/031 天前
0.48.72026/11/031 天前
0.48.62026/11/031 天前

其他发布通道:beta → 0.1.0-beta.1。

关于 local-operator-ui 的常见问题

local-operator-ui 是什么?

User interface for AI agent assistants that run Python code safely on your device through an intuitive chat interface. Supports local and cloud LLM models with built-in security features.

如何安装 local-operator-ui?

在项目目录运行 npm install local-operator-ui,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:react(>=18.0.0)、react-dom(>=18.0.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。它还提供命令行工具 local-operator-ui,可以用 npx local-operator-ui 直接运行。

local-operator-ui 支持 TypeScript 吗?

该包的 package.json 没有声明类型入口。需要类型提示时,可以在 npm 上查找社区维护的 @types/local-operator-ui 是否存在。

local-operator-ui 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

local-operator-ui 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=22.13.1。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

local-operator-ui 可以商用吗?

local-operator-ui 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

local-operator-ui 还在维护吗?

最新版本 0.48.11 发布于 2026/11/04(今天);至今共发布 427 个版本,其中过去 12 个月发布了 351 个;首次发布于 2025/03/09。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。