Show the active model (Opus / Sonnet / …) per agent in the sidebar #955
Replies: 4 comments 1 reply
|
+1, and I'd widen this a bit: the same screen text that reveals the active model in Claude Code also reveals the reasoning-effort level and, separately, a persistent permission-mode badge (plan / auto / manual / accept-edits). All three are "which pane is doing what, without focusing it" information, so I think they belong in the same feature. Proposed approach Extend the existing per-agent screen-detection manifests ( The three attribute ids ( Because the underlying text is transient (a startup banner scrolls out of view after a few turns), the runtime side would latch: a fresh value overwrites what's shown, but a scan that doesn't re-observe it leaves the previous value in place, resetting only on agent change / process exit. Display would be a new opt-in sidebar field (like the existing Config Opt-in via the same [ui.sidebar.agents]
lines = [
[
{ field = "agent_status", show = true },
{ field = "pane_name", show = true },
{ field = "tab_name", show = true },
{ field = "space_name", show = true },
],
[
{ field = "status", show = true },
{ field = "time", show = true },
{ field = "custom_status", show = true },
{ field = "right_alignment", show = true },
{ field = "agent_name", show = true },
],
[
{ field = "model_name", show = true },
{ field = "mode", show = true },
{ field = "effort", show = true },
],
]Status I've built a working prototype of this on top of my fork (herdr-mx) against a recent
Open questions
|
|
Attribute plumbing is tempting, but detection is built on evidence from screen snapshots, not agent-declared metadata — model/mode/effort would be among the first fields we just trust instead of infer. Sidebar display is a TUI concern; can this stay a presentation-layer decode against the existing snapshot instead of growing the manifest schema? Genuine question: is there a case where model/effort can't be recovered from what's on screen, forcing manifest attributes rather than smarter decoding? |
|
To be clear on the first point: nothing here is agent-declared. On the "why not a presentation-layer decode" question: I don't think it removes the need for a manifest-like mechanism, it just relocates it. Two things push back on doing this purely at render time:
Answering directly: there's no case where model/effort can't be recovered from the screen, that's exactly why I think it fits the existing detection model rather than needing something new. The question isn't detection vs. trust, both approaches read the same pixels, it's where the per-agent text-matching logic and its cached result live. Doing it at the same point state detection already runs also means the value is available to anything that already consumes Happy to be wrong here though, if there's a cleaner presentation-layer design that doesn't need a cache or per-agent Rust branching, I'd genuinely rather have less surface area, not more. |
|
https://herdr.dev/docs/configuration/#sidebar-row-layouts latest sidebar customization is the solution for this. i don't want to bring more primitives but it should be extendable by anyone. tell your claude to make a claude code hook would report anything you want :) |

Uh oh!
There was an error while loading. Please reload this page.
What I want
When I run several Claude Code panes side by side, the agents sidebar shows each one as
claudewith its status (working / blocked / done). What it doesn't show is which model each pane is running — Opus vs. Sonnet vs. Haiku.I'd love the sidebar to surface the active model per agent, so I can tell at a glance which pane is on which model.
Why
I deliberately run different models for different jobs at the same time — e.g. a heavier model doing implementation in one pane and a cheaper model handling mechanical PR/CI cleanup in another. Right now every row just says
claude, so I can't distinguish them without focusing each pane and checking.Seeing the model in the row would make this kind of mixed-model workflow readable at a glance, which is exactly the situation herdr's sidebar is great for.
Note
The active model can change mid-session (Claude Code's
/modelcommand), so ideally the displayed model would follow those switches rather than only reflecting the model at launch.Thanks again for herdr.
All reactions