andrewyng/openworker
Productivity & UtilitiesA local-first desktop AI coworker with an SDK for building agentic apps, bringing your own models and approval-gated tools.
What it is
OpenWorker has two parts: a Desktop App that acts as an AI coworker on your machine, and a Harness SDK for embedding agent capabilities into your own desktop or web apps. The desktop app handles research, writing, code review and cross-tool tasks, connecting to GitHub, Slack, email and calendars, with additional tools via MCP. Agents are approval-gated by default, and a set of irreversible operations always require a human decision regardless of automation mode.
The desktop engine is a Python local agent server built on aisuite; the SDK ships a separate Rust runtime plus Rust/TypeScript bindings that cover the agent loop, tool calls, streaming and durable sessions. The app is local-first: conversations, connector tokens and model keys stay on your machine, with the only cloud piece being an OAuth broker for connectors.
Install and first task
Download the build for your platform: macOS (Apple Silicon) requires macOS 12+ and is signed and notarized; Windows 10/11 x64 builds are not yet code-signed, so SmartScreen will warn. After opening the app, go to Settings → Models & Keys and connect a cloud provider (OpenAI, Anthropic, Gemini, OpenRouter) or a local model through Ollama, LM Studio, llama.cpp or vLLM; provider options are in the model setup guide.
Then grant a session access to a folder with a few text or Markdown notes and paste a request such as:
Read the meeting notes in this folder. Create a one-page brief with the key decisions, open questions and next steps. Save it as
brief.md. Leave the original notes unchanged and ask before writing the brief.
Watch the tool activity, approve the proposed write, then review brief.md in the folder. The request can be refined in the same session.
To build with the SDK instead, install @openworkerai/harness-sdk from npm and follow the Harness SDK README or the desktop and web guides.
Run from source
The repository needs Python 3.10+, Node 20+ and, for the desktop shell, the Rust toolchain via rustup. Bootstrap the virtualenv, start the local agent server, then start the Vite UI in a second terminal:
git clone https://github.com/andrewyng/openworker
cd openworker
bash packaging/setup_dev_env.sh # Windows: run from Git Bash or WSL
.venv/bin/python -m coworker.server.run --cwd ~/some/project --port 8765
cd surfaces/gui && npm install && npm run dev
For the full desktop window, replace the last step with npm run tauri dev. The standalone server writes a per-launch token to <state-dir>/sidecar-8765.token, which Vite reads; direct API calls must send it in the X-OpenWorker-Token header. Tests are .venv/bin/pytest for the server and npm test / npm run e2e in surfaces/gui.
Constraints
- The desktop app is in open beta and auto-updates; the Windows build is unsigned for now.
- Supported sandboxing differs by platform: NVIDIA OpenShell Linux containers, the built-in macOS sandbox, or a restricted local Windows account. See the OpenShell docs and the security policy.
- Unattended runs never self-approve, and prompts that reach a sandboxed command cannot escape the box that holds only the session's folders — but reviewer-model verdicts are judgments, not guarantees.
- The app can be used without signing in by supplying connector credentials manually. Licensed under MIT.
HotRepo's take
On 2026-11-14 the project appeared on the GitHub daily Python-language ranking at second place with 94 new stars in the day and 19,160 total stars, while no all-language daily rank was recorded. That is a single snapshot, so it supports attention on that day, not a trend claim. The notable technical fact in the material is the combination of a downloadable desktop app with an in-repo Python backend, Rust SDK and governance model, which makes it more than a landing page for a hosted service.
Written by AI from the project's README, updated . The project's own docs are the source of truth.