Skip to content

bjb2/omp-deck

Repository files navigation

omp-deck

A cockpit web UI for the oh-my-pi (omp) coding agent. Multi-session chat with full tool-call rendering, a kanban backed by SQLite, cron routines, an inbox with one-click promote, a plugin marketplace, themable settings, and a Telegram bridge — all in a single Bun process, designed to run loopback-only behind Tailscale or an SSH tunnel.

Status: v0.2 release — KB Cockpit + Maintenance Gate. See CHANGELOG.md for the full feature inventory.

omp-deck chat surface — live tool calls + orientation summary

More screenshots
Kanban Marketplace
Kanban with T-N display IDs (paper theme) Marketplace browser populated with anthropics/claude-plugins-official (slate theme)
Appearance settings Messaging settings
Settings → Appearance theme cards Settings → Messaging with the Telegram bridge supervisor

Why

The omp TUI is excellent at what it does, but a terminal isn't always where you want to drive an agent — you might want a kanban to track its work, a phone bridge to ask it things from the couch, a marketplace to install plugins without hand-editing JSON, or just a calmer surface for long sessions. omp-deck gives you all of that while reusing the SDK in-process so the chat itself stays at parity with the TUI.

omp-deck is not a replacement for omp. It embeds the same SDK and shares its session + auth store. Run both; they coexist.

Highlights

  • Chat with multi-session sidebar, per-tool renderers (read / write / edit / bash / search / lsp / task / eval / web_search / todo_write / generate_image / browser), thinking blocks, hashline diff coloring, cost rollup, image paste/drop/attach, compaction + auto-retry indicators.
  • Slash commands with four scopes (deck / builtin / user / project) and in-process dispatch — /task add, /context, /compact, /usage run instantly with no model round-trip.
  • Knowledge base/kb view over your local Karpathy-style llm-wiki at ~/kb (override via OMP_DECK_KB_ROOT). Lazy tree, markdown viewer with [[wikilink]] resolution + create-on-click, in-pane editor, Obsidian- style force-directed graph view (?view=graph) with click-to-isolate per source directory, full-text search + Ctrl-P quick-open palette, inspector with outbound links + backlinks + tag chips + orphan badge. Empty kb surfaces a one-click setup flow. Hide subtrees with OMP_DECK_KB_EXCLUDE_DIRS=<csv>.
  • Skills/skills surfaces every skill omp loads across all providers (native, claude-plugins, claude, codex, …), not just marketplace plugins. Native (~/.omp/agent/skills/) sorts first. Ships an omp-native create-skill starter — first-party authoring loop with no Claude-Code dependencies.
  • Maintenance gate — bundled omp SDK extension (installed to ~/.omp/agent/extensions/ on boot) that nudges the agent at turn-end (~every 10 turns) to capture reusable output into the canonical org folders (inbox/, tasks/, knowledge/, queries/, context/, …) or state "No maintenance needed" to release. Structural org-root sniff only activates for cwds with the canonical layout. Universal across deck, omp TUI, and ACP sessions (the deck wires ExtensionRunner into InProcessAgentBridge).
  • Kanban with Jira-style display IDs (T-1, T-2, ...), drag-and-drop, configurable columns, and live WebSocket broadcasts — agent or external scripts mutating tasks refresh every open kanban without polling.
  • Routines — cron scheduler for bash / prompt / script actions with run history.
  • Inbox — quick capture surface with promote-to-task.
  • Settings — masked secret store with atomic .env writes + audit log, hot-applied env updates where possible, a one-click server restart for the rest. Paper / Slate / Horizon themes with FOUC-free pre-paint.
  • Marketplace — browse and install plugins/skills/MCPs over the SDK's MarketplaceManager. Empty state seeds with anthropics/claude-plugins-official.
  • Model picker — chat-header modal listing every model the SDK knows about, default-filtered to ones with configured auth, provider-grouped.
  • Telegram bridge — standalone Bun process supervised by the deck; DM the agent from your phone with allowlist gating and streaming editMessageText replies.

How it compares

omp-deck only makes sense as a pair with the omp coding agent — omp is the agent loop, omp-deck is the cockpit you drive it from. Compared against the closest neighbors in the agentic-coding space:

omp + omp-deck Claude Code Hermes Agent OpenClaw
Form factor Terminal TUI (omp) + web cockpit (omp-deck) Terminal CLI / IDE plugin Terminal TUI + multi-channel gateway Daemon + multi-channel gateway
Underlying agent omp, in-process via @oh-my-pi/pi-coding-agent SDK Anthropic-built CLI Hermes core (Nous Research) OpenClaw Gateway
Model support Anthropic, OpenAI, Google AI / Vertex, OpenRouter, Ollama, llama.cpp, LM Studio, any OpenAI-compatible Anthropic Claude only Model-agnostic (Nous Portal, OpenRouter, NIM, …) Model-agnostic (profiles in openclaw.json, w/ fallback chain)
Hosting Self-hosted Bun process, loopback-only by default Anthropic-hosted CLI Local / Docker / SSH / Modal / Daytona / Vercel Sandbox Self-hosted on owned host (Mac mini, VPS)
Auth OAuth, API key, or provider key — shared with the omp CLI Anthropic OAuth / API key Per-provider keys Per-provider keys + profile rotation
Multi-session chat First-class sidebar in the deck Single session at a time Single agent across channels Per-channel sessions
Kanban / task board Built-in, WS-synced, T-N display IDs
Scheduled routines Cron via croner (bash / prompt / script) Heartbeat scheduler (~30 min)
Inbox + promote-to-task Built-in
Plugins / skills SDK loader + in-app marketplace (Anthropic plugin format) claude plugins registry Skills with autonomous creation + refinement Skills installed from ClawHub; skills can write skills
Self-improving over time — (skills are user/marketplace-authored) ✅ learning loop, deepening user model Skills can self-install
Messenger bridges Telegram (Slack / Discord / Matrix on the roadmap) Telegram, Discord, Slack, WhatsApp, Signal 20+ (WhatsApp, Telegram, Slack, Discord, iMessage, Matrix, Teams, …)
License MIT Proprietary (Anthropic Commercial Terms) Open source (Nous Research) Open source

