git clone https://github.com/CoWork-OS/CoWork-OS.git
cd CoWork-OS
npm run setupnpm run devThis will:
- Start the Vite dev server (React UI)
- Launch Electron with hot reload enabled
- Open DevTools automatically
- Click the Settings icon (gear) in the sidebar
- Choose your LLM provider:
- Anthropic - Claude models (requires API key from console.anthropic.com)
- Google Gemini - Gemini models (requires API key from aistudio.google.com)
- OpenRouter - Multiple models (requires API key from openrouter.ai)
- OpenAI - GPT-4o, o1 models (requires API key from platform.openai.com)
- AWS Bedrock - Enterprise AWS (requires AWS credentials)
- Ollama - Local models (free, requires Ollama installed)
- Enter your API key
- Click Test Connection to verify
- Save settings
- If Test Connection fails with 401/403, verify the API key and account permissions.
- If the model list is empty, click Refresh Models after entering your API key (and Base URL if overridden).
- If a provider endpoint changes, override the Base URL in Settings (custom providers or Groq/xAI/Kimi/OpenRouter).
- If Ollama fails to connect, confirm the service is running and the base URL is correct (default
http://localhost:11434). - If
npm run setupfails on macOS withKilled: 9, macOS terminated the native build due to memory pressure. The setup script retries automatically (with exponential backoff); if it still fails, close other apps and runnpm run setupagain.
-
Select a Workspace
- Click "Select Folder"
- Choose a folder you want CoWork OS to work in
- This will be your workspace (e.g.,
~/Documents/test-workspace)
-
Initialize the Workspace Kit (Optional, Recommended)
- Open Settings > Memory Hub
- Under Workspace Kit, click Initialize
- This creates a
.cowork/directory in your workspace for durable context and project scaffolding
-
Create a Task
- Click "+ New Task"
- Title: "Organize my files"
- Description: "Please organize all files in this folder by file type (Images, Documents, etc.)"
- Click "Create Task"
-
Watch it Work
- The agent will create a plan
- Execute steps using available tools
- Show real-time progress in the timeline
- Request approval before destructive changes
Once the app opens, the most important places to know are:
- Home: quick launch plus recent sessions and recent automation activity
- Devices: manage the local machine and saved remote CoWork nodes, run remote tasks, and inspect remote task history
- Settings > Automations: Task Queue, Self-Improve, Scheduled Tasks, Webhooks, Event Triggers, and Daily Briefing
- Settings > Companies: company shell setup, goals, projects, issues, planner state, and linked operators
- Mission Control: company and operator monitoring, Kanban board, feed, and Ops view
If you are just getting started, do not configure everything at once. Set up an LLM provider, run one local task, then add Devices, Automations, or Companies as needed.
Use this when you want CoWork OS to run tasks on another machine, such as a Mac mini or remote workstation.
- Start CoWork on the remote machine and enable the Control Plane.
- Decide how you will reach it:
- same LAN
- SSH tunnel
- Tailscale
- On your main machine, open the Devices tab.
- Click Add new device.
- Enter the gateway URL, token, display name, and purpose.
- Connect the device and confirm it appears in the device list.
- Select that device and run a small test task.
After connection, you can browse remote workspaces, attach files from the remote machine, and inspect remote task history from the same Devices surface.
Open Settings > Automations when you want CoWork OS to do background work without manually starting every task.
Recommended order:
- Task Queue: confirm concurrency and timeout defaults.
- Scheduled Tasks: add one safe recurring task.
- Daily Briefing: enable a daily summary.
- Event Triggers / Webhooks: connect inbound automation only after you have a stable workspace and provider setup.
- Self-Improve: enable only on git-backed workspaces where worktrees are available.
If you want to use CoWork OS as a founder-operated autonomous company shell:
- Choose a real git-backed workspace.
- Open Settings > Memory Hub.
- Initialize Venture operator kit.
- Fill in the generated
.cowork/company files (COMPANY.md,OPERATIONS.md,KPIS.md,PRIORITIES.md,HEARTBEAT.md). - Open Settings > Companies.
- Create or select the company shell you want to operate.
- Click Open Digital Twins from that company.
- Activate:
Company PlannerFounder Office Operator
- Enable heartbeat for both operators.
- Return to Settings > Companies and confirm the operators are linked to the intended company.
- Open Mission Control from that company.
- In the planner strip, enable scheduling, set the planner agent, and click Run Planner.
- Use the
Opstab to monitor goals, projects, planner-managed issues, and linked execution runs.
See Zero-Human Company Operations for the full architecture, recipe, use cases, and operating model.
Title: Organize Downloads
Description: Organize all files in this folder by type. Create folders for Images, Documents, Spreadsheets, and Other. Move files into appropriate folders.
Title: Create sales report
Description: Create an Excel spreadsheet with monthly sales data for Q1-Q4. Include columns for Month, Revenue, Expenses, and Profit. Add a summary row with totals.
Title: Write project summary
Description: Create a Word document summarizing our project. Include sections for Overview, Goals, Timeline, and Next Steps. Use professional formatting.
Title: Create quarterly report
Description: Create a PowerPoint presentation with 5 slides covering Q1 2024 highlights. Include: Title slide, Overview, Key Metrics, Challenges, and Next Steps.
Title: Research AI trends
Description: Search the web for the latest trends in AI for 2024 and create a summary document with the top 5 findings.
Title: Screenshot a webpage
Description: Navigate to https://example.com and take a screenshot. Save it as example-screenshot.png.
- Workspace Info: Shows current workspace name and path
- Settings Button: Configure LLM, search, and channel settings
- New Task Button: Create a new task
- Task List: All tasks sorted by creation date
- Task Status Indicators:
- Blue = Active (planning/executing)
- Green = Completed
- Red = Failed/Cancelled
- Gray = Pending
- Task Header: Title and metadata
- Task Description: What you asked for
- Activity Timeline: Real-time execution log showing:
- Task created
- Plan created
- Steps started/completed
- Tool calls
- Files created/modified
- Errors
When the agent needs permission for:
- Deleting files
- Bulk operations
- Shell commands
You'll see a dialog with:
- What it wants to do
- Why it needs to do it
- Approve or Deny buttons
Open Settings > Provider tab:
| Provider | Setup |
|---|---|
| Anthropic | Enter API key from console.anthropic.com |
| Google Gemini | Enter API key from aistudio.google.com |
| OpenRouter | Enter API key from openrouter.ai |
| OpenAI (API Key) | Enter API key from platform.openai.com |
| OpenAI (ChatGPT) | Click "Sign in with ChatGPT" to use your subscription |
| AWS Bedrock | Enter AWS Access Key, Secret Key, and Region |
| Ollama | Install Ollama, pull a model, select it |
| Groq | Enter API key in Settings |
| xAI (Grok) | Enter API key in Settings |
| Kimi (Moonshot) | Enter API key in Settings |
Configure these in Settings > LLM Provider by entering API keys/tokens, model IDs, and base URLs when required.
| Provider | Setup |
|---|---|
| OpenCode Zen | API key + base URL in Settings |
| Google Vertex | Access token + base URL in Settings |
| Google Antigravity | Access token + base URL in Settings |
| Google Gemini CLI | Access token + base URL in Settings |
| Z.AI | API key + base URL in Settings |
| GLM | API key + base URL in Settings |
| Vercel AI Gateway | API key in Settings |
| Cerebras | API key in Settings |
| Mistral | API key in Settings |
| GitHub Copilot | GitHub token in Settings |
| Moonshot (Kimi) | API key in Settings |
| Qwen Portal | API key in Settings |
| MiniMax | API key in Settings |
| MiniMax Portal | API key in Settings |
| Xiaomi MiMo | API key in Settings |
| Venice AI | API key in Settings |
| Synthetic | API key in Settings |
| Kimi Code | API key in Settings |
| OpenAI-Compatible (Custom) | API key + base URL in Settings |
| Anthropic-Compatible (Custom) | API key + base URL in Settings |
Web search works immediately via the built-in DuckDuckGo provider (free, no API key). For richer results (news, images, AI-optimized ranking), configure a paid provider in Settings > Web Search:
| Provider | Setup |
|---|---|
| DuckDuckGo | Built-in — no setup needed (automatic fallback) |
| Tavily | Enter API key from tavily.com |
| Brave | Enter API key from brave.com/search/api |
| SerpAPI | Enter API key from serpapi.com |
| Enter API key and Search Engine ID from Google Cloud Console |
- Open Settings > WhatsApp
- Click Add WhatsApp Channel
- A QR code will appear
- Open WhatsApp on phone → Settings > Linked Devices > Link a Device
- Scan the QR code
- Once connected, enable Self-Chat Mode if using your personal number
- Set a Response Prefix (e.g., "🤖") to distinguish bot messages
- Create bot with @BotFather
- Open Settings > Channels > Telegram
- Enter bot token
- Enable and test
- Create app at Discord Developer Portal
- Open Settings > Channels > Discord
- Enter bot token and application ID
- Invite bot to server
- Enable and test
- Create app at Slack API Apps
- Enable Socket Mode and create App-Level Token (xapp-...)
- Add OAuth scopes:
app_mentions:read,chat:write,im:history,im:read,im:write,users:read,files:write - Subscribe to events:
app_mention,message.im - Install to workspace and copy Bot Token (xoxb-...)
- Open Settings > Channels > Slack
- Enter Bot Token and App-Level Token
- Enable and test
Open Settings > Integrations to connect productivity and storage tools:
- Notion
- Box
- OneDrive
- Google Workspace (Gmail, Calendar, Drive)
- Dropbox
- SharePoint
Install enterprise connectors from Settings > MCP Servers > Browse Registry:
| Connector | Type | Setup |
|---|---|---|
| Salesforce | CRM | OAuth or API key |
| Jira | Issue Tracking | API token + domain |
| HubSpot | CRM | API key |
| Zendesk | Support | API key + subdomain |
| ServiceNow | ITSM | OAuth or credentials |
| Linear | Product/Issue | API key |
| Asana | Work Management | Personal access token |
| Okta | Identity | API token + domain |
Each connector provides tools like search, get, create, and update for its respective service.
- Open Settings > X (Twitter)
- Choose Browser Cookies or Manual Cookies
- (Optional) Enable Mention Trigger and configure:
- command prefix (default
do:) - allowlisted authors
- poll interval and fetch count
- command prefix (default
- Save and test the connection
- See X Mention Triggers for bridge/native behavior and troubleshooting.
The app supports hot reload:
- React UI Changes: Edit files in
src/renderer/- auto-refreshes - Electron Main Changes: Edit files in
src/electron/- auto-restarts - Shared Types: Edit
src/shared/types.ts- both reload
src/
├── electron/ # Backend (Node.js)
│ ├── main.ts # App entry point
│ ├── agent/ # AI agent logic
│ │ ├── llm/ # LLM providers
│ │ ├── search/ # Search providers
│ │ ├── browser/ # Playwright
│ │ ├── tools/ # Tool implementations
│ │ └── skills/ # Document skills
│ ├── gateway/ # WhatsApp, Telegram, Discord & Slack
│ └── database/ # SQLite storage
├── renderer/ # Frontend (React)
│ ├── App.tsx # Main component
│ └── components/ # UI components
└── shared/ # Shared between both
└── types.ts # TypeScript types
Renderer Process (UI):
- DevTools open automatically in dev mode
- Use
console.log()- shows in DevTools Console
Main Process (Backend):
- Use
console.log()- shows in terminal - Check logs:
- macOS:
~/Library/Application Support/cowork-os/ - Windows:
%APPDATA%\\cowork-os\\
- macOS:
SQLite database location:
- macOS:
~/Library/Application Support/cowork-os/cowork-os.db - Windows:
%APPDATA%\\cowork-os\\cowork-os.db
View it with any SQLite browser or:
# macOS
sqlite3 ~/Library/Application\ Support/cowork-os/cowork-os.db
.tables
SELECT * FROM tasks;# Windows (PowerShell)
sqlite3 "$env:APPDATA\cowork-os\cowork-os.db"
.tables
SELECT * FROM tasks;# Build both renderer and electron
npm run build
# Package desktop app
npm run packageOutput: release/*.dmg (macOS) and release/*.exe (Windows)
Solution: Open Settings (gear icon) and configure at least one LLM provider.
Solution: Clear and reinstall:
rm -rf node_modules dist
npm run setup
npm run devSolution: Choose a folder you have write access to, like:
~/Documents/cowork-test~/Downloads/test
Don't use system folders like /System or /Applications.
Solution: Check:
- LLM provider is configured in Settings
- API key is valid
- Workspace has proper permissions
- Network connection for API calls
- Check console for error messages
Solution:
- Make sure Ollama is running:
ollama serve - Check URL is correct (default:
http://localhost:11434) - Make sure you've pulled a model:
ollama pull llama3.2
- Be Specific: Clear task descriptions work better
- Start Small: Test with a few files before bulk operations
- Review Plans: Check the execution plan before it runs
- Respond Carefully: Read approval requests and structured input prompts before accepting or submitting
- Monitor Progress: Watch the timeline to understand what's happening, especially when parallel tool groups collapse into summary lanes
- Use Local Models: Ollama is free and works offline
- Web Search: Configure a search provider and ask research questions
- Browser Automation: Have the agent navigate websites and extract data
- Remote Access: Set up WhatsApp, Telegram, Discord, or Slack bot for mobile/remote access
- Document Creation: Create professional Excel, Word, PDF, or PowerPoint files
- Goal Mode: Define success criteria and let the agent auto-retry until verification passes
- Custom Skills: Create reusable workflows with custom prompts in Settings > Custom Skills
- MCP Servers: Connect to external tools via MCP in Settings > MCP Servers
- Enterprise Connectors: Install Salesforce, Jira, HubSpot, and other connectors from the MCP Registry
- Cloud Storage: Connect Notion, Box, OneDrive, Google Workspace (Gmail/Calendar/Drive), Dropbox, or SharePoint in Settings > Integrations
- Parallel Tasks: Run multiple tasks concurrently (configure in Settings > Task Queue)
- Guardrails: Set token/cost budgets and blocked commands in Settings > Guardrails
- Full README - Complete documentation
- Implementation Summary - Technical details
- Project Status - Feature status
- Check console output for errors
- Review the task timeline for clues
- Read error messages in the UI
- Report issues at GitHub Issues