Agent status & notifications
Because agents report through their own hooks (see Agents overview), nodeterm always knows whether an agent is working, waiting on you, or done — without reading a single line of its output. Here’s how that surfaces.
RUNNING and NEEDS YOU
Section titled “RUNNING and NEEDS YOU”Every agent’s native hook events are normalized into one shared four-state model:
- working — the agent is actively doing something.
- waiting — it’s paused, waiting for your input.
- blocked — it’s stopped on something it needs from you.
- done — the turn finished.
The node header shows a pulsing badge that collapses those four into two words: a RUNNING badge while the agent is working, and NEEDS YOU when it’s waiting or blocked. Because the states come from the same normalizer for all three built-in agents, the badge means the same thing whichever agent you’re running.
Unread and notifications
Section titled “Unread and notifications”When an agent goes busy → idle while the nodeterm window is unfocused, nodeterm marks that node unread so you can find it later:
- a dot on the node header,
- a stroke on the node in the minimap,
- a dot on the project tab.
If notifications are enabled, an OS notification also fires. Notifications are opt-in behind a one-time consent prompt, and you can toggle them in Settings. Click the notification and nodeterm focuses the window and centers the node — switching to its project first if the node lives on a different one. The unread markers clear as soon as you focus or select the node.
Session names
Section titled “Session names”Claude nodes keep their title in sync with the session’s own name — the same name you’d
see in /resume — in both directions:
- Session → title: the node adopts the session’s name (whether Claude auto-named it or you
set it with
/rename) as its node title. This tracking continues until you rename the node by hand. - Title → session: the moment you rename the node yourself — header rename box, ✦ AI-name,
sidebar, or command palette — tracking stops and your chosen name is pushed back into the
live session as
/rename, so the session and the node stay named the same thing.
An overridden name is remembered, so it survives a reload or a resume.