{
  "markdown": "<p align=\"center\">\n  <h1 align=\"center\">Coworker</h1>\n  <p align=\"center\">\n    <strong>Turn Cowork into an autonomous PM for Claude Code.</strong>\n  </p>\n  <p align=\"center\">\n    <a href=\"#quick-start\">Quick Start</a> &middot;\n    <a href=\"#how-it-works\">How It Works</a> &middot;\n    <a href=\"#mcp-tools\">MCP Tools</a> &middot;\n    <a href=\"#configuration\">Configuration</a> &middot;\n    <a href=\"#faq\">FAQ</a>\n  </p>\n  <p align=\"center\">\n    <img src=\"https://img.shields.io/npm/v/coworker-mcp?color=blue&label=npm\" alt=\"npm version\" />\n    <img src=\"https://img.shields.io/badge/license-MIT-green\" alt=\"MIT License\" />\n    <img src=\"https://img.shields.io/badge/node-%3E%3D20-brightgreen\" alt=\"Node 20+\" />\n    <img src=\"https://img.shields.io/badge/tools-6%20MCP%20tools-purple\" alt=\"6 MCP tools\" />\n    <img src=\"https://img.shields.io/badge/tests-84%20passing-brightgreen\" alt=\"84 tests\" />\n  </p>\n</p>\n\n---\n\nCoworker is an open-source local MCP server that lets Anthropic's Cowork (or any MCP client) delegate coding tasks to Claude Code — with async parallel execution, auto-verification, session-resuming iteration, and token-efficient summaries that keep the client's context window small.\n\n**93-98% fewer tokens** in the orchestrator's context. **Zero copy-paste.** **Parallel task execution.** Your AI PM thinks while your AI engineer codes.\n\n## The Problem\n\nYou use Cowork for thinking and Claude Code for coding. But every task requires you to:\n\n1. Copy context from Cowork\n2. Paste it into Claude Code\n3. Wait for results\n4. Copy the output\n5. Paste it back to Cowork\n6. Repeat 10-15 times per feature\n\nYou're a human API between two AI tools. Coworker eliminates the middleman.\n\n## How It Works\n\n```\nYou ── natural language ──► Cowork (PM)\n                               │\n                               │ MCP tools (submit, iterate, verify)\n                               ▼\n                          Coworker (bridge)\n                               │\n                               │ spawns subprocess\n                               ▼\n                          Claude Code (engineer)\n                               │\n                               │ reads/writes\n                               ▼\n                          Your project files\n```\n\n1. **You** describe what you want to Cowork\n2. **Cowork** calls `submit_task` through the MCP bridge\n3. **Coworker** spawns `claude -p` as a subprocess on your machine\n4. **Claude Code** does the work using your local files and tools\n5. **Coworker** captures the output, runs verification, builds a summary\n6. **Only the summary** returns to Cowork — full output stays on disk\n7. For iteration, Cowork calls `iterate_task` — Claude Code **resumes its session** and remembers everything\n\n## Real Numbers\n\nMeasured from a 5-task development session with iterations:\n\n| Metric | Without Coworker | With Coworker |\n|--------|-----------------|---------------|\n| Tokens in PM context | ~15,000-55,000 | ~1,100 |\n| User actions per task | 4 (copy, switch, paste, switch) | 0 |\n| Parallel tasks | Impossible | Yes |\n| Claude Code cost | $0.62 | $0.62 (identical) |\n| Context runway | ~5-8 tasks before degradation | 50+ tasks |\n\nCoworker doesn't save money on the coding side — it saves **your time** and **your PM's context space**.\n\n## Quick Install\n\nThree ways to get Coworker running:\n\n1. **Cowork plugin (drag-drop)**\n   Download [`coworker.plugin`](https://github.com/ibrhmyi/coworker/releases/tag/v0.1.1-plugin) from the v0.1.1-plugin release and open it. Done.\n\n2. **Claude Code marketplace**\n   ```bash\n   claude plugin marketplace add ibrhmyi/coworker\n   claude plugin install coworker@coworker\n   ```\n\n3. **Standalone MCP server**\n   ```bash\n   npx coworker-mcp@latest setup\n   ```\n\n### Requirements\n\n- Node.js 20+\n- [Claude Code CLI](https://docs.anthropic.com/en/docs/claude-code) (authenticated)\n- For option 3: cloudflared (auto-downloaded if missing)\n\n### Then connect to Cowork (option 3 only)\n\n1. Open Claude Desktop → Settings → Connectors\n2. Add custom connector → **Paste** (URL is on your clipboard)\n3. Save → Toggle on in your conversation\n4. Say: *\"What tools do you have?\"* — you should see 6 Coworker tools\n\n## MCP Tools\n\n### `submit_task`\nSubmit a coding task to Claude Code. **Returns immediately** — Claude Code runs asynchronously in the background.\n\n### `wait_for_task`\nWait for a running task to complete. Returns the summary once done. Enables the **submit → do other things → check result** pattern.\n\n### `get_result`\nFetch a task's result at three detail levels: `oneline`, `paragraph`, or `full` (returns file path only — output **never** enters the client's context).\n\n### `iterate_task`\nContinue a task with feedback. Resumes Claude Code's prior session via `--resume` — it **remembers all previous work**. No context re-sent.\n\n### `list_tasks`\nList recent tasks with compact summaries. Filter by status, time range, or search prompt text.\n\n### `get_project_state`\nGet the current project state: what's been built, project context, and decisions. **Start any new conversation with this** to catch up instantly.\n\n## Auto-Verification\n\nCoworker can run your tests and build commands after every task. If they fail, it **automatically feeds the error back** to Claude Code and retries.\n\n```yaml\n# .coworker/config.yaml\nverification:\n  enabled: true\n  commands:\n    - npm test\n    - npm run lint\n  max_retries: 2\n```\n\nYou get results that already pass your checks.\n\n## Project State\n\nCoworker maintains three files automatically — you never edit these:\n\n| File | Purpose | Updated |\n|------|---------|---------|\n| `STATUS.md` | What's been built, what failed | After every task |\n| `CONTEXT.md` | Project description, tech stack | By you or Cowork |\n| `DECISIONS.md` | Architecture decisions log | During conversations |\n\nStart a new Cowork conversation → ask to read the project state → **fully caught up in one message**.\n\n## CLI Reference\n\n```\ncoworker setup [--stable]    One-command onboarding (--stable for permanent URL)\ncoworker init [dir]          Initialize .coworker/ in a project\ncoworker start [--port N]    Start the MCP server and tunnel\ncoworker url                 Print connector URL (auto-copies to clipboard)\ncoworker tunnel-setup        Set up a permanent tunnel URL\ncoworker history [--limit N] List recent tasks\ncoworker show <task_id>      Show task details and summary\ncoworker doctor              Run health checks (9 checks)\n```\n\n## Configuration\n\nAll fields optional. Sensible defaults for everything.\n\n```yaml\n# .coworker/config.yaml\nversion: 1\n\nclaude:\n  binary_path: claude\n  default_timeout_seconds: 600\n  default_max_turns: 20\n  working_directory: .\n\nserver:\n  port: 17429\n  tunnel_mode: quick            # quick | named | none\n\nsummary:\n  mode: heuristic               # heuristic (free) | llm (~150 tokens/task)\n\nverification:\n  enabled: false\n  commands: []\n  max_retries: 2\n\nlimits:\n  max_concurrent_tasks: 5\n  max_task_age_hours: 24\n```\n\n## FAQ\n\n<details>\n<summary><strong>Does this use my Claude subscription credits?</strong></summary>\nYes, the same way typing into Claude Code yourself does. Coworker invokes <code>claude -p</code> as a subprocess — from Anthropic's perspective it's normal Claude Code usage.\n</details>\n\n<details>\n<summary><strong>Is my code sent anywhere?</strong></summary>\nOnly to Claude Code running locally on your machine. The Cloudflare tunnel passes MCP protocol messages (task prompts and summaries) between Cowork's cloud infrastructure and your local server. Your code files never leave your machine through Coworker.\n</details>\n\n<details>\n<summary><strong>Why not just use Claude Code directly?</strong></summary>\nFor a single quick task, Claude Code directly is fine. Coworker shines when you're managing a development session: multiple tasks, iterations, verifications, maintaining project context across conversations. It lets Cowork be the PM while Claude Code is the engineer.\n</details>\n\n<details>\n<summary><strong>What about --dangerously-skip-permissions?</strong></summary>\nRequired for headless Claude Code operation. Claude Code runs without asking for confirmation on file operations. This is the same tradeoff as any CI/CD pipeline using Claude Code.\n</details>\n\n<details>\n<summary><strong>Will Anthropic ship this natively?</strong></summary>\nThey're moving in this direction. Coworker is built to be useful today and compatible with native support when it arrives.\n</details>\n\n## Security\n\nCoworker runs Claude Code with `--dangerously-skip-permissions`. Recommendations:\n\n- Only run in project directories you trust\n- Use `allowed_tools` in submit_task to restrict capabilities\n- Review `.coworker/results/` for full audit trail\n- Consider running in a container for isolation\n\n## Built With\n\n- [MCP SDK](https://github.com/modelcontextprotocol/typescript-sdk) — Protocol layer\n- [better-sqlite3](https://github.com/WiseLibs/better-sqlite3) — Task store\n- [Cloudflare Tunnels](https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/) — HTTPS bridge\n- TypeScript, Node.js 20+, 84 tests, 82KB bundle\n\n## License\n\nMIT\n\n---\n\n<p align=\"center\">\n  <sub>Built by shipping the tool that eliminates the workflow used to build it.</sub>\n</p>\n",
  "bytes": 9232,
  "sha": "a8e289431591bffac8b297263a24b2911a0292d16dc8973f770af7827a632cc9",
  "repo_slug": "ibrhmyi/coworker",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/plg_ibrhmyi_coworker_coworker_67446020/readme"
}