See CPU, memory and heat while your agents run
Press S in ccdeck to open This machine beside the canvas: per-core CPU, load, memory, network and, where the computer has a sensor, temperature, each with up to a day of history, and the busiest processes at the foot.
You will
- Open and close the panel with one key
- Read the CPU, memory, network, GPUs and temperatures
- Look back at how a reading changed
- Find the busiest processes
Before you start
- ccdeck running and open in a browser. Install ccdeck with npx and see your first session covers that.
- Nothing to install for the panel. Its GPU readings need an NVIDIA GPU on Linux or Windows, with the driver’s
nvidia-smion the PATH.
Steps
-
Open the panel
Press S, or click the This machine icon on the stripe on the right; do the same to close it. A browser’s first visit opens it, unless the window is too narrow for it beside Usage.
Demo data A 16-core Linux computer while the demo sessions run their tests. The panel shows this computer only, never a paired deck’s. A line under its title says when something needs attention.
More about the panel
It docks beside the stripe on the right, and moves one place left while the Usage panel is open. Drag its header to put it anywhere else on the board; double-click the header to send it back. The line under its title names the CPU held back to cool it, physical memory at 90% or more, or the Claude API not answering.
Too narrow means the board would keep less than 600 px beside both panels: a window under 1,556 px wide with the accounts panel or session list open, or 1,268 px without. On a phone it always waits behind Usage. A wider window opens it again.
Its × closes it too; Esc clears the canvas selection instead. Once closed, it stays closed in this browser. While it is open, the page asks the deck for a reading every 3 seconds.
-
Read the CPU and the memory
The figure beside CPU is how busy the whole computer is. The strip under it has one column per logical core, so one core stuck at 100% shows there.
Load average is the queue for the cores over one, five and fifteen minutes: a count of tasks, not a share of the CPU. Physical is the memory in use out of the total, and its bar turns amber from 90%.
More about the CPU and the memory
- Hover a core’s column to read it. CPU is never coloured as a warning: at 90% the computer is doing the work you asked for.
- When the one-minute load is above the core count, a line under it says by how much, as in 1.2× more work queued than cores to run it.
- In use means the total less what the system can hand over without swapping, not the operating system’s own “used” figure. Sizes count in 1024s.
- Swap follows when the computer has any. On Windows the row is Commit, because that is what Windows reports. Windows publishes no load average, so there the panel shows none.
-
Read the network
Download and Upload count every network interface on the computer together. Claude API is how long a connection to Claude’s API takes to open. When the traffic goes through a VPN or Tailscale, Connection details names the route.
Claude Code only. The deck measures the Claude API only on a computer where it finds Claude Code.
More about what leaves the computer
The deck reads every figure on this computer. It keeps the history in memory, writes none of it to disk, and serves the readings on
127.0.0.1, which only this computer can reach.To time the Claude API figure, while the panel is open, the deck looks up
api.anthropic.comand opens a TCP connection to its port 443 about every 30 seconds. It closes the connection as soon as it opens and sends nothing over it. To name the route, the deck asks the computer’s routing table, and Tailscale when the route is a tunnel.On a Mac with Apple silicon whose sensors give nothing, it also downloads
macmonfrom GitHub once (step 4).The deck’s usage reports, on unless the deck was started with
AGENTS_DECK_NO_REPORTS=1, carry the number of cores, the total memory and the deck’s own peak memory as a range; none of the panel’s figures or history. -
Read the GPUs and the temperatures
Each NVIDIA GPU gets a section above Thermal, with its utilization, video memory, temperature and power, read every 5 seconds. It keeps no history, so its heading opens no chart.
Thermal is drawn only where the computer gives a reading, never as a zero. Each row’s bar ends where it turns red, with a notch where it turns amber.
On Windows, a thermal zone is not the CPU. It measures whatever the firmware wired it to, on many laptops nothing, so the deck draws a zone only once its value has changed, and names it Thermal zone.
More about where the degrees come from
- Linux:
/sys/class/hwmon, then/sys/class/thermal. On Intel, the kernel’s throttle count adds a Throttling row: the share of time the clock was held down. - Windows: an ACPI thermal zone, through a performance counter, then
MSAcpi_ThermalZoneTemperature; then a hardware monitor you run yourself. - Mac with Intel:
ioregfor the GPU, andpmsetfor a Throttling row, which says how much of the CPU’s speed is held back to cool it. - Mac with Apple silicon:
macmon, which the deck downloads when the Mac’s own sensors give nothing.
On Windows, that monitor is LibreHardwareMonitor with its web server on; the deck reads it and never installs it. The deck downloads
macmonfrom GitHub once, checks it against the release’s checksum, and keeps it in~/.agents-deck/tools/macmon. It downloads nothing if you already havemacmonon your PATH or from Homebrew, or underAGENTS_DECK_NO_DOWNLOAD=1orAGENTS_DECK_NO_INSTALL=1. - Linux:
-
Look back at a reading
Each section’s heading ends in a ›. Click the heading, or the figures under it, to open its chart, such as Load history. Click a minute to keep its reading under the chart; click it again, or its ×, to let it go.
Open the full-size picture
Demo data The jump is the demo sessions starting their test run. The deck keeps up to a day of each reading in memory; a restart empties it.
More about the charts
The deck keeps the history whether or not the panel is open: one point per minute, holding that minute’s highest value. The header says how far back the chart goes, as in since 21:12 · 1h 29m.
Each line shows its value now and its peak; click the peak to keep the minute it peaked. Hover over a chart to read one minute. On Load history, a minute also says how many times the core count it was. Dashed lines mark where a reading turns amber or red: memory and swap at 90%, the queue at your core count, each temperature at its own. The CPU and network charts have none.
While the one-minute load is above your core count, Load history ends with Current 1-minute load and the panel’s line saying by how much.
Esc, the chart’s × or a click outside it closes it.
-
Find the busiest processes
At the foot of the panel, click Busiest processes. The dialog lists the 40 busiest processes by CPU and the 40 largest by memory, not every process. Click any heading but pid to sort by it.
Open the full-size picture
Demo data The web-api session’s tests, bundler and type check are the three busiest. The cpu column counts per core, so 312 is a little over three cores. To end a process, use Activity Monitor, Task Manager or a terminal: the dialog cannot.
More about the process list
- The memory column is the resident size, which is what
psand Task Manager show. Activity Monitor on a Mac shows a different figure. - After each name comes as much of its command line as tells two
nodeprocesses apart. Anything shaped like a secret is removed before it leaves the deck: a filter, not a guarantee. - The list starts sorted by cpu. Click a heading again to reverse it.
- The dialog reads the list every 4 seconds while it is open, and never while it is shut.
- On Windows and Linux, the cpu column is what each process used since the previous reading, so it shows — until the second one. On Windows there is no user or command line.
- The memory column is the resident size, which is what
If something goes wrong
There is no Thermal section
The computer gave no temperature the deck can read without administrator rights; a virtual machine never does. On a Mac with Apple silicon, wait for the deck to download macmon. Otherwise install a sensor tool or driver, such as LibreHardwareMonitor with its web server on for Windows, then restart the deck so it asks again: npx ccdeck --stop, then npx ccdeck.
The panel says “reading this machine…” and nothing else
A deck that has just started has no reading yet, so wait a few seconds. If it stays, run npx ccdeck --status to see whether the deck is running.
Network says “Can’t reach Claude”
The connection to api.anthropic.com failed, or took longer than 4 seconds. Check your connection or VPN.
Busiest processes says “Could not read the process list — retrying”
No reading has come back yet, and the dialog asks again every 4 seconds. On Windows, the first PowerShell start can take a reading or two.
S does nothing
Letter keys are ignored while a text field has the focus or a dialog is open. Close the dialog, turn on Single-key shortcuts in Settings › Keyboard, or click the This machine icon.
Something else? See Troubleshoot ccdeck: status, logs, port and hooks.