Skip to content

Rework the dashboard to serve both ICPs — the consumer who calls inference apps and the one who publishes them#4

Open
adamsoffer wants to merge 10 commits into
mainfrom
claude/peaceful-cohen-ca3e31
Open

Rework the dashboard to serve both ICPs — the consumer who calls inference apps and the one who publishes them#4
adamsoffer wants to merge 10 commits into
mainfrom
claude/peaceful-cohen-ca3e31

Conversation

@adamsoffer
Copy link
Copy Markdown
Collaborator

@adamsoffer adamsoffer commented Jun 3, 2026

What & why

Evolves the developer dashboard's information architecture to serve both ICPs — the consumer who calls inference apps and the one who deploys them — without splitting the UI by persona. The organizing axis is the workspaces relationship to the network, framed by direction — apps you deploy to the network (which orchestrators serve on your behalf) vs. apps you consume from it. Everything stays mock-data-only.

Vocabulary (grounded in the Runner SDK + gateway)

  • model / capability → "app" — the deployed, callable unit; the SDK wraps an authored pipeline into an app (make_app(pipeline)).
  • Workspace → Organization — with public /orgs/[slug] profiles (GitHub-style).
  • runs / jobs → "calls" — the SDK uses request (batch) and session (live); "calls" is the consumer-facing umbrella that covers both. (Verified against runner-sdk.md + the gateway client.)

Routes & navigation

  • models/[id]apps/[id] (owner-only Settings tab folded in; Overview, Logs, etc. are shared).
  • /jobs/calls — promoted to a real nav item; removed the stale "Jobs" naming/copy and rebound the g c shortcut.
  • Environment (Production / Development) as a per-page facet + switcher.
  • Default to Home when signed in — root / redirects logged-in users to /home; signed-out visitors keep the Explore catalog at / (the public landing). Explore gets its own /explore route so signed-in users can still browse it.
  • Sidebar rebuilt into home / network / environment / organization zones.

