Skip to content

Repository files navigation

Oh My Pi Desktop

English · 中文

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.

Prerequisite: install omp first

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).

  • omp must be installed and reachable on PATH (the Windows installer puts it at %LOCALAPPDATA%\omp\omp.exe). If yours lives elsewhere, set the OMP_BINARY env 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, RPC set_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 bun on Windows).

Install (end users)

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).

Stack

  • 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

Layout

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)

Develop

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.

Build & package

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 manifest

See docs/09-packaging.md for the full packaging & distribution guide (targets, CI, signing, winget submission, auto-update).

Credits

License

MIT © Ranzon

About

Desktop GUI frontend for oh-my-pi (omp). Chat, terminal, and diff review in one console.

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages