---
schema_version: "newruntime-agent-readable-v0.2"
type: "post"
stable_id: "post:openworker-local-desktop-coworker"
slug: "openworker-local-desktop-coworker"
title: "OpenWorker Brings The Coworker Agent Back To The Desktop"
description: "OpenWorker is an open-source local-first desktop coworker that works across files, tools, connectors, and models while keeping consequential actions approval-gated."
retrieval_nugget: "OpenWorker is an open-source local-first desktop coworker that works across files, tools, connectors, and models while keeping consequential actions approval-gated. #OpenWorker #DesktopAgents #LocalFirstAI #Automation OpenWorker is interesting not as another chatbot, but as the return of the agent to the desktop."
status: "published"
published_at: "2026-07-31"
updated_at: "2026-08-01"
record_date: "2026-08-01"
date_kind: "updated_at"
topics: ["desktop-agents","local-first-ai","connectors","workflow-automation"]
source_urls: ["https://github.com/andrewyng/openworker"]
visuals: [{"id":"openworker-local-desktop-coworker","kind":"editorial-diagram","role":"hero","src":"https://newruntime.com/images/posts/openworker-local-desktop-coworker.webp","alt":"A whiteboard diagram showing a local desktop app, local Python agent server, files, tools, connectors, model providers, approval gates, and finished deliverables.","caption":"OpenWorker is framed as a local-first coworker: desktop app plus local agent server, connectors, model choice, approval gates, and finished artifacts.","credit":"New Runtime synthesis from OpenWorker repository","source_url":"https://github.com/andrewyng/openworker","generated_with":"gemini-3.1-flash-image","width":1600,"height":900,"legend":[{"label":"Local shell","description":"The desktop app and agent server run on the user's machine."},{"label":"Connectors","description":"Files, terminal, calendars, Slack, Jira, GitHub, and MCP tools become work surfaces."},{"label":"Approval gate","description":"Consequential sends, writes, and commands ask before acting."}]}]
telegram_message_id: 2858
telegram_url: "https://t.me/qwgai/2858"
telegram_message_ids: [2858]
telegram_delivery_mode: "rich_media"
telegram_media_url: "https://t.me/qwgai/2858"
routes: {"html":"https://newruntime.com/posts/openworker-local-desktop-coworker/","markdown":"https://newruntime.com/posts/openworker-local-desktop-coworker.md","json":"https://newruntime.com/posts/openworker-local-desktop-coworker.json"}
source_format: "markdown"
---

# OpenWorker Brings The Coworker Agent Back To The Desktop

## Retrieval answer

OpenWorker is an open-source local-first desktop coworker that works across files, tools, connectors, and models while keeping consequential actions approval-gated. #OpenWorker #DesktopAgents #LocalFirstAI #Automation OpenWorker is interesting not as another chatbot, but as the return of the agent to the desktop.

#OpenWorker #DesktopAgents #LocalFirstAI #Automation

OpenWorker is interesting not as another chatbot, but as the return of the agent to the desktop. The README states the position sharply: the agent should deliver finished work - a document, Slack reply, calendar change, or triaged inbox - rather than a task list for the user.

The architecture is local-first: a desktop app, a local Python agent server, your files, terminal, 25+ connectors, and the model you choose. You can bring keys for OpenAI, Anthropic, Google, or open-weight providers, or go local through Ollama. The important boundary is that data leaves the machine only through the selected models and integrations.

Running from source:

```bash
git clone https://github.com/andrewyng/openworker
cd openworker
bash packaging/setup_dev_env.sh
.venv/bin/openworker-server --cwd ~/some/project --port 8765
cd surfaces/gui
npm install
npm run dev
```

The main engineering detail is the approval gate. OpenWorker asks for confirmation before sends, calendar changes, and shell commands. That is exactly the level where an "agentic OS" stops being magic and becomes a local runtime with permissions, state, and receipts.