Home — "mission control" console

  • Command bar: org readout + greeting + an adaptive attention line that names the single most urgent thing on arrival (e.g. an erroring app).
  • Two even-height panels: Deployed apps (the apps you've deployed to the network, with their call volume) beside Usage (your spend on the apps you call across the network).
  • Recent activity: your organization's own calls — a live preview of /calls.

Calls view

  • Batch / Live segmented filter; the metric column adapts — latency for batch, session duration for live, Elapsed when mixed.
  • In-progress live sessions get a pulsing dot + ticking elapsed and sort to the top (new active status on AccountActivityRow).

Reviewer notes

  • Mock-data-only throughout (lib/dashboard/); new single-source helpers org-fleet.ts / org-consumption.ts keep headline numbers consistent across surfaces.
  • The ?key= / ?capability= params on inbound links to /calls are carried over but not yet wired to pre-filter (no-ops before too).
  • An active call deep-links to the standard request inspector for now; a live inspector is a follow-up.

pnpm typecheck, pnpm lint (0 warnings), and pnpm build all pass.

🤖 Generated with Claude Code

Evolve the developer dashboard's information architecture to serve both
the consumer (calls inference apps) and operator (deploys apps) without
splitting the UI by persona — the organizing axis is the workspace's
relationship to the network, framed by call direction.

Vocabulary (grounded in the Runner SDK + gateway):
- model/capability → "app" (a deployed pipeline; capability stays a
  network/protocol concept only)
- Workspace → Organization (with public /orgs/[slug] profiles)
- runs/jobs → "calls" (the SDK uses request/session; "calls" is the
  consumer-facing umbrella over batch + live)

Routes & nav:
- models/[id] → apps/[id] (ownership-gated tabs folded in)
- /jobs → /calls (standalone Calls log; removed stale "jobs" naming)
- Environment (Production/Development) as a per-page facet + switcher
- sidebar rebuilt into home / network / environment / organization zones

Home — "mission control" console:
- command bar (org readout + greeting + adaptive attention line that
  names the most urgent thing, e.g. an erroring app)
- two even-height panels: Deployed apps (what you serve) and Usage
  (what you consume, incl. spend on apps you didn't deploy)
- Recent activity = the workspace's own calls (preview of /calls)

Calls view:
- Batch / Live segmented filter; metric column adapts (latency for
  batch, session duration for live, "Elapsed" when mixed)
- live, in-progress sessions render a pulsing dot + ticking elapsed and
  sort to the top (new "active" AccountActivityStatus)

All surfaces remain mock-data-only; typecheck, lint (0 warnings), and
production build pass.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@vercel
Copy link
Copy Markdown

vercel Bot commented Jun 3, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
dashboard Ready Ready Preview, Comment Jun 5, 2026 1:14am

Request Review

- Home "Recent activity" subheader: "requests this workspace made" →
  "calls your organization made" (drops two retired terms at once).
- Replace every remaining "workspace" with "organization" across copy,
  comments, and mock owner labels (the Modal note reworded to "account/
  org tier"); zero "workspace" references remain.
- Deployed apps panel: the hero number is now the app count (it read as
  "51.4K apps" under the count-noun title). Calls served moves to the
  right-aligned secondary, mirroring the Usage panel so both stay
  even-height.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- Drop the "Period 7d" selector and "View usage" link from the Home
  header. The page mixes timeframes (calls · 7d, spend · MTD, relative
  activity), so a page-wide period control is misleading, and "View
  usage" duplicates the sidebar item + the Usage panel's own link.
- Recent activity subheader: "calls your organization made" →
  "calls you've made" (it's already your org's dashboard, so naming the
  org is redundant).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The dashboard's operator deploys/publishes apps; orchestrators (via
gateways) actually run the pipeline and serve the inference. Reword the
Home composition note and the org-fleet / org-consumption / AppsHealthPanel
comments from "what you serve" / "SERVE ledger" / "calls served" to the
accurate deploy-vs-consume framing (call volume = calls the network handled
for your apps). Comments only — no rendered-UI change.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…gated tab

Overview is a read-only summary (KPIs + deployment metadata), so it
shouldn't be owner-gated. Move it out of the owner-only set into the
shared consumer tabs — it leads whenever the app is deployment-backed
(has a pipeline), so anyone viewing the app sees it; catalog-only entries
with no deployment don't get an empty Overview. Settings is now the sole
ownership-gated tab.

Also fixes the stale tab comments (incl. the incorrect "Logs &
Settings (trail)" note — Logs was always a consumer tab).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The Recent activity panel previews the org's individual calls, whose full
log is /calls — not the aggregate /usage dashboard. Repoint "View all"
(and the doc comment) accordingly.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Root `/` now redirects signed-in users to /home (the dashboard default);
signed-out visitors keep the Explore catalog there as the public landing.
So Explore stays reachable for signed-in users without bouncing, the
catalog is extracted into an <ExploreView> component and given its own
/explore route (the sidebar "Explore" item points there).

- app/(app)/page.tsx → thin client redirect (authed → /home, else ExploreView)
- app/(app)/explore/page.tsx → renders ExploreView (no redirect)
- components/dashboard/ExploreView.tsx → the catalog (moved from the old root page)
- nav + active-state: Explore href "/" → "/explore"; getNavActive "/" special
  case removed; signed-out variant treats "/" and "/explore" as Explore
- repoint Explore-intent links ("/" → "/explore") in DashboardSearch,
  SignInWall, ActivityPanel empty state, apps/[id] + orgs/[slug] fallbacks
- robots: allow /explore

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Authoring uses the Runner SDK; deploying uses the `livepeer` CLI
(`livepeer init` / `livepeer push`). The onboarding "Deploy an example
app" step and the Apps page intro both describe pushing/deploying, so
they should name the CLI, not the SDK.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Clicking a call row now opens a right-side slide-over inspector instead
of dead-ending on /usage (which never handled ?request=). It's URL-
addressable at /calls?request={id} — deep-linkable, back-button closes.

- Drawer primitive gains a `right` side (480px slide-over).
- New CallDetailDrawer: status · Batch/Live · env · timing metrics
  (latency for batch, duration for live) · cost · caller, plus the
  request/response payloads (batch) or a session summary (live). Payloads
  are mock, shaped by the pipeline.
- CallsView reads ?request= (Suspense-wrapped), holds the row through the
  close transition so the drawer animates out with content intact.
- Call rows (CallsTable + Home ActivityPanel) link to /calls?request={id}.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@adamsoffer adamsoffer changed the title Rework dashboard IA around apps, environments, and calls Rework the dashboard to serve both ICPs — the consumer who calls inference apps and the one who deploys them Jun 4, 2026
@adamsoffer adamsoffer changed the title Rework the dashboard to serve both ICPs — the consumer who calls inference apps and the one who deploys them Rework the dashboard to serve both ICPs — the consumer who calls inference apps and the one who publishes them Jun 4, 2026
Instruction copy should use the product noun ("app"), consistent with
"Deployed apps" / "Deploy an example app". "Pipeline" is the SDK-layer
artifact term, best reserved for describing what you author.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant