An operator console for the RCOS capability loop, side-loaded into DeepSeek Harness (DSH)'s existing web UI. It adds a first-run receipt gate, a Work surface that follows a task from request to verdict, an Intelligence inventory of what the installation can actually execute, and a System panel — and it keeps the older panel tabs (Runs, Summary, Git, Browser, Files, Workflows, Capabilities) and a ⌘K command palette. Nothing is a fork; every surface reads authoritative state and none replaces shipped UI.
Also in this repository: FlowRouter — a sealed federation layer for capability artifacts that transports evidence of trust, never trust itself. Repositories, mirrors, discovery indexes and sync schedulers are all assumed untrusted. Start with
FLOWROUTER.md; the evidence is fourteen raw receipts ineval/receipts/andnode eval/lib/flowrouter-show.mjsprints the end-to-end trace in five minutes.
It is a side-loaded DSH plugin (a Cordis bundle patch), not a fork:
- No upstream changes. One package, installed into a profile; removing it restores stock DSH exactly.
- No duplicate state. Every rendered fact is authoritative Host state, read through the services the web profile already mounts (
ctx.sessionslist + projections + jobs) plus the Archon API and the capability registry. Nothing is polled from the renderer, nothing is inferred from chat text, and the plugin persists nothing of its own. - Additive seats. It registers into the
conversation.viewlist beside Conversation and Trajectory and into the shell's overlay slot. It never replaces shipped UI, and an installation that prefers the old tabs can stay on them.
On an installation that has not yet earned its receipt, the whole UI is the gate:
The gate checks nine components (DSH, operator-ui, Node, Archon, RCOS, git, Chrome, tools, providers) and offers Verify RCOS — which executes a real capability through your registry and your Archon, then seals the result into <home>/operator-ui/receipt.json. The green state is earned, not asserted: the receipt is re-read and re-checked on every load (VALID / STALE / TAMPERED / NONE), so a stale or tampered receipt puts the gate back. Work › unlocks only behind a valid receipt; Use legacy tabs (debug) is the escape hatch.
Work is the operator loop. Type an objective, hand it to RCOS, and the task is routed through the configured registry, executed on the configured Archon, and verified against the capability's declared expectation:
Select a task and you get its spine — REQUEST → ROUTE → EXECUTION → EVIDENCE → VERDICT — with the dots (Observed / Executed / Validated / Objective satisfied) as the at-a-glance state, the authority line ("Ask before acting"), and the next step spelled out. From there, evidence → opens the drawer a reviewer would ask for:
Nothing is dressed up. A goal the installation cannot route is refused before execution — no Archon run, no fabricated evidence, spine columns reading "— (refused before execution)", verdict FAILED · no-route — and the surface offers bounded acquisition instead of pretending:
Intelligence answers "what can this installation actually execute?" Lifecycle is what a capability is; routing is what the router may use right now, with reasons:
System is the receipt and the machine: verification state and age, the receipt hash, the component inventory with versions, Verify again, and the switch to the legacy tabs.
Every screenshot above comes from a sanitized demo home — one promoted capability (word-count 1.0.0 → workflow word-count-v1) executing over a scratch workspace. No real workspace data, paths or session titles.
The older panel set is still registered and unchanged; System → Legacy tabs (or the gate's debug button) is the way back to it:
| Tab | What it shows |
|---|---|
| Runs | one row per session: status dot (running / needs-attention / done / idle / blank), title + preset + cwd, last update, context-pressure meter (warns ≥80%, critical ≥95%), session token total, badges for live background jobs and pending inbox input. Click a row for the detail pane — session facts, the live inbox (queued vs steering placements), running tool calls, background jobs, Open and Cancel turn. |
| Summary | the one-screen answer to "what is this run doing": state, last output, turns/steps/LLM time, context pressure, in-flight work, branch + changes |
| Git | read-only workspace status / diff / log with staged-unstaged-untracked chips |
| Browser | a supervised on-screen browser the agent drives while you watch every action live |
| Files | workspace tree with git M/A/D badges and inline text-file preview |
| Workflows | Archon runs — status, step, ship/fix/blocked |
| Capabilities | registry view — promoted/candidate/retired, gate progress, reuse counts, eval history |
| Work, Intelligence, System | the same three RCOS control-plane surfaces the gate opens, rendered in-session |
The ⌘K / Ctrl+K command palette works from anywhere, including inside the composer (jump to any session, new session, toggle sidebar, switch views). Point DSH_OPERATOR_UI_ARCHON at the Archon API and DSH_OPERATOR_UI_REGISTRY at your capability-registry.json (schema: capability-registry.schema.json) — see DEPLOY.md.
Requires DSH 0.1.0-rc.6 (the version this was built and verified against —
see COMPAT.md for the full tested pin: DSH + peers + Archon API shape).
- Platform: macOS or Linux. Windows is explicitly unsupported (the plugin
uses POSIX path rules and
pkill/pgrepfor the supervised browser). - Node: ≥ 22 (
enginesenforced; the Browser tab uses Node's native WebSocket). - git on PATH (read-only usage, Git/Files tabs).
- DSH
0.1.0-rc.6with thewebprofile in use. - Optional: Chrome/Chromium on the host (Browser tab human-driving works
without it only if a binary is found; override with
DSH_OPERATOR_UI_CHROME). - Optional: Python 3 (only for RCOS registry schema checks, later slices).
- Optional:
@deepseek-ai/dsh-toolspeer — enables the fourbrowser_*agent tools. Without it the plugin still boots and serves every tab; the Browser tab says honestly that agent driving is disabled (human driving still works). Real installs resolve peers automatically; thelink:dev setup needs the peer installed beside DSH (see AGENTS.md).
From a clone of this repository:
git clone https://github.com/Foshowithit/dsh-operator-ui.git
cd dsh-operator-ui
node scripts/check.js # must PASS before proceeding
dsh plugin --profile web add "$PWD"No manual cordis.patch.yml edit is needed — the plugin's bundle patch self-inserts its row (- insert: form). Restart (or live-reload) the web profile and open the UI. On a machine with no valid receipt you land on the gate; verify once and you get the RCOS surfaces above, with the legacy tabs one click away.
dsh plugin --profile web remove dsh-operator-uiSlot entries, the style tag, and the host-half service are all fiber-owned effects — removing the plugin reverts everything. Sessions, settings and the receipt are untouched (the plugin never writes sessions or settings).
- Verified against DSH
0.1.0-rc.6(Cordis 4.x, web profile). The client half targets theconversation.viewslot contract as served by that version. - COMPAT.md is the tested pin — RCOS owns the exact known-good DSH + plugin + Archon combination; upgrades move through verification before the pin changes. The
peerDependenciesrange inpackage.jsonstays truthful but is not the support claim. - Styling is scoped under
.opui-*classes and keyed off DSH design tokens (--dsw-*) with fallbacks — it does not depend on build-specific CSS-module hashes. - Unknown projection fields degrade to blanks, never crashes: the surfaces guard every field they read.
lib/index.js host half — status route, config, verification, registry + Archon reads
lib/client.js client half — gate, Work, Intelligence, System, legacy tabs, palette
cordis.patch.yml bundle patch — one self-insert row
MIT






