{"id":44961547,"url":"https://github.com/akemmanuel/opengui","last_synced_at":"2026-05-27T01:07:03.538Z","repository":{"id":339065301,"uuid":"1160163216","full_name":"akemmanuel/OpenGUI","owner":"akemmanuel","description":"Desktop + web command center for OpenCode, Claude Code, Codex, and Pi. Multi-project AI coding sessions with streaming chat, prompt queue, model switching, and MCP tools.","archived":false,"fork":false,"pushed_at":"2026-05-11T18:28:35.000Z","size":7783,"stargazers_count":39,"open_issues_count":3,"forks_count":4,"subscribers_count":2,"default_branch":"master","last_synced_at":"2026-05-11T19:27:39.810Z","etag":null,"topics":["agent-ui","ai-agents","claude-code","codex","coding-agents","desktop-app","developer-tools","electron","llm-tools","opencode","self-hosted"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/akemmanuel.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-02-17T16:06:55.000Z","updated_at":"2026-05-11T18:28:38.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/akemmanuel/OpenGUI","commit_stats":null,"previous_names":["akemmanuel/opengui"],"tags_count":41,"template":false,"template_full_name":null,"purl":"pkg:github/akemmanuel/OpenGUI","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akemmanuel%2FOpenGUI","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akemmanuel%2FOpenGUI/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akemmanuel%2FOpenGUI/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akemmanuel%2FOpenGUI/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/akemmanuel","download_url":"https://codeload.github.com/akemmanuel/OpenGUI/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akemmanuel%2FOpenGUI/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32920399,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-11T17:09:15.040Z","status":"online","status_checked_at":"2026-05-12T02:00:06.338Z","response_time":102,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agent-ui","ai-agents","claude-code","codex","coding-agents","desktop-app","developer-tools","electron","llm-tools","opencode","self-hosted"],"created_at":"2026-02-18T13:09:03.849Z","updated_at":"2026-05-12T02:03:37.524Z","avatar_url":"https://github.com/akemmanuel.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"opengui-dark.svg\" alt=\"OpenGUI\" width=\"280\" /\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  Desktop + web command center for coding agents. Run \u003ca href=\"https://opencode.ai\"\u003eOpenCode\u003c/a\u003e, Claude Code, Codex, and Pi across multiple projects with streaming chat, prompt queue, model switching, voice input, and MCP tools.\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/akemmanuel/OpenGUI/releases/latest\"\u003e\u003cimg src=\"https://img.shields.io/github/v/release/akemmanuel/OpenGUI?label=release\u0026color=blue\" alt=\"Latest Release\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/akemmanuel/OpenGUI/blob/master/LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/github/license/akemmanuel/OpenGUI\" alt=\"License\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/akemmanuel/OpenGUI/stargazers\"\u003e\u003cimg src=\"https://img.shields.io/github/stars/akemmanuel/OpenGUI?style=social\" alt=\"Stars\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/akemmanuel/OpenGUI/releases\"\u003e\u003cimg src=\"https://img.shields.io/github/downloads/akemmanuel/OpenGUI/total?color=green\" alt=\"Downloads\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/akemmanuel/OpenGUI/actions\"\u003e\u003cimg src=\"https://img.shields.io/github/actions/workflow/status/akemmanuel/OpenGUI/build.yml?branch=master\" alt=\"Build Status\" /\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/akemmanuel/OpenGUI/releases/latest\"\u003eDownload latest release\u003c/a\u003e\n  ·\n  \u003ca href=\"#why-opengui\"\u003eWhy OpenGUI\u003c/a\u003e\n  ·\n  \u003ca href=\"#supported-agent-backends\"\u003eSupported backends\u003c/a\u003e\n  ·\n  \u003ca href=\"#build-from-source\"\u003eBuild from source\u003c/a\u003e\n\u003c/p\u003e\n\n\u003c!-- TODO: Replace screenshot with short demo GIF: open project, switch backend, send prompt, stream response, queue prompt. --\u003e\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"demo.gif\" alt=\"OpenGUI Demo\" width=\"800\" /\u003e\n\u003c/p\u003e\n\nOpenGUI gives coding-agent users desktop and browser workflow for long sessions. Manage multiple projects visually, run different agent backends from one UI, watch responses stream live, queue prompts while agent works, and switch models or agents without terminal juggling.\n\n\u003e Early but usable. Bug reports and PRs welcome.\n\n## Why OpenGUI\n\nOpenGUI is for people who like coding agents but want stronger workflow than terminal tabs alone:\n\n- **Run multiple agent backends in one app** instead of juggling separate tools\n- **Manage multiple projects at once** with separate sessions per workspace\n- **See streaming responses live** with token and context usage\n- **Queue prompts while agent is busy** instead of waiting to type next step\n- **Switch providers, models, agents, and variants** from UI\n- **Configure MCP tools and skills** without leaving app\n- **Use voice input** with Whisper-compatible transcription endpoint\n\n## Highlights\n\n- **Multi-agent workspace** for OpenCode, Claude Code, Codex, and Pi\n- **Multi-project workspaces** for parallel coding sessions\n- **Real-time streaming** over SSE with live usage tracking\n- **Prompt queue** that auto-dispatches when assistant becomes idle\n- **Model, backend, and agent selection** directly from chat workflow\n- **Slash commands** from prompt box\n- **Syntax highlighting** with Shiki\n- **Dark/light theme** with system-aware toggle\n- **Desktop, web, and Docker deployment options**\n- **Cross-platform builds** for Linux, macOS, and Windows\n\n## Supported agent backends\n\nOpenGUI currently supports these coding-agent backends:\n\n- **OpenCode**\n- **Claude Code**\n- **Codex**\n- **Pi**\n\nUse one backend or switch between them per workflow.\n\n## Download\n\nGrab prebuilt app from [latest release](https://github.com/akemmanuel/OpenGUI/releases/latest):\n\n- **Linux:** `.deb`\n- **macOS:** `.dmg`\n- **Windows:** `.exe` installer\n\n### Requirements\n\nBackend requirements depend on what you use:\n\n- **OpenCode backend:** [OpenCode CLI](https://opencode.ai) installed and available in your `PATH`\n- **Other backends:** local CLI/auth/config for that backend available on your machine\n\n\u003e **Windows prerequisite for OpenCode:** OpenCode must be available on your `PATH` or at `%USERPROFILE%\\.opencode\\bin\\opencode.exe`.\n\n\u003e **Note:** Windows builds are unsigned. Windows SmartScreen will warn on first launch. Click **More info** -\u003e **Run anyway**.\n\n## Build from source\n\n### Prerequisites\n\n- [Bun](https://bun.sh) v1.2+ runtime\n- [pnpm](https://pnpm.io/) 10+ package manager\n- At least one supported backend configured locally (for example OpenCode CLI in your `PATH` for OpenCode)\n- [Electron](https://www.electronjs.org/) installed through project dependencies\n\nOpenGUI uses Bun as the runtime for the Electron/web backend, pnpm for dependency management, and Vite+ (`vp`) as the development/build/check task runner.\n\nInstall dependencies:\n\n```bash\npnpm install\n```\n\nNo manual config file needed. Connection settings live in UI. Pick backend, connect workspace, start prompting.\n\n### Development\n\nRun Electron app with HMR:\n\n```bash\nvp run dev\n```\n\nRun web app with local backend API (projects, git, agents):\n\n```bash\nvp run dev:web\n```\n\nOpen `http://127.0.0.1:3000`. Browser folder picker uses server paths. Set `OPENGUI_ALLOWED_ROOTS=/path/to/projects` to restrict browsable folders.\n\n### Docker\n\nOfficial image: `ghcr.io/akemmanuel/opengui:latest`.\n\nDocker install supports contained mode and host-control mode. Host-control mode uses host CLIs through `nsenter` while Docker manages web server.\n\nSee [docs/docker.md](docs/docker.md) for GHCR install, Docker modes, and [docs/apache.md](docs/apache.md) for Apache reverse proxy + Basic Auth.\n\n### Production\n\nBuild frontend bundle:\n\n```bash\nvp build\n```\n\nRun Electron app in production mode:\n\n```bash\nvp run start\n```\n\nBuild and run web app in production mode:\n\n```bash\nvp run start:web\n```\n\nFor internet-facing deploys, keep OpenGUI bound to localhost and put Apache or another HTTPS reverse proxy in front.\n\n### Distribution\n\nBuild Linux `.deb`:\n\n```bash\nvp run dist:linux\n```\n\nBuild macOS `.dmg`:\n\n```bash\nvp run dist:mac\n```\n\nBuild Windows `.exe` installer:\n\n```bash\nvp run dist:win\n```\n\n## Architecture\n\n```\nmain.ts              Electron main process (window management, IPC)\npreload.js           Preload script (contextBridge API for renderer)\nopencode-bridge.ts    IPC bridge to OpenCode SDK\nclaude-code-bridge.ts IPC bridge to Claude Code SDK\ncodex-bridge.ts       IPC bridge to Codex SDK\npi-bridge.ts          IPC bridge to Pi runtime\nserver/web-server.ts  Bun runtime backend for browser mode (RPC, events, server FS browser)\nsrc/\n  index.html          HTML entry point\n  frontend.tsx        React entry point + web Electron shim install\n  App.tsx             Main app layout\n  hooks/\n    use-agent-impl-core.tsx  Central agent/workspace state\n  components/         UI components (sidebar, messages, prompt box, etc.)\n  lib/\n    web-electron-api.ts      Browser shim for Electron preload API\n  types/              TypeScript type definitions\n```\n\n## Configuration\n\nOpenGUI stores connection and UI preferences via the app settings interface.\n\nVoice input (speech-to-text) requires a Whisper-compatible transcription server. Set the endpoint URL in **Settings \u003e General \u003e 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 }`.\n\n## Contributing\n\nContributions are welcome. See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.\n\n## Star History\n\nIf you find OpenGUI useful, consider giving it a star -- it helps others discover the project.\n\n\u003ca href=\"https://github.com/akemmanuel/OpenGUI/stargazers\"\u003e\n  \u003cimg src=\"https://img.shields.io/github/stars/akemmanuel/OpenGUI?style=social\" alt=\"Star OpenGUI on GitHub\" /\u003e\n\u003c/a\u003e\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fakemmanuel%2Fopengui","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fakemmanuel%2Fopengui","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fakemmanuel%2Fopengui/lists"}