The Problem
Running Claude Code as a single terminal session is limiting for multi-step workflows. You end up manually orchestrating tasks, context windows get cluttered, and there's no persistent record of what an agent did. Outworked addresses this by turning Claude into a team of specialized agents that work in parallel, each with a role, a persistent workspace, and the ability to interact with external tools—all visible in a desktop office metaphor.
What This Does
Outworked is a macOS desktop app (Electron + React) that lets you "hire" AI agents, assign them roles like Frontend Dev or Designer, and give them goals in plain English. An orchestrator (src/lib/orchestrator.ts) decomposes the goal into subtasks and routes them to the appropriate agents. Agents can write code, browse the web, send iMessages, manage Gmail/Google Calendar, and run scheduled tasks.
The app includes a "skills" system (electron/skills/) with pre-built integrations for Gmail, Google Calendar, Google Drive, Google Sheets, Notion, Slack, and a browser. It also supports MCP servers (electron/mcp/mcp-server.js) and channels (electron/channels/) for iMessage and Slack. The UI is a Phaser-based office scene (src/phaser/OfficeScene.ts) where agents visually walk around and work. Asset packs (scripts/generate-default-pack.js) let you customize sprites, furniture, backgrounds, and fonts.
How It Is Wired
Execution starts in electron/main.js (Electron main process). It initializes the app, sets up the database (electron/db/database.js, SQLite), and loads the src/ React app. The renderer communicates with the main process via electron/preload.js and electron/sdk-bridge.js.
The core control flow is in src/lib/orchestrator.ts. When you submit a goal, it uses src/lib/ai.ts to call Claude, which returns a plan. The orchestrator then creates tasks and assigns them to agents. Each agent's execution goes through electron/skills/skill-runtime-manager.js, which loads the appropriate skill (e.g., electron/skills/browser/index.js for web browsing) and runs its functions. Skills make external calls: the browser skill uses Playwright, Gmail/Calendar use OAuth (electron/skills/oauth-helper.js), and iMessage/Slack go through the channel modules.
The highest blast-radius file is src/lib/orchestrator.ts—it's the hub that all agent activity routes through. Changing it affects every workflow. The second is electron/skills/skill-runtime-manager.js, which loads and executes all skills; a bug there breaks every integration. The module graph shows a hub-and-spoke pattern with orchestrator.ts at the center; there's no significant cycle, so refactoring is manageable.
How To Use It
Setup: Clone and install dependencies.
git clone https://github.com/moses-y/outworked
cd outworked
npm install
npm run dev
Configuration: You'll need API keys for Claude and any services you use (Gmail, Slack, etc.). These are entered via the UI in src/components/KeysModal.tsx. No .env file is present, so keys are stored in the app's SQLite database.
Running it: The dev command starts the Electron app. For production, npm run build and npm run dist will produce a macOS installer (see electron-builder.yml).
Real-World Use
A practical scenario: "Build me a landing page and send it to my cofounder." The orchestrator splits this into subtasks: Frontend Dev scaffolds the site, Designer reviews it in the browser skill and takes a screenshot, Frontend Dev fixes spacing and starts a tunnel, then calls send_message via the iMessage channel to text the link. All visible in the office UI.
Code Health & Issues
No measured analysis has run for this repo yet. Structure looks sound: tests exist in electron/ (4 test files), CI is present in .github/workflows/, and a license is included.
- Low - No end-to-end tests for the orchestrator or skill runtime; only unit tests on channels/triggers exist. The critical path (
orchestrator.ts->skill-runtime-manager.js) is untested. - Low - The
build/directory contains platform-specific artifacts (icon.icns,entitlements.mac.plist), which is fine, but there's no Windows/Linux build config inelectron-builder.yml.
The Bottom Line
Outworked is a polished, genuinely useful tool for anyone who wants to run multi-agent Claude workflows with a visual interface. The skill system and MCP support give it real integration depth. It's macOS-only, and the orchestrator is the single point of failure—if it breaks, everything breaks. Worth trying if you're already invested in Claude Code and want to scale beyond single sessions.