SkillAgentSearch skills...

claude-panel

A real-time context dashboard and ambient screensaver for Claude Code

Install / Use

claude mcp add alex-radaev -- npx -y github:alex-radaev/claude-panel

If the server publishes to npm under a different name, use that package instead — check the repo README.

About this skill
🔌

MCP Server

Model Context Protocol server

Quality Score

75/100

Supported Platforms

Claude Code
Claude Desktop
<p align="center"> <h1 align="center">Claude Panel</h1> <p align="center"> Claude Code gets its own screen — it decides what you need to see </p> </p> <p align="center"> <a href="https://www.python.org/downloads/"><img alt="Python 3.12+" src="https://img.shields.io/badge/python-3.12+-blue.svg"></a> <a href="https://github.com/alex-radaev/claude-panel/blob/main/LICENSE"><img alt="License" src="https://img.shields.io/github/license/alex-radaev/claude-panel"></a> <a href="https://github.com/alex-radaev/claude-panel/stargazers"><img alt="Stars" src="https://img.shields.io/github/stars/alex-radaev/claude-panel"></a> </p> <p align="center"><img src="demo/hero.gif" alt="Panel cycling through main, status, and ambient screens" width="900"></p> <p align="center"><em>Main screen (Claude's content) → Status dashboard → Ambient screensaver</em></p>

Claude Panel is a persistent TUI that sits next to your Claude Code terminal. Claude autonomously updates the panel with whatever it thinks matters — code it just wrote, a diagram, next steps, or a mood emoji. A structured dashboard tracks the current task, files changed, and key decisions, refreshing after every response. And when you're between tasks, ambient terminal screensavers keep the vibe going.

Three Screens

| Screen | Managed by | What it shows | |--------|-----------|---------------| | Main | Claude | Whatever Claude thinks is useful right now — code snippets, explanations, diagrams, progress checklists, mood emoji. Full creative control. | | Status | Claude (AI curator) | Structured dashboard: current task, files changed, decisions made. Auto-updates after every response. | | Ambient | You | Terminal screensaver of your choice. Plays when nothing else needs your attention. |

Claude manages the content, you manage the screensaver. The main and status screens update automatically — Claude reads the conversation, decides what's worth pinning on screen, and writes it. No manual commands needed.

Ambient Screensavers

Twelve built-in terminal animations ship with the package. Navigate with arrow keys or panel(show="ambient").

<p align="center"><img src="demo/screensaver-aurora.gif" alt="aurora screensaver" width="900"></p> <p align="center"><em>aurora</em></p> <p align="center"><img src="demo/screensaver-tokyo-drift.gif" alt="tokyo-drift screensaver" width="900"></p> <p align="center"><em>tokyo-drift</em></p>

Also available: neon-dreams | neon-street | space-flight | rain-city | city-lights | matrix | noir | banquet | dvd-bounce | synthwave

All screensavers are bundled with the package — they work out of the box on a fresh install.

Custom screensavers

Drop a .py file in ~/.claude-panel/screensavers/ and it becomes available immediately. User screensavers override bundled ones of the same name, so you can customize any built-in screensaver without touching the package.

# List available screensavers
panel(screensaver="rain-city")

# Or ask Claude to create one
# "make me a screensaver with falling snow"

Screensavers are plain Python scripts that draw to a Rich canvas. Creating your own takes ~10 lines.

Install

# As a Claude Code plugin (recommended)
claude plugin marketplace add alex-radaev/claude-panel
claude plugin install claude-panel@claude-panel
<details> <summary>Manual installation</summary>
git clone https://github.com/alex-radaev/claude-panel
cd claude-panel
uv sync

Then add to your MCP config (~/.claude/settings.json or .mcp.json).

</details>

Usage

The panel opens automatically when you start a Claude Code session — an iTerm2 (macOS) or Windows Terminal (WSL) split pane launches with the viewer. No manual commands needed.

To disable auto-open, set "auto_open": false in ~/.claude-panel/config.json.

You can also open it manually:

# From Claude Code
panel_open()

# Manual
uv run claude-panel

Once running, Claude takes over. The main and status screens update on their own. You can switch views:

panel(show="ambient")              # switch to screensaver
panel(show="main")                 # switch to main canvas
panel(show="status")               # switch to status dashboard
panel(screensaver="tokyo-drift")   # change screensaver

| Key | Action | |-----|--------| | q | Quit viewer | | <- -> | Cycle screens | | c | Clear panel |

iTerm2 tip: The panel pane may look washed out because iTerm2 dims inactive split panes by default. To fix: Settings > Appearance > Dimming and uncheck Dim inactive split panes.

How It Works

 Claude Code session              iTerm2 Split Pane
┌──────────────────────┐         ┌──────────────────┐
│                      │         │                  │
│  Main Claude         │         │  Textual TUI     │
│  + Background agents │         │  Viewer          │
│  + Stop hook curator │         │                  │
│                      │         │                  │
└──────────┬───────────┘         └────────┬─────────┘
           │  WRITES                      │ POLLS
           └──────►  per-session   ◄──────┘
                     state.json
            ~/.claude-panel/sessions/<id>/
  1. Claude responds — a Stop hook runs the AI curator (Haiku). It reads the conversation, decides what changed, and updates the status screen.
  2. Claude spawns a background agent — updates the main screen with whatever content is worth showing. Zero conversation noise.
  3. The viewer polls the state file every 300ms and re-renders instantly.

Session isolation: Each Claude Code session gets its own state. Run multiple sessions — they don't interfere. The viewer tracks whichever session is active.

Review Notifications

The panel can show GitHub PRs waiting for your review directly on the main screen. A shared background poller checks gh search prs --review-requested=@me every 2 minutes and surfaces results as a clickable list with links that open in your browser.

  • Auto-appears when you have pending reviews
  • Auto-dismisses when you approve, comment, or request changes
  • One poller shared across all concurrent sessions (no duplicate API calls)
  • Clickable links — click a PR title to open it in the browser
  • Filter by GitHub org via review_notifications.org in config
  • Disable entirely with "review_notifications": false

Configuration

~/.claude-panel/config.json:

{
  "auto_open": true,
  "model": "claude-haiku-4-5-20251001",
  "favorite_screensaver": "tokyo-drift",
  "update_every_n": 1,
  "curator_personality": "playful",
  "review_notifications": {
    "enabled": true,
    "poll_interval_seconds": 120,
    "org": "my-org"
  }
}

| Option | Values | Description | |--------|--------|-------------| | auto_open | true, false | Automatically open the panel on session start (default: true) | | model | Any Claude model ID | Model for the status curator (default: Haiku) | | favorite_screensaver | Screensaver name | Default ambient screensaver | | update_every_n | Number | Update status every N responses (1 = every time) | | curator_personality | "playful", "professional" | Curator tone — playful adds humor and emoji combos, professional is concise and factual | | review_notifications | Object or false | GitHub review request notifications (default: enabled) | | review_notifications.enabled | true, false | Toggle review notifications on/off | | review_notifications.poll_interval_seconds | Number | How often to check GitHub for new reviews (default: 120) | | review_notifications.org | GitHub org name | Only show reviews from this org (omit for all orgs) |

Contributing

Contributions welcome — especially new screensavers. See CONTRIBUTING.md for the full guide, including a screensaver template that gets you started in ~10 lines of Python.

License

MIT

Related Skills

View on GitHub
GitHub Stars10
CategoryDevelopment
Updated5mo ago
Forks4

Languages

Python

Security Score

90/100

Audited on Apr 7, 2026

1 low2 info