{"id":44602691,"url":"https://github.com/aidotnet/opencowork","last_synced_at":"2026-06-26T05:01:28.640Z","repository":{"id":337596384,"uuid":"1154079489","full_name":"AIDotNet/OpenCowork","owner":"AIDotNet","description":"Open Cowork - Opensource Claude Cowork for Windows \u0026 macOS \u0026 Linux. ","archived":false,"fork":false,"pushed_at":"2026-06-24T19:39:20.000Z","size":30385,"stargazers_count":488,"open_issues_count":12,"forks_count":99,"subscribers_count":5,"default_branch":"main","last_synced_at":"2026-06-24T21:14:39.356Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://open-cowork.shop/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AIDotNet.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-02-10T01:46:40.000Z","updated_at":"2026-06-24T19:39:25.000Z","dependencies_parsed_at":"2026-02-15T11:02:53.032Z","dependency_job_id":"8377d98e-c338-4085-8793-06304e5f5722","html_url":"https://github.com/AIDotNet/OpenCowork","commit_stats":null,"previous_names":["aidotnet/opencowork"],"tags_count":122,"template":false,"template_full_name":null,"purl":"pkg:github/AIDotNet/OpenCowork","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AIDotNet%2FOpenCowork","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AIDotNet%2FOpenCowork/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AIDotNet%2FOpenCowork/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AIDotNet%2FOpenCowork/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AIDotNet","download_url":"https://codeload.github.com/AIDotNet/OpenCowork/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AIDotNet%2FOpenCowork/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34803678,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-26T02:00:06.560Z","response_time":106,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-02-14T10:06:34.048Z","updated_at":"2026-06-26T05:01:28.634Z","avatar_url":"https://github.com/AIDotNet.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/AIDotNet/OpenCowork\"\u003e\n    \u003cimg src=\"resources/icon.png\" alt=\"OpenCowork\" width=\"120\" height=\"120\"\u003e\n  \u003c/a\u003e\n  \u003ch1 align=\"center\"\u003eOpenCowork\u003c/h1\u003e\n  \u003cp align=\"center\"\u003e\n    \u003cstrong\u003eOpen-source desktop platform for multi-agent AI collaboration\u003c/strong\u003e\u003cbr\u003e\n    Give AI agents local filesystem access, shell execution, and a rich toolbox — all on your machine.\n  \u003c/p\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"images/image.png\" alt=\"OpenCowork Screenshot\" width=\"800\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"README.zh.md\"\u003e中文文档\u003c/a\u003e •\n  \u003ca href=\"#why-opencowork\"\u003eWhy\u003c/a\u003e •\n  \u003ca href=\"#key-features\"\u003eFeatures\u003c/a\u003e •\n  \u003ca href=\"#architecture\"\u003eArchitecture\u003c/a\u003e •\n  \u003ca href=\"#quick-start\"\u003eQuick Start\u003c/a\u003e •\n  \u003ca href=\"https://open-cowork.dev\"\u003eDocs\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/License-Apache_2.0-green\" alt=\"License\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Version-0.9.118-orange\" alt=\"Version\"\u003e\n  \u003cimg src=\"https://img.shields.io/github/stars/AIDotNet/OpenCoWork?style=social\" alt=\"Stars\"\u003e\n  \u003cimg src=\"https://img.shields.io/github/forks/AIDotNet/OpenCoWork?style=social\" alt=\"Forks\"\u003e\n\u003c/p\u003e\n\n---\n\n## 🚀 Why OpenCowork?\n\nMost AI chat interfaces are isolated from your actual work environment. You spend half the time copy-pasting code, file contents, and terminal output between windows.\n\n**OpenCowork puts the agent on your machine:**\n\n- **Direct filesystem access** — Agents read, write, and edit files in your project with your approval.\n- **Shell execution** — Run commands, check logs, and manage dev servers without leaving the conversation.\n- **Full context awareness** — Agents explore your codebase on their own. No manual context feeding.\n- **Human-in-the-loop** — Transparent tool-call approval keeps you in control at every step.\n\n## ✨ Key Features\n\n### ⚙️ Runtime\n\n- **4-layer Electron architecture** — Main process, Preload bridge, Renderer UI (React 19), and provider-agnostic agent runtime.\n- **TypeScript end-to-end** — Type safety from SQLite through IPC to the UI.\n- **SSH remote support** — Agents operate on remote hosts transparently via SSH with xterm.js terminal integration.\n\n### 🔄 4 Agent Modes\n\nEvery conversation picks the right mode:\n\n| Mode      | Purpose |\n| --------- | ------- |\n| `clarify` | Ask grounded questions, resolve ambiguity, produce a reviewable plan before any code is written. |\n| `cowork`  | Full agent: code search, file I/O, shell, browser, sub-agent delegation, and more. |\n| `code`    | Pair programming — focused code generation and surgical editing with Monaco Editor integration. |\n| `acp`     | Architecture-control lead: clarify, design, decompose, and delegate implementation to sub-agents. |\n\n### 🧰 Tool System\n\n- **File \u0026 Shell** — Read, Write, Edit, Glob, Grep, Bash (local and SSH).\n- **Browser** — Built-in webview with navigate, snapshot, click, type, and content extraction.\n- **Task \u0026 Team** — Decompose work with TaskCreate/TaskUpdate, spawn parallel sub-agents via Task, and orchestrate Agent Teams with TeamCreate/SendMessage/TeamStatus.\n- **Plan Mode** — EnterPlanMode → write plan → ExitPlanMode for structured, reviewable implementation plans.\n- **Goal Tracking** — Create, track, and complete session-level goals with token budgets.\n- **Memory System** — Layered memory: global SOUL.md / USER.md / MEMORY.md and per-project .agents/ overrides.\n- **Cron Agent** — Schedule recurring or one-shot background agent tasks with multi-channel delivery.\n- **MCP Client** — Connect to Model Context Protocol servers (stdio, SSE, streamable-HTTP) and expose active MCP tools directly to the agent.\n- **Skill System** — Install domain-specific skills from the Skills Market; loaded dynamically and surfaced to the agent at runtime.\n- **Custom Extensions** — Build plugins with declarative HTTP tools, sandboxed JS handlers, and custom HTML renderers.\n\n### 💬 8 Messaging Plugins\n\n| Platform          | Support |\n| ----------------- | ------- |\n| Feishu / Lark     | ✅      |\n| DingTalk          | ✅      |\n| Discord           | ✅      |\n| QQ                | ✅      |\n| Telegram          | ✅      |\n| WeCom (WeChat Work) | ✅   |\n| WeChat Official   | ✅      |\n| WhatsApp          | ✅      |\n\n### ⏰ Persistence\n\n- **SQLite** — Messages, sessions, projects, tasks, and plans survive restarts.\n- **Additive schema** — Columns are added when absent; no migration files, no data loss.\n\n### 🌐 Internationalization\n\n13+ languages including English, Chinese, Vietnamese, Turkish, and more — all via i18next.\n\n## 🏗️ Architecture\n\n```\nRenderer (React 19)  ←→  Preload (contextBridge)  ←→  Main Process\n     │                                                      │\n  Agent Loop ─ Tool Registry ─ IPC ──────────→  IPC Handlers\n     │                                              │\n     ├─ File I/O, Grep/Glob, Bash              SQLite (better-sqlite3)\n     ├─ Browser (webview)                       Shell / SSH (node-pty, ssh2)\n     ├─ Sub-Agents \u0026 Teams                      Messaging Plugins\n     ├─ Plan, Goal, Memory                      MCP Client\n     ├─ Skills \u0026 Extensions                     Cron Scheduler\n     └─ MCP Resources                           File System\n```\n\n- **Renderer** — React 19 + Tailwind CSS + Zustand stores. Agent loop runs here, tools execute via IPC.\n- **Preload** — Narrow `contextBridge` API for secure main↔renderer communication.\n- **Main Process** — System access: SQLite, filesystem, shell, SSH, messaging plugins, cron, MCP client.\n- **Agent Runtime** — Provider-agnostic (`js-agent-runtime.ts`), streams responses, handles tool calls.\n\n## 🛠️ Quick Start\n\n**Prerequisites:** Node.js ≥ 18, npm ≥ 9\n\n```bash\ngit clone https://github.com/AIDotNet/OpenCowork.git\ncd OpenCowork\nnpm install\nnpm run dev\n```\n\n### Key Commands\n\n| Command             | Description                           |\n| ------------------- | ------------------------------------- |\n| `npm run dev`       | Start Electron + Vite with hot reload |\n| `npm run build`     | Typecheck then build for production   |\n| `npm run build:win` | Build Windows installer               |\n| `npm run build:mac` | Build macOS .dmg/zip                  |\n| `npm run build:linux` | Build Linux .AppImage/.deb         |\n| `npm run lint`      | ESLint with cache                     |\n| `npm run typecheck` | TypeScript check (main + renderer)    |\n| `npm run format`    | Prettier auto-format                  |\n\n\u003e **Data directory:** `~/.open-cowork/` — SQLite database, config, agents, skills, commands, and prompts.\n\n## 🌟 Use Cases\n\n- **Autonomous coding** — Agents refactor, debug, and write code directly in your workspace.\n- **Scheduled ops** — Cron agents monitor logs or system health and report to Feishu / DingTalk / Slack.\n- **Data research** — Scrape web pages, process CSVs, generate reports with charts.\n- **Remote management** — Operate on remote servers via SSH without leaving the app.\n\n## 📖 Documentation\n\nFull documentation at **[open-cowork.dev](https://open-cowork.dev)** — built with Fumadocs + Next.js.\n\n## 🤝 Contributing\n\nWe welcome contributions! See [AGENTS.md](AGENTS.md) for the development guide, coding conventions, and commit message format.\n\n### Special Thanks\n\n\u003ca href=\"https://routin.ai/\"\u003e\u003cimg width=\"154\" height=\"151\" src=\"./resources/images/readme/RoutinAI.png\" alt=\"RoutinAI\"\u003e\u003c/a\u003e\n\n**[RoutinAI](https://routin.ai/)** — Enterprise-grade unified LLM API gateway providing a single, type-safe interface to 100+ models across GPT, Claude, and Gemini families.\n\n\u003ca href=\"https://github.com/GeneralLibrary/GeneralUpdate\"\u003e\u003cimg width=\"154\" height=\"151\" src=\"./imgs/LOGO白2.png\" alt=\"GeneralUpdate\"\u003e\u003c/a\u003e\n\n**[GeneralUpdate](https://github.com/GeneralLibrary/GeneralUpdate)** — Cross-platform auto-update component for .NET applications.\n\n## 💝 Sponsors\n\n- [lchlfe@hotmail.com](mailto:lchlfe@hotmail.com)\n- [caomaohanfengZT](https://github.com/caomaohanfengZT)\n- [struggle3](https://github.com/struggle3)\n\n## 📜 License\n\n[Apache License 2.0](LICENSE)\n\n---\n\n\u003cdiv align=\"center\"\u003e\n\n⭐ If this project helps you, please give it a star.\n\nMade with ❤️ by the **AIDotNet** Team\n\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faidotnet%2Fopencowork","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faidotnet%2Fopencowork","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faidotnet%2Fopencowork/lists"}