Skip to content

Workspace Control

Workspace Control is the SDK app that comes pre-installed on every tenant. It’s the cockpit — every screen is a different view onto your agents, heartbeats, grants, rooms, and audit trail.

Open it from the marketplace or hit https://app.linkworld.ai/apps/workspace-control.

Dashboard ─ Inbox ─ Health ─ Wires & Grants ─ Rooms ─ Audit ─ KPIs ─ Steward
ScreenWhat it does
DashboardTree view: apps → agents → heartbeats. Click any agent for the detail page.
InboxTenant-wide commitments across all agents. Filter by state. Dismiss to close.
HealthPer-app rollup of healthy/disabled/failing heartbeats + grants/wires/rooms counts.
Wires & GrantsBilateral cross-app contracts — approve, edit, revoke.
RoomsList of group rooms; click into a room for the chat view.
AuditEvery skill / tool call your tenant ran, filterable by status, tool, app.
KPIsStrategic metrics across all departments, one card per metric.
StewardConversational chat with the workspace’s master agent.

The default landing screen. Three counts at the top (Apps, Agents, Heartbeats) plus a link to the Approvals queue (which lives at /governance — Workspace Control links there rather than rebuilding).

Below: a tree of your apps. Each app row expands to show its agents, each agent row shows its heartbeats with status indicators (green / amber / red).

Click rules:

  • Click an app name → navigates to that app’s UI
  • Click an agent → opens the Agent detail page (heartbeat schedule, tools allowed, recent activity, memory)
  • Click a heartbeat → expands its config inline

The dashboard polls every 30 seconds. The Refresh button forces an immediate update.

The tenant-wide commitments inbox. Agents infer follow-up obligations during heartbeats (“I should check this lead tomorrow at 9 am”) — those land here as commitment records.

Filter pills: Open / Pending / Attempted / Sent / Dismissed / All. Open is the default — pending + attempted, the actionable items.

Per-row actions:

  • Dismiss — only on pending or attempted. Removes from open view.
  • Click the agent name → jumps to that agent’s detail page.

Overdue items are border-highlighted; the Inbox badge in the top nav goes amber when any pending commitment’s due_at is past.

See Commitments inbox for the full mental model and how agents use it.

Three sections:

  1. KPI counts — Apps, Agents, Heartbeats, Grants, Wires, Rooms. Grants and Wires split active vs. pending (one side approved, waiting on the other).
  2. Failing heartbeats — sorted by failure count. Click any row to jump to the agent. Each row shows the last error message, last run, and current status.
  3. Per-app rollup — color-coded border (green = clean, amber = some disabled, red = failing). Shows agent + heartbeat counts per app.

Failing threshold: a heartbeat is failing once its consecutive_failures >= 3 AND status is still active. At 5 failures the platform auto-disables it (it lands in the disabled column of the rollup, not failing).

Auto-refresh: 30 seconds. Health badge in the top nav shows the failing count.

Two kinds of cross-app contracts live here:

  • Grants (Phase C) — caller app may invoke specific agents in the callee app via the cross-app RPC. Required for the Steward to act on your behalf across departments.
  • Wires (Phase D) — emitter app’s named events fan out to subscriber apps’ agents (or heartbeats). Used when Marketing emits lead_qualified should automatically wake Sales’ BDR.

Bilateral by design: both sides must approve. One side can revoke at any time and the contract dies immediately.

Workflow:

  1. Click + New grant (or + New wire).
  2. Pick caller / callee apps and the agent(s) involved.
  3. Save — your side is auto-approved as the initiator.
  4. Wait for the other side to approve (a tenant admin clicks Approve on their end). When both approvals are in, the contract goes active and traffic starts flowing.

See Wires & grants for a worked example.

Group rooms — Slack-style threads where humans + agents from multiple apps co-exist.

List page shows every room in your tenant with last-activity time. Click into a room for the chat view: messages, member list, SSE-streamed live updates, @mention routing.

Use rooms when:

  • Multiple agents need to coordinate on a workflow (e.g. CMO + Researcher + Replier on a content sprint)
  • A human wants to listen in or steer the agent collaboration
  • You want an audit trail of who-said-what (rooms persist forever)

See Group rooms for the routing rules and how agents decide whether to chime in.

Every skill / tool call your tenant ran — backed by the platform’s unified audit log. The viewer shows newest first.

Filters:

  • Status pills: All / Success / Errors / Blocked / Timeout
  • Free-text tool name (e.g. graph_email)
  • Free-text app id (matches calls attributed to that app)

Per-row info:

  • Status badge (color-coded)
  • App badge if attribution available (app:marketing)
  • skill · tool path
  • Risk level + gate decision (the platform’s security gate verdict)
  • Duration, user/agent context, error message or result snippet
  • Relative timestamp

Pagination: 100 entries per page; Load older uses a cursor for the next page. No silent throttling — you can scroll back as far as your tenant’s retention window allows.

The CEO cockpit. Apps publish KPIs by writing records into linkworld_user_app_records with record_type='kpi' and a JSON shape like:

{
"metric": "x_followers",
"value": 132,
"target": 500,
"unit": "followers",
"period": "day",
"trend": "+12 vs last week",
"label": "X Followers"
}

Workspace Control groups them by app, renders cards with progress bars (color-coded by percent of target), and auto-refreshes every minute.

If you publish KPIs from your own app (or a custom data feed), they appear here automatically — no extra wiring.

The conversational layer. A chat with workspace-control:default — the agent that has cross-app grants to every other app in your tenant if you’ve approved them.

The Steward can:

  • Reason about your workspace (“what apps do I have? which heartbeats are failing? why is X-Monitor errored?”)
  • Execute cross-app calls when grants exist (“tell Marketing’s CMO to draft a tweet about X” → invokes marketing/cmo directly, shows you the tool-trace, returns the reply)
  • Surface missing grants when you ask it to do something it can’t yet do (“create a grant in #/wires before this works”)

It’s the fastest way to drive the workspace once you’ve got grants in place. See Steward for examples + safety model.