Activity board¶
Editions: Cloud, Enterprise. The Activity page and its API ship only with the Preloop Enterprise live_activity plugin. The open-source edition records the same prompt and turn timestamps but has no board.
Activity (directly under Overview in the console) shows who and what is working on the account right now, and who is being waited on. Full screen turns it into a wall display; Esc leaves full screen.
What it shows¶
- Stat row: active people, active agents, model requests and tool calls per minute, estimated spend per hour, median reply latency and median approval latency. A stat with too little data shows a dash, never 0.
- Sparkline: requests per minute over the selected window.
- People: each person's state (Active, Idle, Away), their last signal (prompt, approval or console) and "Waiting on them" when an agent finished a turn they have not answered.
- Agents: Working, Waiting for approval, Waiting for reply, Idle or Ended, with the session it is working in.
The window (5 minutes to any time) is the Fleet Map's, so "active in the last hour" means the same on both pages.
How states are derived¶
Presence is analytics on data Preloop already collects. There is no keystroke, screen or transcript monitoring, and prompt text is never stored.
| Signal | Source |
|---|---|
| Prompt | the UserPromptSubmit hook (Cursor beforeSubmitPrompt): a timestamp only |
| Approval | a person deciding an approval request (AI and auto approvals excluded) |
| Console | opening the console |
| Agent work | model gateway requests and tool calls |
| Turn end | the Stop hook |
A person is active within 5 minutes of a prompt, approval or console signal, idle up to 30 minutes (2 hours while one of their agents worked in the last 15 minutes), and away after that. An agent is working within 60 seconds of a request or tool call, waiting for approval while one is open, and waiting for a reply after a turn end no prompt has followed, for up to 4 hours. Reply latency is the time from a turn end to the next prompt in the same session; approval latency is the time from request to decision. Medians are computed from latency buckets and need at least 3 samples.
Prompts are attributed through the onboarding credential's user. A machine shared under one credential attributes everything to that user.
Who sees what¶
- Rates, counts and the agent list: anyone with
view_runtime_sessions. - Names, per-person states and latency, owners and device names:
view_users(account owners and superusers always). - Everyone sees their own row, and
GET /api/v1/activity/mereturns it with the signals and thresholds used.
The board never ranks people or shows a productivity score.
Operations¶
- A background worker runs every 15 seconds on one API replica (a Postgres advisory lock elects it). It reads only rows newer than its watermarks, so the board never scans raw tables.
- On first start the worker reads the last 24 hours.
python -m plugins.live_activity.backfill --days Nfolds older history once. - Retention: minute rollups 48 hours, hour rollups 400 days, state history 90 days.