Comprehensive guide to the visual features in gh-agent-viz.
Press K to toggle the kanban board layout. The board organizes sessions into four status columns:
| Column | Statuses |
|---|---|
| Running | Active and queued sessions |
| Needs Input | Sessions waiting for human action |
| Completed | Successfully finished sessions |
| Failed | Sessions that errored out |
h/l— move between columnsj/k— move within a columnenter— open session details
The kanban view is most useful when you are monitoring many concurrent agent sessions across repositories. It gives you a fast visual overview of where sessions are in their lifecycle without scrolling through a flat list.
Press K again to return to the default list view.
Toast notifications appear as temporary overlays in the top-right corner of the terminal when session statuses change between refreshes.
- Trigger: A session changes status (e.g., running → completed, running → needs input) between automatic or manual refreshes.
- Auto-dismiss: Each toast disappears after 5 seconds.
- Stacking: Up to 3 toasts are visible at once. Newer toasts push older ones down.
- Initial load: No toasts fire on the first data load — they only appear for status changes.
Toasts help you notice important transitions (especially failures or input-needed events) without having to actively watch the session list.
The session timeline bar is a compact Unicode visualization of a session's lifecycle. It appears in the detail view (both full-screen and split-pane modes).
The bar spans from the session's created timestamp to now:
| Character | Meaning |
|---|---|
░ |
Idle — session exists but is not actively running |
▓ |
Completed active — work was happening during this interval |
█ |
Running active — session is currently executing |
Example:
░░░░▓▓▓▓▓▓████
^ ^
created now
This session was idle briefly, then ran actively, and is currently still running.
- Start: session
created_attimestamp - End: current time (
now) - The bar width scales to fit the available terminal width.
The dependency graph visualizes relationships between sessions. It appears in the detail view when related sessions are detected.
Sessions are considered related when they share:
- Same repository — sessions targeting the same
owner/repo - Branch prefixes — branches sharing a common prefix (e.g.,
feature/auth-loginandfeature/auth-signup)
Relationships are rendered using box-drawing characters:
┌─ Add login endpoint (running)
├─ Add signup flow (completed)
└─ Fix auth tests (needs input)
Parent-child or sibling relationships are inferred from branch naming and repository context. The graph is informational — it does not imply execution order or blocking dependencies.
gh-agent-viz supports multiple color themes to match your terminal aesthetic.
| Theme | Description |
|---|---|
default |
Adaptive theme that auto-detects light/dark terminal background |
catppuccin-mocha |
Warm pastel theme from the Catppuccin palette |
dracula |
Dark theme with vibrant accents |
tokyo-night |
Cool-toned dark theme inspired by Tokyo Night |
solarized-light |
Light theme using the Solarized Light palette |
Set the theme in ~/.gh-agent-viz.yml:
theme: catppuccin-mochaWhen no theme is specified (or theme: default), gh-agent-viz queries your terminal's background color and selects appropriate contrast levels automatically. This works in most modern terminals (iTerm2, Ghostty, Kitty, Windows Terminal, etc.).
Live log tailing streams agent session logs in real time, similar to tail -f.
- Highlight a running session in the session list.
- Press
lto open the log viewer. - Press
fto enable follow mode.
When follow mode is active:
- A LIVE 🔴 indicator appears in the log viewer header.
- New log lines are fetched every 2 seconds via
gh agent-task view <id> --log --follow. - The viewport automatically scrolls to the bottom as new lines arrive.
- Press
fagain to disable follow mode and browse the log freely.
| Key | Action |
|---|---|
f |
Toggle follow mode |
j / ↓ |
Scroll down one line |
k / ↑ |
Scroll up one line |
d |
Page down |
u |
Page up |
g |
Jump to top |
G |
Jump to bottom |
esc |
Return to session list |
The header shows filter tabs that organize sessions by status.
| Tab | Shows | When it matters |
|---|---|---|
| ATTENTION | needs-input and failed sessions only |
Something is waiting on you |
| RUNNING | Active sessions (running, queued) | Sessions currently working |
| DONE | Completed sessions | Finished work |
| FAILED | Failed sessions | Errors to investigate |
| ALL | Everything | Full overview |
On startup, the UI picks the most useful tab automatically:
- ATTENTION — if there are sessions waiting on you
- RUNNING — if there are active sessions
- ALL — fallback when nothing is active
Only two statuses trigger the ATTENTION tab:
needs-input— the agent has explicitly asked a question and is blocked waiting for your answerfailed— the agent hit an error and stopped
Idle running sessions (e.g., an agent that finished responding and is waiting for your next message) show up under RUNNING with a 💤 idle badge. This is a known limitation — the data source doesn't distinguish "agent actively working" from "agent waiting for the user to continue." See #121 for discussion.
Follow mode is only available for sessions with status running. For completed or failed sessions, the log viewer shows the full static log.
Press c to open the conversation view from the session list, detail view, or log view. This renders the session's dialogue as styled chat bubbles.
- User messages are left-aligned.
- Agent messages are right-aligned.
- Tool executions are shown inline between messages.
Conversation view only works for local-copilot sessions that have event logs on disk (~/.copilot/session-state/). Remote agent-task sessions do not expose conversation-level data.
| Key | Action |
|---|---|
j / ↓ |
Scroll down |
k / ↑ |
Scroll up |
d |
Page down |
u |
Page up |
g |
Jump to top |
G |
Jump to bottom |
esc |
Return to previous view |
Press t to open the tool timeline from the session list or detail view. This shows a chronological trace of every tool execution in the session.
| Icon | Tool type |
|---|---|
| 🔧 | bash |
| ✏️ | edit |
| 📄 | view |
| 🔍 | search |
| 📤 | git |
| 🧪 | test |
| ⚙️ | other |
Tool timeline is only available for local-copilot sessions with event logs.
Press d to open the PR diff from the session list or detail view. The diff is rendered with syntax-aware coloring directly in the TUI.
- Green — added lines
- Red — deleted lines
- Cyan — hunk headers (
@@lines)
For local sessions, diff view discovers the associated PR by looking up the session's branch name. This works even for merged PRs. While the diff is loading, the UI shows 🔄 Loading diff....
Press M to toggle the mission control dashboard. This provides a high-level fleet overview across all monitored repositories.
- Fleet summary — aggregate session counts (active, idle, done, failed) with a proportional bar chart.
- Per-repo breakdown — active/idle/done/failed counts for each repository.
- Needs your attention — surfaces sessions with
needs-inputorfailedstatus for quick triage.
| Key | Action |
|---|---|
j / ↓ |
Move to next repo |
k / ↑ |
Move to previous repo |
M |
Return to session list |
Press ? to toggle a full keybinding reference overlay. The overlay works in all view modes.
The help overlay organizes shortcuts by category:
- Navigation — movement and selection
- Actions — open PR, resume session, dismiss, refresh
- Views — logs, conversation, diff, kanban, mission control
- Groups — group-by mode, expand/collapse
- Log View — follow mode, scrolling
- Meta — repo link, file issue, quit
| Key | Action |
|---|---|
! |
Open the gh-agent-viz repository in your browser |
@ |
File a new issue against gh-agent-viz in your browser |
Local Copilot CLI sessions on feature branches can automatically discover their associated pull request.
- Press
oto open the PR in your browser. The PR is discovered by looking up the session's branch name via the GitHub API. - Sessions on feature branches show a
PRtag in the meta line of the session card. - Main/master branches are skipped — PR discovery only runs for feature branches.
- Works for both open and merged pull requests.