Skip to content

[FEATURE]: Plugin Status Bar / Widget Area for Real-Time Plugin State #10400

Description

@cvrt-jh

Feature hasn't been suggested before.

  • I have verified this feature I'm about to request hasn't been suggested before.

Describe the enhancement you want to request

Summary

Add a dedicated UI area in the TUI where plugins can display real-time status information. This would enable plugins to show persistent state (like rate limits, connection status, account info) without requiring the user to ask the agent or check logs.

Problem Statement

Current Behavior

Plugins can:

  • Hook into events (event, stop, tool.execute.*)
  • Transform system prompts
  • Add custom tools
  • Log to console/files

Plugins CANNOT:

  • Display persistent status in the TUI
  • Show real-time updates (rate limits, connection state, etc.)
  • Provide at-a-glance information to users

Use Case: Multi-Account OAuth Plugin

I maintain opencode-anthropic-multi-auth, a plugin that provides multi-account OAuth with automatic failover on rate limits.

What users need to see:

  • Current active account
  • Which accounts are rate-limited (and time remaining)
  • Total accounts available
  • Request count / session stats

Current workarounds (all suboptimal):

  1. MULTI_AUTH_DEBUG=1 + tail log file in separate terminal
  2. Custom tool that agent can call (adds latency, uses context)
  3. Inject into system prompt (invisible to user)

Proposed Solution

Option A: Status Bar Area

A dedicated line/area at the bottom or top of the TUI where plugins can register status widgets:

┌─────────────────────────────────────────────────────────────┐
│ [multi-auth] Account: "work" │ Rate Limited: 1/3 │ ⏱ 4m 32s │
└─────────────────────────────────────────────────────────────┘

Option B: Plugin Status Panel

A collapsible panel (like the file tree) showing plugin states:

▼ Plugin Status
  multi-auth: ✓ work (2 rate limited)
  my-plugin: ● connected

Option C: Status Hook with Periodic Updates

return {
  "status.provide": async (input, output) => {
    output.items.push({
      plugin: "multi-auth",
      icon: "🔐",
      text: `${currentAccount.label} (${rateLimitedCount} limited)`,
      tooltip: "Click for details",
      priority: 10,
    })
  }
}

API Design Proposal

interface StatusItem {
  id: string           // Unique identifier
  text: string         // Short display text
  icon?: string        // Emoji or icon
  tooltip?: string     // Hover/expand text
  priority?: number    // Sort order (higher = more prominent)
  color?: "default" | "success" | "warning" | "error"
}

interface Hooks {
  "status.provide"?: (
    input: { timestamp: number },
    output: { items: StatusItem[] }
  ) => Promise<void>
}

The TUI would call this hook periodically (e.g., every 5 seconds) or on specific events.

Benefits

  1. Better UX - Users see plugin state at a glance
  2. Debugging - No need for separate terminal/log tailing
  3. Professional feel - Status bars are standard in IDEs/terminals
  4. Plugin ecosystem - Enables richer plugin experiences

Related Issues

Implementation Notes

  • Could reuse the existing hook pattern from other plugin APIs
  • Status area could be toggled with a keybind (like Ctrl+S)
  • Consider rate-limiting status updates to prevent performance issues

Happy to help implement this if the design direction is approved!

Activity

  1. added
    opentuiThis relates to changes in v1.0, now that opencode uses opentui
    on Jan 24, 2026
  2. github-actions commented on Jan 24, 2026

    @github-actions
    Contributor

    This issue might be a duplicate of existing issues. Please check:

    Feel free to ignore if none of these address your specific case.

  3. github-actions commented on Mar 27, 2026

    @github-actions
    Contributor

    To stay organized issues are automatically closed after 90 days of no activity. If the issue is still relevant please open a new one.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

opentuiThis relates to changes in v1.0, now that opencode uses opentui

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions