Periscope — Git skill for Claude Code
Live browser dashboard over tmux sessions — every window becomes a card, modal opens a live xterm.js terminal, parses Claude Code pane status (branch / PR / CI / spinner / recap).
How to install Periscope
This entry records only its repository, not the path inside it, so there is no
exact command to give. Open tomplex/periscope and copy the folder into
~/.claude/skills/, or the file into ~/.claude/agents/.
What Periscope does
Live browser dashboard over tmux sessions — every window becomes a card, modal opens a live xterm.js terminal, parses Claude Code pane status (branch / PR / CI / spinner / recap).
Alternatives in Git
- Create Worktree + Spawn Agent — git worktree add ../feat-custom-templates -b feat/custom-templates origin/main cd ../feat-custom-templates && 211 ★
- Recall — by zippoxer - Full-text search your Claude Code sessions 158 ★
- Adversarial Review — humanizer, update_config), custom status bar, MCP integration, and a self-improvement loop that remembers co 125 ★
README
periscope
A live dashboard over your tmux sessions. Every window becomes a card; click into a card to open a full live terminal (xterm.js + tmux `pipe-pane` over WebSocket), send keystrokes, focus the window in tmux, or rename it. Identifies Claude Code and Codex panes alongside ordinary shells, combines their agent state with branch/PR/CI metadata, and surfaces work that is running or ready for attention.
Built for the "I have 30 tmux windows across 5 sessions with coding agents running, and I want a single pane of glass" workflow.
Requirements
tmux(any reasonably modern version)- `uv` for running the single-file script
- Node 20+ +
npm— the frontend is a Vite-built bundle (static/dist/) - A modern browser (uses WebSockets)
- Codex CLI 0.146.0 for the initial, macOS-tested Codex integration
- Optional:
ANTHROPIC_API_KEYfor the ✨ auto-rename feature
Run
npm install && npm run build # one-time / whenever static/src/ changes
uv run server.py
Open . Polls every 3s; the modal opens a live WebSocket bridge to the selected pane.
For the always-on / launchd-managed setup and the prod/dev port split, see [CLAUDE.md → Development workflow](./CLAUDE.md#development-workflow-prod--dev-split) and `bin/periscope`.
Updating
bin/periscope update
Pulls, regenerates the launchd plist, re-registers the agent hooks, restarts, and waits until `/api/healthz` reports the SHA it just pulled. When the dashboard is running as the launchd service it also nags: the header shows an `↑ N behind` pill once the checkout falls behind, and clicking it runs the same sequence in place.
Use this rather than `git pull` + `bin/periscope restart` — the plist and the hook registration are *generated* by `bin/periscope`, so a plain pull carries neither, and `restart` reuses the already-loaded plist. It aborts without touching the running server if the tree is dirty, the branch has diverged, or i
Related Skills
Project Minder
A local-only dev dashboard that auto-scans your projects and surfaces the context you need — git status, Claud
Switchyard
Dispatch Claude Code agents into isolated git worktrees + tmux sessions and drive them from a live web termina
Agenteye
A real-time dashboard for all your GitHub Copilot CLI & Claude Code sessions: live state, checkpoints, history
Claude Code PR Watch
Claude Code mod: a live pane of the GitHub PRs a session opens or pushes to — CI, review, conflicts, merge — w
Agents Manager
Run several Claude Code agents in parallel across many repos without losing track. One workstream = one task,
Canopy
Ship faster with parallel Claude Code sessions — one native macOS window, git worktrees, sandboxes, auto-resum
Related Agents
Independent Reviewer
Product-technical alignment reviewer. Spawned in a tmux pane via OpenAI Codex CLI with zero inherited context.
Adrian
Blocks until a tmux pane is done (pattern match, shell idle, or output idle). Use for any wait that takes more
Terminal
Terminal/PTY domain - multiplexed terminal sessions with xterm.js frontend and Rust PTY backend. Use proactive