ClawCodeGUI is a desktop GUI project for the Claw Code runtime experience.
The goal of this repository is to build a clean, modern, cross-platform desktop client inspired by Codex, Claude Code, and OpenCode, while keeping the runtime side modular enough to plug into the existing Rust session and tool execution stack.
This repository now includes the first Electron desktop scaffold:
- Electron main process
- secure preload bridge
- React renderer with a three-column desktop layout
- mock runtime session flow for UI validation
- packaging config for macOS, Windows, and Linux
The current desktop build is a UI-first foundation, not the final runtime-integrated product yet. The renderer contract is already shaped so we can later swap the mock bridge for the Rust server crate without redesigning the UI.
ClawCodeGUI is intended to feel like a real agent coding workbench rather than a thin chat wrapper.
Core design goals:
- cross-platform desktop support for macOS and Windows first
- elegant, restrained UI for long working sessions
- visible tool activity, session state, and runtime status
- strong keyboard-first workflow
- clean separation between desktop shell and runtime execution
The current direction is:
Electron
├── main process # windows, menus, preload wiring, runtime lifecycle
├── preload bridge # safe API boundary for the renderer
└── React renderer # sessions, conversation UI, context panels, settings
Rust
├── claw-cli # CLI experience
├── runtime # session logic, tools, permissions, context
└── server # local service / SSE layer for desktop integration
Short version:
- Electron owns the desktop shell
- React owns the user interface
- Rust remains the long-term runtime backend
.
├── desktop/ # Electron desktop app
│ ├── electron/
│ │ ├── main.ts # BrowserWindow, IPC, app menu
│ │ ├── preload.ts # secure bridge exposed to renderer
│ │ └── runtime.ts # current mock runtime adapter
│ ├── renderer/
│ │ ├── App.tsx # main desktop workbench UI
│ │ ├── main.tsx # renderer entry
│ │ └── styles.css # graphite desktop theme
│ ├── shared/
│ │ └── contracts.ts # renderer/runtime shared types
│ ├── package.json
│ ├── tsconfig.json
│ ├── tsconfig.electron.json
│ ├── vite.config.ts
│ └── electron-builder.yml
├── docs/
│ └── electron-ui-plan.md # desktop UI architecture and rollout plan
├── rust/ # Rust runtime and CLI workspace
├── src/ # Python-side workspace from earlier porting work
├── tests/
└── README.md
The Electron app lives under desktop/.
Install dependencies:
cd desktop
npm installRun the desktop app in development:
npm run devBuild the renderer and Electron process code:
npm run buildNotes:
- the desktop MVP now uses the Rust CLI as its execution bridge
- prompts are executed through
claw-cliJSON mode with persistent session files - slash commands are routed through
claw --resume <session> - the machine running the GUI needs
cargoavailable inPATH - Electron may need its binary payload installed if
npm installwas interrupted
The first desktop scaffold already includes:
- session sidebar
- main conversation timeline
- right-side context panel
- prompt execution through the Rust CLI
- slash command execution for resumed sessions
- top status controls
- bottom runtime status bar
This gives us a concrete visual and structural baseline for the actual product rather than starting from a blank Electron window.
The screenshots below are taken from the packaged Electron desktop build on macOS arm64.
The current shell is organized around a three-column desktop layout:
- left rail for session switching
- center pane for the conversation transcript and prompt composer
- right rail for runtime status, supported behaviors, and backend roadmap
The session rail keeps the interaction model simple:
- every desktop conversation is stored as a persistent session file
- the active session card surfaces the working directory and last update time
- the footer explains where the desktop-managed session data lives
The center pane is the main operator surface:
- transcript cards separate system, user, assistant, and tool messages
- the composer supports both natural-language prompts and slash commands
- runtime chips at the top show message count and execution state at a glance
The right-side context column is intended to keep operational details visible without cluttering the transcript:
- runtime detail calls out whether the Rust CLI bridge is ready or degraded
- supported-today notes explain what already works in the desktop shell
- the backend-upgrade panel keeps the next integration steps explicit for contributors
For a fuller walkthrough of the desktop layout and what each panel is responsible for, see docs/desktop-ui-tour.md.
The long-term plan is to attach the GUI to the Rust runtime instead of keeping session logic in the Electron process.
Recommended path:
- extend
rust/crates/serverinto a stable desktop-facing local service - expose session, streaming, permission, and tool events with a structured protocol
- update the Electron main process to launch and supervise the Rust backend
- switch the renderer transport from mock IPC to HTTP/SSE while preserving the same event contract
This GUI is intentionally influenced by:
- Codex
- Claude Code
- OpenCode
The target feel is:
- high-signal
- low-noise
- terminal-aware but not terminal-bound
- suitable for serious development work
Important project docs:
- UI plan:
docs/electron-ui-plan.md - desktop UI tour:
docs/desktop-ui-tour.md - desktop package manifest:
desktop/package.json - main desktop UI:
desktop/renderer/App.tsx - main process entry:
desktop/electron/main.ts
Short-term:
- wire the renderer to the Rust server transport
- add real session persistence
- add permission request UI
- add file diff and tool event inspection
Mid-term:
- add command palette
- add settings and model management
- add workspace switching
- add packaged releases for macOS and Windows
Long-term:
- multi-session workflows
- richer Git integration
- plugin and skill visibility
- production-grade desktop runtime supervision
The project is still in an early shaping phase, so the most useful contributions right now are:
- UI structure improvements
- Electron app hardening
- Rust server integration work
- event protocol design
- packaging and platform validation
If you want to contribute, start by reading the UI plan and the desktop scaffold files.
This repository is for the GUI workbench layer around a Claw Code style runtime experience.
- it is not an official upstream GUI
- it is not presented as an endorsed client by the original authors
- the current desktop shell is an independent implementation effort



