Open Claude Cowork is an Electron + React desktop app for working with local AI agent CLIs via the Agent Client Protocol (ACP), with optional Model Context Protocol (MCP) server integration for tools/data sources.
Notes
- Agents run locally (as CLI processes). This app is an ACP client UI.
- Task data is stored locally (SQLite) under the app’s user data directory.
- ACP agent support (local CLIs): Qwen / Claude / Codex / Gemini / OpenCode (via ACP).
- Per-task workspaces: Each task keeps its own workspace folder, agent command, env vars, model selection, and session id.
- MCP servers (per task): Configure MCP servers and transport (
stdio,http,sse) and pass them to the agent during session setup. - Chat UI for agent streams: Markdown + code highlighting, tool call updates, logs, and permission prompts.
- Attachments & rendering: Image attachments and diff rendering for patches/changes.
- Personalization: Light/dark/auto theme + configurable wallpaper (presets or custom).
- Local-first storage: SQLite DB (tasks + settings) stored locally.
- Runtime: Electron
- Frontend: React, TypeScript, Ant Design, Tailwind CSS
- Build Tool: Rsbuild
- Styling / UI: CSS, Lucide React, @lobehub/icons, react-virtuoso (virtualized list)
- Database: better-sqlite3
- Protocols: @agentclientprotocol/sdk (ACP), Model Context Protocol (MCP)
This repo includes built-in agent presets (see src/types/acpTypes.ts):
- Qwen Agent (
@qwen-code/qwen-code) — default command:qwen --acp ... - Claude Agent (
@zed-industries/claude-code-acp) — default command:npx @zed-industries/claude-code-acp - Codex Agent (
@zed-industries/codex-acp) — default command:npx @zed-industries/codex-acp - Gemini Agent (
@google/gemini-code) — default command:gemini --acp ... - OpenCode Agent (
opencode-ai) — default command:opencode acp
The app can install these packages into its own agents directory (app.getPath("userData")/agents) using system npm from the UI.
- Node.js: Version 18 or higher recommended.
- pnpm (recommended) or npm: Package manager (repo dev/build).
-
Clone the repository
git clone https://github.com/your-username/open-claude-cowork.git cd open-claude-cowork -
Install dependencies
pnpm install # or npm install
To start the application in development mode with hot reloading:
pnpm run devThis will launch:
- The React renderer process (Rsbuild dev server)
- The Electron main process (auto-started via
dev:main/ Nodemon)
To lint:
pnpm run lintTo build the application for production:
pnpm run buildBy default, pnpm run build will prompt for a platform. To build for a specific platform (no prompt):
pnpm run build:darwin
pnpm run build:mac-x64
pnpm run build:mac-arm64
pnpm run build:win32
pnpm run build:linuxYou can also pass a platform flag or env var:
pnpm run build -- --build-platform=darwin
BUILD_PLATFORM=linux pnpm run buildTo build and run the production build locally:
pnpm run rebuild:mainYou can configure MCP servers per task in Settings → Agents → MCP Servers. See:
docs/mcp-quick-start.mddocs/mcp-ui-guide.mddocs/mcp-examples.mddocs/mcp-configuration.md
open-claude-cowork/
├── builder/ # Rsbuild configuration files
├── docs/ # MCP guides and internal notes
├── public/ # Static assets (icons, images)
├── src/
│ ├── main/ # Electron main process
│ │ ├── acp/ # ACP client implementation (spawn, session, streaming)
│ │ ├── db/ # Database schema and operations
│ │ ├── ipc/ # IPC handlers (agent/env/db/dialog)
│ │ ├── utils/ # Shell / runtime helpers
│ │ └── index.ts # Main entry
│ ├── render/ # React renderer process
│ │ ├── agents/ # Agent registry + icons
│ │ ├── components/ # UI components
│ │ └── App.tsx # Main app
│ └── types/ # Shared types (ACP/MCP/etc.)
├── package.json # Dependencies and scripts
└── README.md # Project documentation





