diff --git a/README.md b/README.md
index 2874e22f..dc933832 100644
--- a/README.md
+++ b/README.md
@@ -4,9 +4,7 @@
> **Beta** - OpenWorker is in open beta: fully usable, updates itself, and we're actively polishing rough edges. [Issues](https://github.com/andrewyng/openworker/issues) welcome.
-OpenWorker is an open-source AI coworker that delivers **finished work**, not just chat: a polished document, a Slack reply with the numbers, an updated calendar, a triaged inbox.
-
-Ask it to prepare a customer brief, untangle your week, draft a report, or check where a release stands across Jira and GitHub. It works across your files and everyday tools, produces the deliverable, and **checks in before doing anything consequential**.
+**AI that gets your everyday tasks done.** OpenWorker is an open-source AI coworker that lives on your desktop and delivers **finished work**, not just chat: a polished document, a Slack reply with the numbers, an updated calendar, a triaged inbox.
It runs on your machine and doesn't lock you into any model: bring your own API key for OpenAI, Anthropic, Google, or an open-weight provider, or run fully local with Ollama. Your data leaves your machine only through the model and integrations *you* choose.
@@ -14,32 +12,23 @@ It runs on your machine and doesn't lock you into any model: bring your own API
## Download
-[**⬇ macOS (Apple Silicon)**](https://github.com/andrewyng/openworker/releases/latest/download/OpenWorker-macos-arm64.dmg)
+[**⬇ macOS (Apple Silicon)**](https://download.openworker.com/mac)
macOS 12+ · signed & notarized · auto-updates
-[**⬇ Windows 10/11 (x64)**](https://github.com/andrewyng/openworker/releases/latest/download/OpenWorker-windows-setup.exe)
+[**⬇ Windows 10/11 (x64)**](https://download.openworker.com/windows)
builds are not yet code-signed, so SmartScreen will warn; signing is in progress
Open the app, add a model key (or point it at Ollama), and ask for something real.
-## What it can do
-
-- **Produce real deliverables** - documents, spreadsheets, reports, and web pages land as files you can open and share, not text in a chat window.
-- **Work from Slack** - mention `@OpenWorker` in a channel; a session opens on your desktop, the work happens with your tools, and the answer comes back as a thread reply.
-- **Use your everyday tools** - 25+ integrations including GitHub, Slack, Jira, Notion, Linear, HubSpot, Outlook, monday.com, Gmail, and Google Calendar, plus your **terminal and local files**. Remote MCP servers plug in too, with per-tool control.
-- **Run on a schedule** - automations for recurring work: a morning brief, a weekly report, a standing watch over a channel. Runs land in the app with full transcripts.
-- **Ask before acting** - writes, sends, and shell commands are approval-gated. Unattended runs park their asks in an inbox instead of acting on their own.
-
-## Bring your own model
-
-Model access is yours: pick a provider, paste your key, switch anytime. Supported out of the box:
-
-**OpenAI · Anthropic · Google Gemini · GLM (Z.ai) · DeepSeek · Kimi (Moonshot) · Qwen · MiniMax · Mistral · Grok (xAI)** - plus open-weight models via **Together** and **Fireworks**, and fully local models via **Ollama**.
-
-A curated model list marks what we've verified for tool-calling work; any model string works at your own risk. Keys are stored locally and are only ever sent to the vendor they belong to.
-
## How it works
+1. Tell OpenWorker the outcome you want - "prepare a customer brief," "untangle my calendar," "draft a report," "check where the release stands across Jira and GitHub."
+2. It breaks the task into steps and works across your desktop, files, and connected apps.
+3. Before anything consequential - sending a message, changing a calendar, running a command - it checks in and you approve or redirect.
+4. You get the finished deliverable, not a to-do list.
+
+Under the hood:
+
```text
┌────────────────────────────────────────────────┐
│ OpenWorker desktop app │ native shell + GUI
@@ -51,23 +40,62 @@ A curated model list marks what we've verified for tool-calling work; any model
└───────────────┴────────────────┴───────────────┘
```
-Everything lives on your machine: the agent loop, your conversations, connector tokens, and model keys. A small cloud service exists only to make connector OAuth one-click; the tokens it brokers are handed straight back to your device and stored locally. No account is required: every connector also accepts manually-created credentials, and the app is fully usable signed out.
+## What it can do
+
+- **Produce real deliverables** - documents, spreadsheets, reports, and web pages land as files you can open and share.
+- **Work from Slack** - mention `@OpenWorker` in a channel; a session opens on your desktop, the work happens with your tools, and the answer comes back as a thread reply.
+- **Use your everyday tools** - 25+ integrations including GitHub, Slack, Jira, Notion, Linear, HubSpot, Outlook, monday.com, Gmail, and Google Calendar, plus your **terminal and local files**. Any tool reachable over [MCP](https://modelcontextprotocol.io/) plugs in too, with per-tool control.
+- **Run on a schedule** - automations for recurring work: a morning brief, a weekly report, a standing watch over a channel. Runs land in the app with full transcripts.
+- **Ask before acting** - writes, sends, and shell commands are approval-gated. Unattended runs park their asks in an inbox instead of acting on their own.
+
+## Bring your own model
+
+Model access is yours: pick a provider, paste your key, switch anytime. Supported out of the box:
+
+**OpenAI · Anthropic · Google Gemini · Inkling (Thinking Machines) · GLM (Z.ai) · DeepSeek · Kimi (Moonshot) · Qwen · MiniMax · Mistral · Grok (xAI)** - plus open-weight models via **Together** and **Fireworks**, and fully local models via **Ollama**.
+
+A curated model list marks what we've verified for tool-calling work. Adding any model string works at your own risk.
+
+## Privacy
+
+OpenWorker is local-first. Everything lives on your machine: the agent loop, your conversations, connector tokens, and model keys - all in the app's local secret store. The only cloud piece is a small service that brokers OAuth handshakes for connectors. You can always use the App without signing-in - use the connectors via manually-created credentials/API-keys.
## Run from source
+Prerequisites: Python 3.10+, Node 20+, and (for the desktop shell) the Rust toolchain via [rustup](https://rustup.rs/).
+
```shell
git clone https://github.com/andrewyng/openworker
cd openworker
-bash packaging/setup_dev_env.sh # creates .venv and installs the package
-# terminal 1 - the local agent server
+# 1. One-time bootstrap - creates the Python venv at .venv
+# (on Windows, run from Git Bash or WSL)
+bash packaging/setup_dev_env.sh
+
+# 2. Start the local agent server
.venv/bin/openworker-server --cwd ~/some/project --port 8765
+# (Windows: .venv\Scripts\openworker-server.exe)
-# terminal 2 - the GUI (browser dev mode)
-cd surfaces/gui && npm install && npm run dev
+# 3. In a second terminal, start the UI
+cd surfaces/gui
+npm install
+npm run dev # browser UI on the Vite dev port
```
-Tests: `.venv/bin/pytest` (server), `npm test` and `npm run e2e` in `surfaces/gui` (GUI unit + hermetic end-to-end). Desktop bundles are built with `packaging/build_dmg.sh` / `packaging/build_windows.ps1`. Design notes and specs live in [`docs/`](docs/).
+To run the full desktop app instead of the browser UI, replace step 3 with `npm run tauri dev` (from `surfaces/gui/`) - the Tauri shell launches the window and supervises the server itself.
+
+Tests: `.venv/bin/pytest` (server), `npm test` and `npm run e2e` in `surfaces/gui` (GUI unit + hermetic end-to-end). Desktop bundles are built with `packaging/build_dmg.sh` / `packaging/build_windows.ps1`.
+
+## Repository layout
+
+| Directory | What's in it |
+|---|---|
+| `coworker/` | Python backend - agent engine, model providers, connectors, MCP client, memory, automations |
+| `surfaces/gui/` | Desktop app - React UI + Tauri shell that supervises the server |
+| `stt/` | Speech-to-text sidecar (Rust) for voice input |
+| `packaging/` | Installer builds (macOS DMG, Windows), auto-update manifest, dev bootstrap |
+| `docs/` | Design specs and decision logs |
+| `tests/` | Backend test suite |
## Built on aisuite
@@ -75,6 +103,12 @@ OpenWorker's engine is built on [**aisuite**](https://github.com/andrewyng/aisui
OpenWorker was originally developed inside the aisuite repository before moving to its own home here; thanks to the aisuite contributors whose work it builds on.
+## Contributing
+
+Contributions and bug reports are welcome - open an [issue](https://github.com/andrewyng/openworker/issues) or a pull request. The app updates itself, so fixes reach installs quickly.
+For any PR, please attach screenshots of what was broken and how it is fixed now. We will shortly add features that you can contribute to.
+Please note that we are actively developing based off a internal list and goal, so we may not approve PRs that add features that are already under-development or deviates from our vision.
+
## License
-MIT - see [LICENSE](LICENSE). Contributions and bug reports are welcome; the app updates itself, so fixes reach installs quickly.
+MIT - see [LICENSE](LICENSE).