From 062861fae09afb131854f7d3a5286bd84e416c4f Mon Sep 17 00:00:00 2001
From: Brad Harris
Date: Fri, 24 Jul 2026 22:05:13 -0600
Subject: [PATCH] Docs: cover the Service Resources dashboard; fix stale
agent-card feedback-panel claim
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- New in-app docs section (Settings → Resources dashboard from #823):
opt-in collection, summary cards, history charts, subsystem health,
workload/capacity cards
- Ambient tip pointing at the new dashboard (since 0.30.0)
- README features bullet for the resources dashboard
- Agents section: the expanded-card 'feedback panel' was removed in #782
(reviews now live in feedback threads); describe the Review button, IDE
launch button, and worktree-path copy pill instead
Co-Authored-By: Claude Fable 5
---
README.md | 1 +
apps/web/src/components/app/docs-pane.tsx | 10 +++
.../components/app/docs-sections/agents.tsx | 13 ++--
.../src/components/app/docs-sections/index.ts | 1 +
.../app/docs-sections/resources.tsx | 61 +++++++++++++++++++
apps/web/src/lib/tips/tips.ts | 8 +++
6 files changed, 89 insertions(+), 5 deletions(-)
create mode 100644 apps/web/src/components/app/docs-sections/resources.tsx
diff --git a/README.md b/README.md
index cffadaef..c2dacbd7 100644
--- a/README.md
+++ b/README.md
@@ -34,6 +34,7 @@ Give this prompt to a coding agent to get Dispatch installed as a persistent ser
- Browser Feedback — a Chrome extension to select an element on any web page, comment, and send it with bounded DOM context and a cropped element screenshot to a running agent (paired under Settings → Connections).
- Slack notifications with focus-aware suppression.
- Activity analytics — heatmaps, daily status charts, working time by project.
+- Service resources dashboard — live CPU, memory, subsystem health, and workload metrics for the Dispatch server, agents, and host (Settings → Resources, opt-in collection).
- Token usage tracking by day, project, and model.
- Agent history with soft-delete preservation, filtering, and per-agent detail views.
- Release management — cut releases, deploy tags, and self-update from the UI.
diff --git a/apps/web/src/components/app/docs-pane.tsx b/apps/web/src/components/app/docs-pane.tsx
index 775cb12c..46669912 100644
--- a/apps/web/src/components/app/docs-pane.tsx
+++ b/apps/web/src/components/app/docs-pane.tsx
@@ -4,6 +4,7 @@ import {
ArrowDownToLine,
Bell,
Briefcase,
+ Gauge,
GitBranch,
Image,
Keyboard,
@@ -26,6 +27,7 @@ import {
NotificationsContent,
PersonalitiesContent,
PersonasContent,
+ ResourcesContent,
ShortcutsContent,
ToolsContent,
UpdatesContent,
@@ -44,6 +46,7 @@ export type DocsSection =
| "media"
| "browser-feedback"
| "notifications"
+ | "resources"
| "updates";
type SectionDef = {
@@ -132,6 +135,13 @@ const SECTIONS: SectionDef[] = [
title: "Notifications",
content: ,
},
+ {
+ id: "resources",
+ label: "Service Resources",
+ icon: Gauge,
+ title: "Service Resources",
+ content: ,
+ },
{
id: "updates",
label: "Updates",
diff --git a/apps/web/src/components/app/docs-sections/agents.tsx b/apps/web/src/components/app/docs-sections/agents.tsx
index 141f5e76..65975b28 100644
--- a/apps/web/src/components/app/docs-sections/agents.tsx
+++ b/apps/web/src/components/app/docs-sections/agents.tsx
@@ -145,11 +145,14 @@ export function AgentsContent() {
base branch and working branch (indented below the base); non-worktree
agents show the working directory and current branch. A{" "}
diff-stats badge in the top-right summarizes
- uncommitted changes against the base branch. CLI agents also show
- whether they're running in full access or sandboxed mode, plus a
- feedback panel and persona launcher; terminal agents skip those since
- they have no CLI. Persona agents show their role and link to their
- parent agent.
+ uncommitted changes against the base branch. The details card also has
+ a button to open the working directory in your IDE and, for worktree
+ agents, a pill that copies the worktree path. CLI agents additionally
+ show whether they're running in full access or sandboxed mode, plus a{" "}
+ Review button that launches a reviewer agent (see the
+ Reviewers section — review feedback lives in the Changes tab's
+ threads, not on the card); terminal agents skip those since they have
+ no CLI. Persona agents show their role and link to their parent agent.
diff --git a/apps/web/src/components/app/docs-sections/index.ts b/apps/web/src/components/app/docs-sections/index.ts
index 5415a53f..0408fe48 100644
--- a/apps/web/src/components/app/docs-sections/index.ts
+++ b/apps/web/src/components/app/docs-sections/index.ts
@@ -9,4 +9,5 @@ export { EventsContent } from "./events";
export { MediaContent } from "./media";
export { BrowserFeedbackContent } from "./browser-feedback";
export { NotificationsContent } from "./notifications";
+export { ResourcesContent } from "./resources";
export { UpdatesContent } from "./updates";
diff --git a/apps/web/src/components/app/docs-sections/resources.tsx b/apps/web/src/components/app/docs-sections/resources.tsx
new file mode 100644
index 00000000..5d11a009
--- /dev/null
+++ b/apps/web/src/components/app/docs-sections/resources.tsx
@@ -0,0 +1,61 @@
+import { H3, P, Section } from "./primitives";
+
+export function ResourcesContent(): JSX.Element {
+ return (
+ <>
+
+ Service resources dashboard
+
+ Settings → Resources shows live health and resource
+ insights for the Dispatch server, its agent processes, dependencies,
+ and the host machine. An overall status badge sits next to the title;
+ when something is off, a Dispatch needs attention{" "}
+ card at the top explains why.
+
+
+
+
+ Enabling collection
+
+ Metrics collection is off by default. Turn on{" "}
+ Collect resource metrics to sample service health and
+ resource usage every 5 seconds, keeping up to one hour of history in
+ memory. Turning collection off clears the collected history, and
+ history also resets when Dispatch restarts — nothing is written to the
+ database. Both directions ask for confirmation. A window picker
+ switches the charts between the last 15 minutes and the last hour.
+
+
+
+
+ What's shown
+
+ Summary cards cover Dispatch's CPU (one-core percentage) and memory
+ (resident set plus JS heap), the agent process tree's combined CPU and
+ memory, database latency and connection-pool usage, event-loop and API
+ p95 latencies, and the host's free memory and load. Below them, CPU
+ and memory history charts plot Dispatch, agents, and host load over
+ the selected window.
+
+
+ A workload card counts running agents, connected browsers, active
+ terminal views, scheduled jobs, and in-flight git refreshes; a
+ capacity card lists service uptime, database pool size, requests per
+ minute, and host CPU count.
+
+
+
+
+ Subsystem health
+
+ Each background subsystem — the API server, database, job schedulers,
+ UI event stream, terminal observers, agent reconciliation, activity
+ monitor, git diff refreshes, and the update checker — reports its own
+ status badge with run counts, failure rates, p95 durations, and a
+ recent-trend sparkline, so you can spot which part of Dispatch is
+ struggling rather than just that something is.
+
+
+ >
+ );
+}
diff --git a/apps/web/src/lib/tips/tips.ts b/apps/web/src/lib/tips/tips.ts
index 653487cf..97af26aa 100644
--- a/apps/web/src/lib/tips/tips.ts
+++ b/apps/web/src/lib/tips/tips.ts
@@ -212,6 +212,14 @@ export const tips: Tip[] = [
since: "0.29.3",
surfaces: ["ambient"],
},
+ {
+ id: "service-resources",
+ title: "Service Resources",
+ body: "Wondering how Dispatch is holding up? Settings → Resources charts live CPU, memory, subsystem health, and workload for the server, agents, and host.",
+ docsSection: "resources",
+ since: "0.30.0",
+ surfaces: ["ambient"],
+ },
{
id: "job-webhook-trigger",
title: "Job Webhook Triggers",