Replace the single centered "anatomy profile" + resizable chat split with an
operator command center: compact 62px identity strip → 5-tile per-agent metrics
band → three independently-scrolling LIVE · BRAIN · SURFACE columns. Chat moves to
the computer's Chat app; the right computer pullout (DevicePanel) is untouched.
- backend: cm-api/routes/world.rs emits per-agent `telemetry{agentId,tokensPerMin,
costPerHr,loops,doorsPending}` in the SSE loop, from 4 batched GROUP BY queries
(usage_events tokens/min + credits/hr, active routines, pending approvals) — all
real, no migration. taxonomy `telemetry` gains optional agentId; stateKey now
keys it per-agent so slices don't clobber.
- frontend: new ClawCommandCenter + anatomy-cards (shared cards extracted from
Dashboard); useAgentTelemetry(agentId) feeds the metric band (Doors amber>0/
green=0); LIVE column streams the agent's task.update / reasoning.delta /
tool.call (replaces the mocked VitalsCard heatmap with a live activity chart).
- Dashboard: left region → full-height ClawCommandCenter; chat launcher opens the
computer Chat app; removed the dead anatomy cluster + unused imports.
Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
12 KiB
Agent Command Center — Build Guide
How the Clawmates Agent Command Center page is built, and the rules to follow to recreate or extend it. The .dc.html in this folder is the working reference — open it directly in a browser. This doc is the recipe + the prompt to regenerate it.
1. What this page is
A single-agent command center — the close-up view of one agent in the fleet. It replaces the old "scrolling profile" (big avatar + year-long heatmap on top, live status buried at the bottom) with an operator surface where live state and controls sit above the fold and identity shrinks to a header strip.
It answers, at a glance:
- Is it healthy and how hard is it working? → metrics band (throughput, spend, loops, memory, doors)
- What is it doing right now? → LIVE column (working-on-now, reasoning stream, activity)
- What is its brain made of? → BRAIN column (system prompt, personality, skills, capabilities)
- What can it touch, remember, and is it safe? → SURFACE column (tools·doors, memory, safety)
- What's on its desktop? → pinned right-side computer pullout (apps, now-running, dock)
The core interaction idea: read on the left/center, act on the right. Identity is small; the work is big.
2. The layout system
Fixed full-viewport shell (100vw × 100vh, overflow:hidden). Lock this skeleton first.
┌──────────────────────────────────────────────────────────────────┐
│ TOP BAR (54px) logo · breadcrumb · live pill · tok/min · avatar │
├──┬─────────┬──────────────────────────────────────────┬───────────┤
│IC│ AGENT │ ┌ identity header strip ───────────────┐ │ COMPUTER │
│ON│ LIST │ ├ METRICS BAND (5 tiles) ──────────────┤ │ PULLOUT │
│54│ 222px │ │ LIVE │ BRAIN │ SURFACE │ │ 344px │
│ │ │ │ 1.15fr │ 1fr │ 1fr │ │ apps · │
│ │ │ │ (each col scrolls independently) │ │ running · │
│ │ │ └────────────────────────────────────────┘ │ dock │
├──┴─────────┴──────────────────────────────────────────┴───────────┤
│ STATUS BAR (28px) durable runner · checkpoint · sandbox · doors │
└──────────────────────────────────────────────────────────────────┘
- Icon rail (54px): product switcher (World / Agent / Infra). Active = coral glyph + coral left spine.
- Agent list (222px): every agent in the team. Row = avatar + status dot, name, mono role, live action line. Active row gets the 3px coral spine + coral tint.
- Command-center area (fluid): identity header → metrics band → three scrolling columns.
- Computer pullout (344px, pinned): mirrors the product's right-side computer panel. Stays put; cards live to its left. Toggle with the
showComputerprop. - Status bar (28px): ambient truth, always-on mono.
Only the three center columns and the panels' inner bodies scroll; all chrome is flex:none. The whole thing fits one 1080p screen.
The three center columns
- LIVE (1.15fr):
WORKING ON NOWcard (task + step list with a blinking caret) →REASONING STREAMterminal (think/tool/door tagged lines) →ACTIVITY · LIVEbar chart. - BRAIN (1fr): collapsible
SYSTEM PROMPT(click header to expand) →PERSONALITYchips →SKILLSchips →CAPABILITIESchips. - SURFACE (1fr):
TOOLS · DOORS(gated/blocked list + inline §15 approval card) →MEMORY→SAFETY · §15.
3. Color
Near-black warm-neutral base; functional accents only — don't add a color unless it means something. Aim for ~90% neutral.
| Token | Value | Used for |
|---|---|---|
| Canvas | #08080a |
page background |
| Surface | #0d0d10 |
cards |
| Chrome | #0a0a0c / #0b0b0e |
rails, panels, status bar |
| Hairline | rgba(255,255,255,.06–.08) |
every border/divider |
| Text high | #f3f3f5 |
headings, key values |
| Text mid | #8a8a92 / #9a9aa2 |
body |
| Text low | #5a5a62 / #6a6a72 |
mono labels, meta |
Accents (one meaning each):
- Coral
#ff6f61→ brand + primary action + active nav. The coral→red filllinear-gradient(135deg,#ff8a7a,#ff5f57)is the one filled-button treatment. - Cyan
#5ec8d8→ live / working / network / throughput / links. - Green
#5fd08a→ healthy / done / loops running. - Amber
#e8b465→ pending / door awaiting approval / spend / blocked tool. - Violet
#c98af0→ reasoning ("think") + personality. - Teal
#6fd0c0→ safety / sandbox.
The doors metric tile and status-bar text turn amber the moment an approval is pending and flip green when clear — that color shift is the page's most important signal.
4. Type
Two families, sharp roles:
- Helvetica Neue (system sans) — headings, names, prose.
- JetBrains Mono — everything machine: roles, status, IPs/hosts, the reasoning stream, stat labels, chips, breadcrumb, status bar. This sans/mono split is what makes it read as an operator tool, not a website.
Scale (floors): agent name 24/700/-.02em · card titles 13–15/600–700 · body 11–13 · mono labels 9–10, letter-spacing .08–.12em, low-contrast.
The uppercase mono kicker (WORKING ON NOW, SYSTEM PROMPT, TOOLS · DOORS) above every card is the connective rhythm — keep it.
5. Components & patterns
- Identity header strip — small haloed avatar (62px, pulsing ring) + name + mono
role · spec, then model chip + coral "Edit brain →" + settings gear. Identity is deliberately compact. - Metric tile — mono label, big
22/700value, mono unit. Notable tiles tint border + value (cyan throughput, amber spend, green loops, amber doors-when-pending). The throughput tile carries a live sparkline. - Card —
#0d0d10+ hairline (or accent-tinted) border, 13px radius, mono kicker + icon chip header. The single repeated container. - Reasoning stream — black terminal; each line is a colored tag (
think/tool/door/note/result) + text; last line gets a blinking caret. - Chip — mono, small, tinted pill for personality/skills/capabilities. A trailing
+Nchip implies overflow. - Inline §15 door — amber-bordered approval card with a gradient top-rule: title, mono detail, Approve / Review / ✕. Approving clears it to a green "no doors awaiting approval" line and updates the metric + status bar.
- Computer pullout — pinned right panel: header w/ device icons, sandbox status, apps grid (real brand glyphs as inline SVG), NOW RUNNING list (loop/cron items with progress bars), bottom dock (Skills/Files/Routines/Settings).
- Indicators — reuse three primitives everywhere: colored dot (state), thin bar (utilization/progress), bordered pill (labeled status). Don't invent new ones.
6. Motion
Restrained and diegetic — movement only ever means "this is live" or "the view changed." Six keyframes:
cm-blink (live dots/caret), cm-halo (avatar ring pulse), cm-type (caret), cm-bar (sparkline/activity bars), cm-fade (0.2–0.25s panel/step entrance). No load chrome, no parallax, no decorative motion. All of it is gated behind the liveStream prop so it can be paused.
7. Voice
Technical, plain, security-forward. Buttons name the outcome ("Edit brain →", "Approve"). The §15 / door / sandbox / "no network" language repeats the trust story. Lead with what the agent is doing, not what it is.
8. How it's built (structure)
This is a Design Component (.dc.html) — one self-contained file + support.js (the runtime; keep it beside the page).
- Template = markup styled entirely inline (only
@keyframes+ scrollbar rules live in<helmet>). Inline styles paint immediately as the file streams. - Logic =
class Component extends DCLogicat the bottom. State:selected(which agent),promptOpen,doorApproved.renderVals()returns every{{ … }}the template binds + all handlers. - Data is mocked in an
AGENTSmap insiderenderVals()(Morpheus, Smith). Each agent carries its metrics, task, reasoning, personality, skills, tools, memory, safety, door, prompt, and now-running list. To wire real data, replace that map with your fetched agent state — the template shape is stable. - Control flow:
<sc-for>repeats agent rows, steps, reasoning lines, chips, tools, running items;<sc-if>toggles the prompt body, the door card vs the cleared state, and the computer pullout. State-driven contents, not separate pages. - Props / tweaks:
liveStream(pause all animation),showComputer(show/hide the pullout),defaultPromptOpen(start with the system prompt expanded).
To build a page in this style
- Drop the shell (top bar / icon rail / agent list / command area / computer pullout / status bar); pin everything but the center columns and panel bodies.
- Shrink identity to a header strip; never let the avatar dominate.
- Put the glance-priority metrics in a 5-tile band directly under it.
- Split the work into LIVE · BRAIN · SURFACE columns, each scrolling independently.
- Keep the computer as a pinned right pullout; all cards go to its left.
- Use only the accents above, one meaning each; show state with the dot/bar/pill trio and the six keyframes — nothing more.
9. Prompt to regenerate
Build a single-agent command center as a Design Component in the Clawmates dark-operator visual system (near-black
#08080acanvas,#0d0d10cards, hairline borders, Helvetica Neue + JetBrains Mono, functional accents: coral#ff6f61brand/primary, cyan#5ec8d8live, green#5fd08ahealthy, amber#e8b465pending, violet#c98af0reasoning, teal#6fd0c0safety).Fixed full-viewport shell: 54px top bar (logo · breadcrumb · live pill · tok/min · avatar) → body [54px icon rail · 222px agent list · fluid command area · 344px pinned computer pullout] → 28px status bar. Only the center columns and panel bodies scroll.
Command area = compact identity header strip (small haloed 62px avatar + name + mono role·spec + model chip + coral "Edit brain →") → 5-tile metrics band (Throughput w/ sparkline, Spend, Loops, Memory, Doors — doors tile + status bar turn amber when an approval is pending) → three independently-scrolling columns: LIVE (working-on-now task w/ step list + caret, reasoning-stream terminal, activity bars), BRAIN (collapsible system prompt, personality / skills / capabilities chips), SURFACE (tools·doors w/ inline §15 approval card, memory, safety).
Pinned right computer pullout: header w/ device icons, "sandbox live · no network", apps grid (Browser/Slack/Terminal/Obsidian/Chat/Add as inline-SVG glyphs), NOW RUNNING list (loop/cron items w/ progress bars), bottom dock (Skills/Files/Routines/Settings).
Mock 2 agents (a PM and a researcher) in an
AGENTSmap; clicking a list row switches everything. Interactions: switch agent, expand/collapse system prompt, approve the pending door (clears it + updates the doors metric + status bar). Inline styles only; six restrained keyframes (blink/halo/type/bar/fade) gated behind aliveStreamprop. Expose props:liveStream,showComputer,defaultPromptOpen. Fit one 1080p screen.
10. Files in this package
Clawmates Agent Command Center.dc.html— the page (open directly in a browser).support.js— the runtime the.dc.htmlneeds; keep it beside the page.BUILD-GUIDE.md— this document.