hermes - 💡(How to fix) Fix Feature Request: Official Plugin API for TUI Status Bar Customization [1 comments, 2 participants]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…
GitHub stats
NousResearch/hermes-agent#17540Fetched 2026-04-30 06:46:52
View on GitHub
Comments
1
Participants
2
Timeline
8
Reactions
0
Author
Participants
Timeline (top)
labeled ×5cross-referenced ×2commented ×1

Root Cause

A specific example of this limitation is the "caveman" plugin, which injects a custom icon (🗿) into the status bar. To achieve this, the plugin currently requires direct modification of ~/.hermes/hermes-agent/cli.py. This approach is highly fragile because:

  1. Update Breakage: Any update to the Hermes Agent core code will likely overwrite these patches, breaking the plugin's functionality.
  2. Internal API Instability: Relying on internal implementation details (like specific variable names or rendering logic within cli.py) violates the principle of separation of concerns and makes plugin development risky.
  3. Maintenance Overhead: Plugin maintainers must constantly track upstream changes to re-apply patches, discouraging community contributions.

Fix Action

Fix / Workaround

Problem Statement

Currently, there is no supported or stable public API for plugins to customize the TUI status bar in Hermes Agent. Plugins that wish to display dynamic information (such as status indicators, icons, or custom text fragments) in the CLI status bar are forced to patch internal core files directly.

A specific example of this limitation is the "caveman" plugin, which injects a custom icon (🗿) into the status bar. To achieve this, the plugin currently requires direct modification of ~/.hermes/hermes-agent/cli.py. This approach is highly fragile because:

  1. Update Breakage: Any update to the Hermes Agent core code will likely overwrite these patches, breaking the plugin's functionality.
  2. Internal API Instability: Relying on internal implementation details (like specific variable names or rendering logic within cli.py) violates the principle of separation of concerns and makes plugin development risky.
  3. Maintenance Overhead: Plugin maintainers must constantly track upstream changes to re-apply patches, discouraging community contributions.

Technical Details

  • Current Workaround: Direct file patching of cli.py (specifically modifying the status bar rendering loop or state variables).
  • Why it is problematic: This bypasses the plugin system's encapsulation. It relies on internal implementation details that are subject to change without notice (e.g., refactoring of the cli module).
  • Scope: The feature should focus on the CLI/TUI status bar. It does not necessarily need to support complex UI elements (like progress bars) immediately, but the API should be extensible for future enhancements.

Code Example

# In plugin initialization
  def on_load(self, agent):
      agent.cli.register_status_bar_fragment(
          id="caveman_status",
          content="🗿",
          priority=10
      )

---

# In plugin logic
  def update_status_icon(self, icon: str, intensity: float = 1.0):
      # Updates the specific fragment dynamically
      pass
RAW_BUFFERClick to expand / collapse

Problem Statement

Currently, there is no supported or stable public API for plugins to customize the TUI status bar in Hermes Agent. Plugins that wish to display dynamic information (such as status indicators, icons, or custom text fragments) in the CLI status bar are forced to patch internal core files directly.

A specific example of this limitation is the "caveman" plugin, which injects a custom icon (🗿) into the status bar. To achieve this, the plugin currently requires direct modification of ~/.hermes/hermes-agent/cli.py. This approach is highly fragile because:

  1. Update Breakage: Any update to the Hermes Agent core code will likely overwrite these patches, breaking the plugin's functionality.
  2. Internal API Instability: Relying on internal implementation details (like specific variable names or rendering logic within cli.py) violates the principle of separation of concerns and makes plugin development risky.
  3. Maintenance Overhead: Plugin maintainers must constantly track upstream changes to re-apply patches, discouraging community contributions.

Proposed Solution

Introduce a dedicated, documented plugin hook or method for status bar customization. This should be part of the official plugin lifecycle, allowing plugins to register fragments or update icons without touching core source files.

Suggested API designs:

  • Option A (Fragment Registration):
    # In plugin initialization
    def on_load(self, agent):
        agent.cli.register_status_bar_fragment(
            id="caveman_status",
            content="🗿",
            priority=10
        )
  • Option B (Direct Icon/State Update):
    # In plugin logic
    def update_status_icon(self, icon: str, intensity: float = 1.0):
        # Updates the specific fragment dynamically
        pass

The implementation should ensure thread safety and handle rendering conflicts if multiple plugins attempt to modify the same section of the bar.

Benefits

  1. Stability: Plugins will survive core updates without modification.
  2. Ecosystem Growth: Lowering the barrier to entry for plugin developers will encourage more creative integrations and community engagement.
  3. Code Quality: Decouples plugin logic from core rendering logic, leading to cleaner and more maintainable codebases for both Hermes Agent and its plugins.

Technical Details

  • Current Workaround: Direct file patching of cli.py (specifically modifying the status bar rendering loop or state variables).
  • Why it is problematic: This bypasses the plugin system's encapsulation. It relies on internal implementation details that are subject to change without notice (e.g., refactoring of the cli module).
  • Scope: The feature should focus on the CLI/TUI status bar. It does not necessarily need to support complex UI elements (like progress bars) immediately, but the API should be extensible for future enhancements.

Conclusion

Official support for status bar customization is a logical next step for Hermes Agent's plugin architecture. It transforms a "hacky" workaround into a first-class citizen feature, ensuring long-term compatibility and fostering a healthier plugin ecosystem.

extent analysis

TL;DR

Introduce a dedicated plugin hook or method for status bar customization to decouple plugin logic from core rendering logic.

Guidance

  • Implement a plugin API that allows registering status bar fragments, such as register_status_bar_fragment, to enable plugins to customize the status bar without modifying core files.
  • Ensure the API design considers thread safety and handles rendering conflicts when multiple plugins attempt to modify the same section of the bar.
  • Evaluate the proposed API designs, such as Option A (Fragment Registration) and Option B (Direct Icon/State Update), to determine the best approach for the plugin ecosystem.
  • Develop a migration plan for existing plugins that currently use direct file patching, such as the "caveman" plugin, to adopt the new plugin API.

Example

def on_load(self, agent):
    agent.cli.register_status_bar_fragment(
        id="caveman_status",
        content="",
        priority=10
    )

Notes

The implementation should focus on the CLI/TUI status bar and prioritize extensibility for future enhancements, without necessarily supporting complex UI elements immediately.

Recommendation

Apply a workaround by introducing a dedicated plugin hook or method for status bar customization, as this approach decouples plugin logic from core rendering logic and ensures long-term compatibility.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING

hermes - 💡(How to fix) Fix Feature Request: Official Plugin API for TUI Status Bar Customization [1 comments, 2 participants]