The short version: Claude Code is the polished, vendor-supported terminal experience for Claude. Hermes is the self-improving agent that compounds skills over time and supports serverless backends. OpenClaw is the multi-channel personal assistant that lives wherever you message from. omp + omp-deck is the cockpit shape — a model-agnostic coding agent in your terminal plus a kanban / routines / inbox / marketplace / Telegram-bridge web surface to drive it.

Quickstart

If you already use omp on this machine

git clone https://github.com/bjb2/omp-deck.git
cd omp-deck
bun install
bun run dev

Open http://127.0.0.1:5173. Your existing ~/.omp/agent is picked up automatically — no re-auth.

If you don't have omp yet

See docs/install.md. The short version:

# 1. Install Bun (https://bun.sh)
# 2. Install the omp CLI globally so you can authenticate
bun add -g @oh-my-pi/pi-coding-agent
omp                                          # interactive auth (browser OAuth or API key)
# 3. Clone and run the deck
git clone https://github.com/bjb2/omp-deck.git
cd omp-deck
bun install
bun run dev

Or skip the CLI entirely and paste your provider API key into Settings → Env after the deck is up.

Architecture in two lines

A Bun + Hono backend embeds @oh-my-pi/pi-coding-agent. The Vite + React frontend is a pure consumer of a WebSocket event stream. The contract layer (packages/protocol) is dep-free shared types.

Browser (Vite :5173 or built bundle on :8787)
   │  WS frames + REST control plane
   ▼
Bun server  (apps/server)
   ├─ AgentBridge → InProcessAgentBridge → omp SDK
   ├─ Hono routes  /api/{sessions, tasks, routines, inbox, settings,
   │                     models, marketplace, bridges, slash-commands, fs}
   ├─ WebSocket hub  /ws  (session events + tasks_changed broadcasts)
   ├─ Routines runner (croner)
   ├─ BridgeSupervisor (telegram bridge, future Slack/Discord)
   └─ MarketplaceService (SDK MarketplaceManager wrapper)

Full diagram in docs/architecture.md.

Docs

  • Install — fresh vs existing-omp install paths.
  • Configuration — full env reference + restart semantics.
  • Deployment — Tailscale, Docker, SSH-tunnel, hardening checklist.
  • Slash commands — deck /task family, SDK builtins, user/project markdown commands.
  • Marketplaces — catalog seeding, install semantics, capability badges.
  • Skills/skills view, plugin→skill hierarchy, scope semantics, live refresh, REST surface.
  • Telegram bridge — DM-driven agent from your phone.
  • Themes — Paper / Slate / Horizon / adding more.
  • Start command template — define /start for an auto-orientation greeting.
  • Architecture — workspace layout, frame model, synthetic events, theming.
  • TUI parity — feature matrix vs the omp TUI.
  • Contributing — dev loop, code quality, style.

Security

The deck ships without an auth layer. Bind it loopback-only (the default) and front it with Tailscale Serve / SSH tunnel / a reverse proxy. The hardening checklist in docs/deployment.md covers what to verify before exposing the deck to a network anyone else can reach.

Provider API keys live in env vars (your shell, or the deck-managed .env). The Settings UI masks them by default; revealing a secret requires a loopback request. The deck never logs values, only redacted forms.

Status & roadmap

v0.2 shipped:

  • KB Cockpit (tree / viewer / editor / graph / search / inspector) over ~/kb with live updates.
  • Skills cockpit pivoted to omp-native (loadCapability over all providers).
  • Bundled create-skill and maintenance-gate starters; deck installs them on boot and InProcessAgentBridge now wires ExtensionRunner so extensions actually fire in deck sessions.
  • Horizon theme (ported from opus-extensions/omp-themes/horizon.json).
  • External links open in a new tab across every markdown surface.
  • CRLF-tolerant frontmatter parsing fixes Windows-saved YAML.

Still deferred:

  • Permission prompts (ask tool) via bidirectional WS UI bridge.
  • Plan-mode UI (banner + plan file viewer).
  • File browser in the inspector.
  • Subprocess-per-session bridge impl for crash isolation.
  • Slack / Discord / Matrix bridges (same supervisor pattern as Telegram).
  • bunx omp-deck install path / Docker image build verified.

License

MIT. See LICENSE.

About

Cockpit web UI for the omp (oh-my-pi) coding agent. Multi-session chat, kanban, cron routines, inbox, Telegram bridge, plugin marketplace.

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages