Research subject: github.com/andrewyng/openworker | Snapshot date: 2026-07-25 | Status: Beta | License: MIT
Method: five parallel research sub-agents (basics / architecture / feature boundaries / competitors / security practice), with source verified via GitHub raw + API tree.
Summary
OpenWorker is Andrew Ng's open-source desktop AI agent, pitched as "deliver finished products, not answers; local-first; any model; approval check-ins." Verification across five tracks: the project is real, the architecture is clean, and the local-first promise is largely kept. However, the "2.7K stars" figure in early coverage is outdated (live count: 3,461), and claims of "built-in role templates" are exaggerated—the source contains only one ops persona. It fills the gap of an "open-source desktop coworker" and is a strong choice for privacy-sensitive users and developers, though the unsigned Windows build, unstable local models, and several open security issues warrant caution.
Key Points
- Project basics: 3,461 stars / 463 forks / 90 open issues (GitHub API, 2026-07-25). Repo created 2026-07-20, first commit 2026-07-22, ~46 commits, MIT license. Owner is andrewyng (1 direct commit); the engineering lead is Rohit Prasad (rohitprasad15, 47 commits). The project grew out of the platform/ directory of Andrew Ng's aisuite library.
- Architecture (three layers): 1. Native shell + GUI:
- Agent loop:
TurnEngineinengine.pyruns multi-iteration model↔tool turns (default max 12); low-risk tools run concurrently, others serially. - Model routing:
ProviderRouterinproviders/router.pydispatches byprovider:prefix (e.g.,ollama:llama3.3→ Ollama, bare name → default OpenAI), with lazy build + caching. Supports OpenAI / Anthropic / Gemini / DeepSeek / Kimi / Qwen / Mistral / Grok / Thinking Machines / GLM (Z.ai) / MiniMax + local Ollama + Together / Fireworks open-weight models. - Connectors: 46 descriptors in
descriptors.py(5 disabled placeholders); README names 14, all present. Categories: messaging (Slack, Gmail, Outlook, Telegram, IMAP Email, Discord, WhatsApp), dev/PM (GitHub, GitLab, Jira, Linear, Asana, monday.com, ClickUp, Confluence), CRM (HubSpot, Attio, Close, Apollo, Hunter, Zendesk), files/docs (Google Drive, Dropbox, Box, Notion, Canva, Figma, DocuSign), data/analytics (PostHog, Mixpanel, Amplitude, read-only Stripe, QuickBooks), plus Browser automation and MCP protocol. Terminal and local files are built-in tools, not connectors. - "Role templates" — mostly fiction: tree search for role/template/preset/character returns zero hits; only one built-in persona exists (
personas/builtin/ops.md). The four scenario examples on the website are gallery prompts, not templates. - Approval model:
permissions.py+risk.pydefine four RiskClasses (READ always allowed / WRITE_LOCAL / EXEC / EXTERNAL). Modes: DISCUSS/PLAN (read-only), INTERACTIVE (default: reads auto-approved, writes/commands/external require approval), AUTO, CUSTOM. Allowlists use shlex token-level prefix matching; shell operators (;,&,|,>, backticks, etc.) always escalate to human. Unattended EXTERNAL requests park in an inbox. - Deliverables & Slack trigger: outputs (documents, spreadsheets, reports, web pages) land as workspace files viewable in the GUI Artifacts panel. @-mentioning OpenWorker in Slack opens a desktop session, executes with your tools, and replies in-thread.
- OAuth broker: the cloud broker only relays OAuth handshakes (auth code, redirect_uri, GitHub/Slack routing); connector tokens never touch cloud storage and land in the local SecretStore (
~/.config/coworker/secrets.json, POSIX 0600/0700, Windows ACLs, atomic writes). Only off-machine data: login session metadata + anonymous telemetry (explicitly excluding prompts/outputs/tool args/connector content). - Bypass risk: AUTO/CUSTOM modes and session allows can skip individual approvals, but writes stay confined under writable roots, and EXEC rules never persist into task-resident permissions. Unattended EXTERNAL requests queue in the inbox.
- Known open security issues: #100 web_fetch lacks SSRF protection (private-network access, follows redirects, no approval); #99 Tauri CSP disabled (
csp:null), amplifying XSS into local API/tool access; #81 stdio MCP servers gain network capability before the approval gate. All pending fixes in Beta. - Build deps: Python 3.10+ and Node 20+ required; Rust toolchain only for the Tauri desktop shell (server + browser UI work without it).
- Windows: unsigned builds trigger SmartScreen (More info → Run anyway); installer issues reported in #87. Windows packages exist despite the macOS-first impression.
- Ollama: officially supported but connectivity is flaky (#57, #62).
- Other issues: #96 Gmail/Calendar connection failures, #89 HubSpot acceptable-use policy requirement, #94 Linear missing update/comment tools, #105 model switching broken, #95 unmovable Mac window.
- Disambiguation: articles about "OpenWork/OpenClaw" refer to different-ai/openwork (OpenCode lineage) — a different project from andrewyng/openworker.
- Name: OpenWorker
- Team: Andrew Ng (andrewyng) + Rohit Prasad et al., spun out of aisuite
- Repo: https://github.com/andrewyng/openworker
- Website: https://openworker.com/
- License: MIT
- Status: Beta (2026-07-25, 46 commits, 3,461 stars)
surfaces/gui/ (React + Tauri) supervising a local Python server.
2. Local agent server: coworker/ (Python, built on aisuite) — agent engine, model providers, connectors, MCP client, memory, automations.
3. Your data layer: local files & terminal, 25+ connectors, any model — all running locally with your own keys.
Competitive Landscape
| Competitor | Local-first | Approval model | Connectors/MCP | Model freedom | Open source | Pricing | |---|---|---|---|---|---|---| | OpenWorker | Yes (only OAuth broker touches cloud) | Interactive check-in, inbox when unattended | 25+ (46 descriptors) + MCP per-tool | BYO key + local Ollama | MIT | Free + your tokens | | Claude Cowork | Hybrid (cloud inference) | Major-action approval | Connectors + Skills + MCP | Claude only | No | $20–200/mo | | Trae (ByteDance) | Cloud execution | Checkpoint confirmation | Lark + Skills + MCP | Doubao-led | No | Free (personal) | | WorkBuddy (Tencent) | Local execution | Permission isolation + confirmation | 20+ skills incl. WeChat/WeCom | Hunyuan/DeepSeek/GLM | No | Free (personal) | | Claude Code | Local terminal, cloud inference | Approve before edits | CLI + MCP | Claude only | No | $20–200/mo | | Cursor | Local editor, cloud inference | Agent mode | MCP/skills/hooks | Multi-vendor via router | No | $20–200/mo | | Manus | Pure cloud VM | Autonomous unattended | Cloud tools | Locked | No | Rumored $39–199 | | OpenHands | Self-hosted sandbox / cloud | RBAC + sandbox | 70+ | 100+ LLMs + Ollama | MIT | OSS + commercial |
Differentiation: OpenWorker is the only desktop agent combining local-first + MIT open source + any-model/local-Ollama freedom. Its typed risk classification is a real safety default, not UI decoration. Weaknesses: macOS-first, unsigned Windows build, BYO key + local Python server setup burden.
Security & Privacy
Practical Gotchas
Verdict
Worth watching: the local-first + MIT + any-model combination is genuinely rare among desktop agents; the deliver-finished-products philosophy is well implemented; risk-tiered approvals are more disciplined than most closed products' full-autonomy stance.
Risks: early Beta, open security issues (SSRF/CSP), weaker Windows experience, unstable local models, inflated role-template marketing.
Use it if: you want data to stay local, are comfortable supplying your own keys, and can tolerate Beta roughness (developers, operators, privacy-sensitive teams).
Wait if: you are non-technical, run Windows in production, or need out-of-the-box polish — closed products like WorkBuddy or Trae are smoother today.
---