Skip to content

akemmanuel/OpenGUI

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

369 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

OpenGUI

Desktop + web command center for coding-agent harnesses. Run OpenCode, Claude Code, Codex, and Pi across multiple projects with streaming chat, prompt queue, model switching, voice input, and MCP tools.

Latest Release License Stars Downloads Build Status Issues

Download latest release Β· Why OpenGUI Β· Highlights Β· Build from source Β· Configuration

OpenGUI gives coding-agent users a proper desktop and browser workflow for long sessions. Manage multiple projects visually, run different harnesses from one UI, watch responses stream live, queue prompts while your agent works, and switch models or agents without terminal juggling.

Early but usable. Bug reports and PRs welcome.


Quick Start

1. Download the latest release (Linux .deb, macOS .dmg, or Windows .exe).

2. Install one supported harness (e.g. OpenCode) on your PATH.

3. Launch OpenGUI, connect a workspace, and start prompting.

That's it. No terminal needed after setup.


Screenshots

OpenGUI Screenshot

Tracked in issue #…


Why OpenGUI

OpenGUI is for people who love coding agents but want a stronger workflow than terminal tabs alone:

  • 🎯 Multi-harness workspace β€” run OpenCode, Claude Code, Codex, Pi, and Grok Build in one app instead of juggling separate terminals.
  • πŸ“‚ Multi-project sessions β€” keep separate sessions per workspace and switch instantly.
  • ⚑ Stream responses live β€” see tokens stream in with real-time usage tracking.
  • πŸ“₯ Prompt queue β€” queue prompts while your agent is busy; they auto-dispatch when idle.
  • πŸŽ›οΈ Switch providers/models β€” change backend, model, agent, or variant from the UI.
  • πŸ”§ MCP tools & skills β€” configure tools and skills without leaving the app.
  • 🎀 Voice input β€” use a Whisper-compatible transcription endpoint for speech-to-text.

Highlights

Feature Description
πŸ—οΈ Multi-agent workspace OpenCode, Claude Code, Codex, Pi, Grok Build
πŸ“‚ Multi-project workspaces Parallel coding sessions per project
⚑ Real-time streaming SSE with live token & context tracking
πŸ“₯ Prompt queue Auto-dispatch when assistant becomes idle
πŸŽ›οΈ Model/backend/agent selection Switch directly from chat UI
⌨️ Slash commands Built-in commands from the prompt box
🎨 Syntax highlighting Powered by Shiki
πŸŒ— Dark/light theme System-aware toggle
πŸ–₯οΈπŸŒπŸ“± Desktop, web & Docker Electron, browser, or container deployment
🐧🍎πŸͺŸ Cross-platform builds Linux, macOS, Windows

Supported Harnesses

Harness OpenGUI Support
OpenCode βœ… Full
Claude Code βœ… Full
Codex βœ… Full
Pi βœ… Full
Grok Build βœ… Full

Use one backend or switch between them per workflow.


Download

Grab a prebuilt app from the latest release:

Platform Format Notes
🐧 Linux .deb Debian/Ubuntu-based
🍎 macOS .dmg Intel & Apple Silicon
πŸͺŸ Windows .exe installer Unsigned β€” see note below

Windows note: Windows builds are unsigned. SmartScreen will warn on first launch. Click More info β†’ Run anyway.

Requirements

Backend requirements depend on what you use:

  • OpenCode harness β€” OpenCode CLI installed and on PATH
  • Grok Build harness β€” Grok Build CLI installed (grok on PATH) and authenticated (grok login or XAI_API_KEY)
  • Other harnesses β€” local CLI and auth for that harness on your machine

Windows prerequisite for OpenCode: OpenCode must be on PATH or at %USERPROFILE%\.opencode\bin\opencode.exe.


Build from source

Prerequisites

  • Node.js 24+
  • pnpm 11+
  • At least one supported harness configured locally (e.g. OpenCode CLI on PATH)

