The Problem

Developers using Claude Code must work from a terminal, which makes it hard to see intermediate results, manage multiple sessions, and interact with files visually. The lack of a GUI also forces users to remember CLI flags and manually inspect tool outputs.

What This Does

Open Claude Cowork wraps Claude Code in an Electron‑based desktop app, delivering a visual workspace for AI‑driven programming tasks. The UI lives under src/ui/ (e.g., App.tsx, PromptInput.tsx, DecisionPanel.tsx) and communicates with the backend via IPC handlers defined in src/electron/ipc-handlers.ts. The main Electron process is src/electron/main.ts, which boots the Vite dev server (src/ui/main.tsx) and loads index.html. All configuration is shared with Claude Code via ~/.claude/settings.json, as noted in src/electron/libs/claude-settings.ts.

How To Use It

Setup

Clone and enter the repo git clone https://github.com/DevAgentForge/agent-cowork.git cd agent-cowork

Install dependencies (Bun is preferred, Node 18+ works)

bun install # falls back to npm if Bun unavailable

The package.json lists the scripts used for development and packaging.

Development Run

bun run dev # launches Electron with hot‑reloaded UI

This command invokes the Vite dev server (vite.config.ts) and starts the Electron main process (src/electron/main.ts).

Build Production Binaries

bun run dist:mac # macOS target bun run dist:win # Windows target bun run dist:linux # Linux target

The build process is driven by electron-builder.json, producing native installers.

Configuration

Place a valid Claude Code settings file at ~/.claude/settings.json. The library src/electron/libs/claude-settings.ts reads this file to obtain the API key, base URL, and other options. No additional environment variables are required by the repo.

Running the App

After a successful build, execute the generated binary for your platform. The entry point for the UI is src/ui/App.tsx, which renders the main window and connects to the backend via the hook src/ui/hooks/useIPC.ts.

Real‑World Use

A developer can open the app, create a new session pointing at a project directory, and ask Claude to refactor a module. Claude streams token‑by‑token output in the markdown view (src/ui/render/markdown.tsx), while any file writes are gated by the decision panel (DecisionPanel.tsx). The session history is persisted in a local SQLite DB (referenced in src/electron/libs/session-store.ts), allowing the developer to resume work later.

Code Health & Issues

Medium – Missing CI/CD – No .github/workflows or other pipeline files; automated testing or release validation is absent. Medium – No LICENSE – Repository root lacks a license file, leaving redistribution rights unclear. Low – Limited Test Coverage – Only one test file (src/electron/test.ts) exists; core UI components and IPC pathways are untested. Low – Mixed Package Managers – Both bun.lockb and package-lock.json are present, which could cause dependency drift if contributors use different managers. Low – Potential Runtime Errors – src/electron/libs/util.ts and src/electron/libs/runner.ts perform file system operations without exhaustive error handling; edge cases (e.g., permission denied) may crash the Electron process.

No obvious security secrets are stored in the repo, and TypeScript typings (*.d.ts) are used throughout, suggesting reasonable type safety.

The Bottom Line

Open Claude Cowork provides a functional desktop wrapper for Claude Code, delivering a visual workflow that can boost productivity for developers already comfortable with Claude’s API. The codebase is small and reasonably organized but lacks CI, a license, and comprehensive tests, which may be a concern for production or team adoption. Ideal for solo developers or early adopters who need a GUI overlay on Claude Code and can tolerate limited process automation.