omp-viewer0.2.0
Live cross-session dashboard and todo tracker for oh-my-pi (omp). Shows every locally running omp session, its status, and its todo list in a small popup window.
Built for omp
The author tagged this package oh-my-pi.
Reports 0
No reports yet.
Readme
omp-viewer
Live cross-session dashboard and todo tracker for oh-my-pi (omp).
Shows every locally running omp session in a small popup window: cwd, session
name, busy/idle/needs-you status, last tool, context-window pressure, cumulative
cost/token usage, and its todo list (mirrored from omp's built-in todo tool —
this extension registers no new todo tool and adds no tokens to any request).
Install
npm install --prefix ~/.omp/agent/extensions/omp-viewer omp-viewer
That's it — a postinstall script registers the extension in
~/.omp/agent/config.yml's extensions: list automatically (omp itself,
confirmed against v18.1.18, does not auto-discover anything under
extensions/ on its own; this script is what makes "nothing else to
install" actually true). It only ever edits an existing config.yml —
if you've never run omp yet, or the file's extensions: key isn't a
plain list, or anything else goes wrong, it backs off and prints the exact
YAML to add by hand instead of guessing at your config's shape.
Reload plugins (or start a new omp session) once it's registered.
To skip npm entirely and point config.yml straight at a package you
dropped somewhere yourself:
extensions:
- ./path/to/omp-viewer
Use
- The first
ompsession on the machine spawns a small background server (default port8317) and opens the dashboard in a chromeless app-mode browser window. - Every later session just connects to that server; closing a session removes it from the roster within a heartbeat.
- Closing the popup is not permanent: the next prompt you send in any
session reopens it automatically. Run
/dashboardinstead if you want it back immediately without waiting for your next message. - Killing the server (or the machine sleeping/crashing) recovers automatically: the next session that can't connect respawns it.
- The terminal window/tab title updates live with a status glyph (🟢 idle / 🟡 busy / 🔴 needs you) plus the session name, so you can find the right window without the popup at all.
- A native desktop notification fires the moment any session starts needing you (tool approval or a question), on Windows and Linux.
- Click 📌 in the dashboard header to pin it above every other window, via the browser's native Document Picture-in-Picture API — the same mechanism behind Spotify's web player miniplayer. Click 📍 (or the restore button left in the now-empty original window) to unpin. Chromium 116+ only (Edge/Chrome both qualify); the button is hidden on anything older.
- Any question the agent asks via the
asktool can be answered from either the terminal or the popup — whichever you respond to first wins; the other is cancelled. Tool-approval prompts ("Allow tool: write/bash/...") are still terminal-only — the extension can flag them (red dot, toast) but has no API to decide them, and routing that decision through an unauthenticated local socket would be a real security regression.
Configuration
OMP_DASHBOARD_PORTenvironment variable, or<project>/.omp/omp-viewer.json:{ "port": 8300 }
Security
The dashboard WebSocket requires a shared secret, generated on first run and
stored at ~/.omp-viewer/token (owner-only file permissions). Without it,
any local process on the machine could otherwise read your session state (or,
now that ask answering exists, answer the model's questions on your
behalf) just by connecting to the loopback port. The extension and the popup
both read this token automatically — nothing to configure.
Requirements
- Windows or Linux, with
node(orbun) reachable onPATHto run the bundled server subprocess. - For the popup window: Microsoft Edge or Google Chrome/Chromium on Windows;
microsoft-edge,google-chrome, orchromiumon Linux. If none is found, the dashboard link,/dashboardcommand, and terminal-title/toast signals all still work — the popup just doesn't open (openhttp://127.0.0.1:8317/?token=<contents of ~/.omp-viewer/token>in any browser instead).
Non-goals
No remote access, no shared multi-user server, no editing todos from the popup, no chat/transcript mirroring, no answering tool-approval prompts remotely.