--- title: Agents description: The agent inventory — one row per agent on the node with its runtime, spend, liveness and owner, plus how liveness is actually derived. keywords: agent inventory, AI agent roster, which agents are running, agent ownership eyebrow: Dashboard --- # Agents A control-tower roster of every agent on this machine: what it runs, what it costs, whether it is alive, and who owns it. This is the page for the question "what is even running here?", which is surprisingly hard to answer once you have more than two runtimes and a couple of scheduled jobs. ## The roster One row per runtime bucket, each carrying: - **Runtime and model** — what it actually runs, not what it was configured with - **Spend** — today and over the selected window - **Sessions** — count and most recent activity - **Liveness** — whether it is doing anything now - **Owner** — a label you set, which is the difference between a useful roster and a list of hostnames The roster is composed from the same rollups the daemon ships in its cloud snapshot, so the local dashboard and the hosted dashboard show identical numbers. ## Setting an owner Owner labels are local to the node and editable in place. On a shared machine or a fleet this is what makes an inventory actionable — "who do I ask about this" is the first question anyone has about a row they did not create. ## How liveness is derived Liveness comes from **recent event activity**, not from a heartbeat. This distinction has bitten before and is worth stating plainly: a heartbeat proves a process exists. It does not prove the agent is doing anything, and a runtime that emits heartbeats while wedged will look perfectly healthy. ClawMetry keys liveness on whether events are landing. The consequence is the honest one: a genuinely idle agent shows as idle, because from the outside an idle agent and a stuck one that has stopped emitting look the same — and [Guard](/docs/dashboard/guard/) is the page that tells them apart. ## The API ```bash curl -s localhost:8900/api/inventory | jq '.agents' curl -s 'localhost:8900/api/inventory?runtime=claude_code' | jq curl -s localhost:8900/api/agents | jq curl -s localhost:8900/api/agent-presence | jq ``` ## Related - [Guard](/docs/dashboard/guard/) — which of these has gone off track - [Multi-node fleet](/docs/cloud/nodes/) — the same roster across machines - [Cost attribution](/docs/cost/attribution/) — turning rows into a bill you can explain