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.
You do not need to install the omp CLI separately — Ompcot bundles its own omp runtime.
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:
- Drag
Ompcot.appinto/Applications - Right-click → Open
- If blocked: System Settings → Privacy & Security → Open Anyway
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.
- 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
- 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
- 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
- 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)
- Browse, install, and remove community packages from within the UI
- Built on top of
omp install— no separate package commands needed
- 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
- 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
- Mic button in the input area using Web Speech API (on-device dictation)
- Live transcription into the textarea; pulses red while recording
- Right sidebar with lazy-loaded file tree
- Navigate directories, open files natively
- Drag files onto the input to insert their path
- 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
Ompcot does not re-implement agent logic — it embeds OMP and exposes its runtime capabilities through a native UI.
- Embedded
omp --mode rpcruntime — 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
┌──────────────────────────────────────────────────────┐
│ 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.
- Launch Ompcot
- Click a project bubble or pick a folder
- 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.
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 reloadTo make a release build:
bun run build # runs fetch:omp + build:extensions + tauri buildAfter 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.
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-agentand related packages
MIT