OpenGUI uses Vite+ (vite-plus) as a dev dependency. After pnpm install, run it as pnpm vp <command>. No global installs needed β€” Electron and other deps come from pnpm install.

pnpm install

Tooling (Vite+)

Lint, format, typecheck, test, build, and named tasks use Vite+ (vp). Prefer pnpm vp … or pnpm run <script> when a script exists in package.json. A global vp on your PATH is optional, not required.

No manual config file needed. Connection settings live in the UI.

Development

Goal Command
Desktop app (Electron, hot reload) pnpm run dev
Web UI (browser + API) pnpm run dev:web

For web dev, open the URL Vite prints in the terminal (default port is often 5173). Browser folder picker uses server paths. To restrict browsable folders:

export OPENGUI_ALLOWED_ROOTS=/path/to/projects

Production

Build the frontend bundle first, then start:

pnpm run build        # or: pnpm vp build
pnpm run start        # Electron
pnpm run start:web    # browser + backend API

For internet-facing deploys, keep OpenGUI bound to localhost and put Apache or another HTTPS reverse proxy in front.

Docker

Official image: ghcr.io/akemmanuel/opengui:latest

Docker supports contained mode and host-control mode (uses host CLIs through nsenter while Docker manages the web server).

See docs/docker.md for details and docs/apache.md for Apache reverse proxy + Basic Auth.

Distribution builds

Platform Command
🐧 Linux .deb pnpm run dist:linux
🍎 macOS .dmg pnpm run dist:mac
πŸͺŸ Windows .exe pnpm run dist:win

Architecture

Four layers. See CONTEXT.md and ADR 0005 for details.

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                   Shell                          β”‚
β”‚  Desktop (Electron) Β· Web Β· Mobile (Capacitor)  β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚               OpenGUI Frontend                   β”‚
β”‚  React UI Β· Workspaces Β· Projects Β· Chat Β· Queue β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚               OpenGUI Backend                    β”‚
β”‚  HTTP/SSE Β· Queue dispatch Β· Auth Β· Persistence  β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚               OpenGUI Runtime                    β”‚
β”‚  Harness Adapters Β· Event normalization Β· SDK    β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚    OpenCode Β· Claude Code Β· Codex Β· Pi Β· Grok    β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Key source layout:

Path Role
main.ts Desktop Shell (window, IPC, backend sidecar)
preload.js Desktop Shell preload API
packages/runtime/src/adapters/* Harness Adapters (hosted inside Backend via Runtime)
packages/backend/src/ Backend host (SSE, RPC, FS, product API)
server/web-server.ts Thin HTTP listen entry (calls createBackendHost)
src/ Frontend React app

See docs/architecture.md for contributor architecture notes and the harness addition guide.


Configuration

OpenGUI stores connection and UI preferences via the app settings interface.

Voice input (speech-to-text) requires a Whisper-compatible transcription server. Set the endpoint URL in Settings β†’ General β†’ Voice transcription endpoint. The microphone button only appears when an endpoint is configured. The server should accept a multipart POST with an audio file field and return { text, language, duration_seconds }.


SDK (@opengui/runtime)

Embed the same in-process harness runtime the app uses β€” list sessions, stream events, and send prompts on a filesystem directory without HTTP or React.

Quickstart and API contracts: packages/runtime/README.md

pnpm run test:runtime   # SDK unit tests
pnpm run test:bridges   # Bridge mapping tests

Contributing

Contributions are welcome! See CONTRIBUTING.md for guidelines.

  • πŸ› Found a bug? Open an issue
  • πŸ’‘ Have an idea? Start a discussion
  • πŸ”€ Want to contribute? Open a PR

Star History

If you find OpenGUI useful, please give it a star on GitHub β€” it helps others discover the project.

Star History Chart

License

MIT β€” see LICENSE for details.

About

Desktop AI command center for OpenCode, Claude Code, Codex, and Pi. Multi-project AI coding sessions with streaming chat, prompt queue, model switching, and MCP tools.

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors