Skip to content
 
 

Repository files navigation

Ompcot

English | 中文

A local desktop GUI for the Oh My Pi (OMP) coding agent. No cloud, no account — runs entirely on your machine.

Ompcot bundles the omp runtime inside the .app, so there's no separate omp install to manage, no PATH shenanigans, and no version drift between Ompcot and the agent it talks to.

Forked from Picot (which was a fork of Tau), adapted for OMP instead of Pi.


Install

Download from GitHub Releases

You do not need to install the omp CLI separately — Ompcot bundles its own omp runtime.

macOS unsigned release notice

Ompcot currently ships macOS builds without Apple Developer ID signing/notarization. Expected Gatekeeper behavior:

"Ompcot" cannot be opened because the developer cannot be verified.

To allow it:

  1. Drag Ompcot.app into /Applications
  2. Right-click → Open
  3. If blocked: System Settings → Privacy & Security → Open Anyway

What it does

Ompcot gives you a full visual interface for OMP. Open any project folder, start chatting with the agent, browse sessions and files — no terminal required. Multiple projects run in parallel, each in its own window with its own isolated agent process.


Features

💬 Chat

  • Full markdown rendering with syntax-highlighted code blocks
  • Streaming responses with live typing indicator (powered by remend)
  • Image attachments — paste, drag & drop, or button
  • Inline diff viewer for edit tool calls (red/green lines)
  • Tool-call cards and thinking blocks rendered live
  • Copy any message with one click
  • Scroll-to-bottom button with unread indicator
  • Message queuing — type while the agent is working; messages queue as pills and auto-send when ready

🗂️ Multi-Session & Multi-Agent

  • Multiple agents in parallel — each session spawns its own headless omp process; no new OS window, no interruption of running sessions
  • Browse and resume any past session from the sidebar
  • Full-text search across all session history with highlighted snippets
  • Sessions sorted by creation time; live session marked with a green dot
  • Inline session rename, favourites, tags, and filtering

🗃️ Projects & Workspace

  • Multi-project — each project gets its own window, working directory, session history, and agent
  • Shows the current git branch in the project header
  • Open in external editor — launch VS Code, Cursor, or any app directly from Ompcot
  • Native folder picker to open any project without touching the terminal

📱 Mobile & LAN Access

  • LAN QR code — scan to open Ompcot on any device on the same network
  • Mobile-optimised URL handling and App Launcher support (installable as PWA on iOS/Android)

📦 Package Manager

  • Browse, install, and remove community packages from within the UI
  • Built on top of omp install — no separate package commands needed

💰 Cost & Usage Dashboard

  • Per-session cost tracking with live token/cost metrics
  • Full cost dashboard with infobar, trends, and per-model breakdown
  • Context window visualiser — click the token pill to see cached tokens, fresh input, and available space

🎨 Themes & Appearance

  • Six built-in themes: Dusk, Dawn, Midnight, Clean, Terracotta, Sage
  • Frosted-glass header and input bar (backdrop-filter: blur)
  • Native macOS title bar overlay integration
  • Window dragging from the header area — feels like a native app

🎤 Voice Input

  • Mic button in the input area using Web Speech API (on-device dictation)
  • Live transcription into the textarea; pulses red while recording

🗄️ File Browser

  • Right sidebar with lazy-loaded file tree
  • Navigate directories, open files natively
  • Drag files onto the input to insert their path

⚙️ Settings & Control

  • Model picker with search/filter and keyboard support
  • Thinking level toggle (off / low / medium / high)
  • Auto and manual context compaction with status display
  • Push notification toggle

OMP capabilities integrated

Ompcot does not re-implement agent logic — it embeds OMP and exposes its runtime capabilities through a native UI.

  • Embedded omp --mode rpc runtime — one managed process per workspace, isolated by project
  • Streaming RPC bridge — token-by-token output, tool-call events, and thinking blocks rendered live
  • Session lifecycle APIs — create, switch, and resume sessions; full per-project history
  • WebSocket broker — multiple UI clients can connect to the same omp process simultaneously
  • Extension compatibility — user extensions from ~/.omp/agent/extensions/ and .omp/extensions/ are auto-loaded
  • Credential reuse — reads OMP's existing ~/.omp/agent/auth.json; no separate login needed

How it works

┌──────────────────────────────────────────────────────┐
│ Ompcot .app                                          │
│                                                      │
│   Tauri + OmpManager (Rust)                          │
│      ├─► spawn  omp --mode rpc  (project A, :3001)   │
│      ├─► spawn  omp --mode rpc  (project B, :3002)   │
│      └─► OS Window per project ──► WebView ──► HTTP  │
│                                                      │
│   resources/                                         │
│      ├─ public/             (frontend)               │
│      ├─ extensions/         (embedded-server.mjs)    │
│      └─ omp/                (omp binary)             │
└──────────────────────────────────────────────────────┘
                       │
                       ▼ reads / writes
              ~/.omp/agent/
                 ├─ sessions/   (chat history)
                 ├─ auth.json   (API keys)
                 └─ settings.json

The embedded omp process loads embedded-server.mjs at startup. That extension owns the HTTP + WebSocket surface the Tauri WebView talks to: static assets, /api/sessions, /api/cost-dashboard, RPC bridge for prompts, etc. Ompcot's Rust side controls process lifecycle, port allocation, and window management.


Usage

  1. Launch Ompcot
  2. Click a project bubble or pick a folder
  3. Start chatting — the embedded omp agent starts automatically

Provide your model credentials via omp /login inside any workspace, or by writing ~/.omp/agent/auth.json directly. Ompcot doesn't manage credentials itself.


Build from source

git clone https://github.com/zephyrq-z/ompcot.git
cd ompcot
bun install --frozen-lockfile
bun run fetch:omp   # copy omp binary from Homebrew into resources/
bun run dev          # start tauri dev with hot reload

To make a release build:

bun run build        # runs fetch:omp + build:extensions + tauri build

After any changes under src-tauri/:

bun run check:rust   # cargo check + clippy + fmt (fast; no full build needed)

To bump the embedded omp version, edit scripts/omp-version.json, run bun run fetch:omp, smoke-test, and commit.


Upstream

Ompcot is a fork of Picot (which was a fork of Tau), adapted for OMP. Key changes:

  • Pi → OMP migration — all binary references, package names, paths, and env vars updated
  • Homebrew-sourced binary — copies omp from local Homebrew installation instead of downloading from GitHub releases
  • OMP SDK packages@oh-my-pi/pi-coding-agent and related packages

License

MIT

About

Local Codex-style desktop GUI for the Pi coding agent

Resources

Stars

15 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages