A desktop GUI frontend for the omp AI coding agent, built with Electron + React + TypeScript. UI inspired by Codex / Claude Code: a focused, dark, developer-centric agent console with an embedded terminal, diff review, and a plugin market.
This is an independent community project. It is related to — but not developed or endorsed by — the oh-my-pi (omp) authors. omp itself is a separate program you install yourself.
The desktop app is only a frontend — it does not bundle an agent. It launches omp --mode rpc as a managed subprocess per chat session and speaks the JSONL RPC protocol over stdio (see omp's docs/rpc.md).
ompmust be installed and reachable onPATH(the Windows installer puts it at%LOCALAPPDATA%\omp\omp.exe). If yours lives elsewhere, set theOMP_BINARYenv var, or set the path in Settings → General → omp command.- omp's own settings live in
~/.omp/agent/config.yml(+<cwd>/.omp/config.yml). This GUI does not manage provider API keys or logins — model selection, thinking level, and provider accounts are driven through omp itself (/login, RPCset_model/set_thinking_level, or the GUI pages that wrap them). - Plugin installs from the npm/pi catalog additionally require bun on PATH (
npm i -g bunon Windows).
| Platform | Artifact |
|---|---|
| Windows (winget) | winget install Ranzon.OhMyPiDesktop (after the manifest is published) |
| Windows | oh-my-pi-desktop-Setup-<v>.exe (NSIS) or the portable .exe |
| Debian/Ubuntu | oh-my-pi-desktop_<v>_amd64.deb |
| Fedora/RHEL | oh-my-pi-desktop-<v>.x86_64.rpm |
| Any Linux | oh-my-pi-desktop-<v>-x86_64.AppImage |
Config/data directory (created on first run, no spaces): %APPDATA%\oh-my-pi-desktop (Windows) · ~/.config/oh-my-pi-desktop (Linux).
- Electron (ESM main) — window, IPC, settings & session persistence
- React 18 + Vite + Zustand — renderer UI
- node-pty + xterm.js — embedded terminal panel
- electron-store — GUI settings persistence
src/
shared/ IPC contract & domain types (imported by main, preload, renderer)
main/ Electron main process (windows, IPC, omp RPC bridge, PTY, proxy)
preload/ contextBridge exposing window.omp
renderer/ React UI (sidebar, chat, composer, context panel, settings)
npm install
npm run dev # Vite dev server (renderer hot-reload) + Electron
npm run dev:web # browser-only mode via scripts/dev-bridge.mjs (no Electron)window.omp is the typed bridge between renderer and main (see src/shared/contract.ts); events.onOmpFrame exposes the raw omp frame stream.
npm run build # renderer + main + preload -> dist/
npm start # run the built app
npm run dist:win # NSIS installer + portable exe (on Windows)
npm run dist:linux # AppImage + deb + rpm (on Linux, needs build-essential + python3 for node-pty)
npm run dist:winget -- --url <installer-url> # generate the winget manifestSee docs/09-packaging.md for the full packaging & distribution guide (targets, CI, signing, winget submission, auto-update).
- App icon: the "Pi + plugin connector" mark from
can1357/oh-my-pi(MIT), composited with themonitoricon from Feather Icons (MIT).
MIT © Ranzon