Skip to content

Activity

Host-owned activity dots — the same language as workspace status rows and CenterDock tabs. Use ActivityGlyph in your own panel / modal content when you want that signal; use setActivity / bindActivity (or workspace status activity) when pinning it onto Silo chrome.

Extensions pick a kind only. Color and motion are fixed per kind (pinned light/dark palette — not --silo-color-* theme accents). Never invent a spinner or recolor the glyph.

workingreadywarnerroromit (neutral)
tsx
import { ActivityGlyph, type Activity } from "@silo-code/sdk";

<ActivityGlyph activity="working" size="md" />
<ActivityGlyph activity="ready" />
<ActivityGlyph activity="warn" />
<ActivityGlyph activity="error" />
<ActivityGlyph size="sm" />  // omit activity → gray neutral
PropTypeDefaultNotes
activity"working" | "ready" | "warn" | "error"?Omit only for the gray neutral fallback
size"sm" | "md""sm"sm ≈ workspace rows (6px); md ≈ tabs (8px)

Kinds

KindMeansLook
workingIn progressBlue dot + expanding rings
readyAvailable / waiting for inputGreen subtle throb
warnNeeds cautionAmber static
errorFailedRed static
(omit)Neutral / unconfirmedGray static — workspace status rows only; in panels prefer omitting the glyph

These four are the whole vocabulary — never invent a fifth activity tint. For text pills (Installed, Update available), use Badge instead.

vs Badge

ActivityBadge
ShapeDot (+ motion)Text pill
ColorHost-fixed per kindTone or arbitrary identity color
Typical useProcess / agent stateLabels, counts, provenance

Projecting agent state

tsx
import { ActivityGlyph, activityFromAgent } from "@silo-code/sdk";

const activity = activityFromAgent(agent.activity); // null for none / dead
{
  activity && <ActivityGlyph activity={activity} size="sm" />;
}
AgentActivityUI Activity
workingworking
idleready
errorerror
none / deadno glyph

See also