Catalog PyPI
PACKAGE EXPLORERView in registry

ado-dashboard

PyPI

Interactive terminal dashboard for Azure DevOps PRs and work items

adoazure-devopsdashboardpull-requeststerminaltextualtuiwork-items
Versions collected1
Direct dependencies4From release 0.3.0
Last observed20 Oct, 19:45 UTC

README

Version 0.3.0 documentation

ADO Dashboard

ADO Dashboard is a keyboard-driven terminal dashboard for Azure DevOps (ADO). If you spend your day reviewing PRs, triaging work items, and managing AI coding sessions — this keeps all of it in your terminal, no browser tabs required.

CI Python 3.12+ License: MIT

Demo Mode

Try the dashboard instantly — no ADO credentials, no setup wizard, no real data.

ado-dashboard --demo
# or
ADO_DASHBOARD_DEMO=1 ado-dashboard

The --demo flag populates every tab with fictional Tolkien-themed fixture data (Middle-earth org, Fellowship project, Gandalf the Grey as user). It's perfect for screenshots, presentations, or just exploring the interface before connecting to a real ADO org. No Azure CLI calls are made.

Install & Run

ADO Dashboard — My PRs tab in demo mode

Screenshots above and below were captured in --demo mode with fictional Middle-earth data.

git clone https://github.com/gaburn/ado-dashboard.git
cd ado-dashboard
pip install -e .
ado-dashboard

On first launch an interactive setup wizard walks you through configuration. Re-run it any time with ado-dashboard --setup.

Prerequisites

RequirementInstall / verify
Python 3.12+python --version
Azure CLI (authenticated)Install, then az login
azure-devops extensionaz extension add --name azure-devops
Triage only: PowerShell (pwsh or powershell)A Get-TriageItems.ps1.example template is included; copy and customise it, then set triage_script_path in Settings

Tabs

#TabWhat it shows
1My PRsActive PRs you created (across multiple projects). Draft PRs are dimmed. Status column shows colored approval indicators: ✓ green (approved), ✗ red (rejected), ~ yellow (suggestions), · dim (no votes).
2ReviewingPRs where you are a reviewer. Vote status shown as ✓ approved / ✗ rejected / · pending. Declined PRs filtered out. Approved reviews highlighted green.
3Work ItemsADO work items assigned to you. Filters out Closed, Done, Completed, Cut, and Resolved states.
4TriageOn-call triage board with a board selector dropdown, priority groups, categorization, action plan, and clickable links. Switching boards refreshes the view with a loading indicator.
5Copilot SessionsActive Copilot CLI sessions with status, intent, and working directory. Press R (Shift+R) to resume an inactive session in a new Windows Terminal tab. Press f to focus the terminal of an active session.

Screenshots

Reviewing — PRs where you are a reviewer

Reviewing tab

Work Items — assigned items across Epic / Feature / Story / Task / Bug

Work Items tab

Triage — priority-grouped board with AI-assisted categorization

Triage tab

Copilot Sessions — resumable AI sessions with intent and last-active timestamps

Copilot Sessions tab

Keyboard Shortcuts

KeyAction
↑ ↓Move between rows
EnterOpen detail view
EscapeBack to list / clear search
1–5Switch tab
oOpen selected item in browser
cCopy selected item to clipboard
rRefresh data
/Search / filter active tab
SHIFT+0–6Sort by column
R (Shift+R)Resume a Copilot session in new terminal tab
fFocus terminal of active session
sSettings screen
iInvestigate selected triage item (launches Copilot session)
I (Shift+I)Investigate entire triage board
hHelp overlay
qQuit

Configuration

Settings are resolved in order: CLI args → environment variables → config file → defaults.

Config file location: %LOCALAPPDATA%\ado-dashboard\config.json (Windows) or ~/.config/ado-dashboard/config.json (Linux/macOS).

MethodExample
Setup wizardado-dashboard (first run) or ado-dashboard --setup
CLI flag--projects MyProject,OtherProject
In-appPress s to open settings

CLI Flags

FlagDescription
--setupRe-run the configuration wizard
--orgAzure DevOps organization URL
--projectsComma-separated project list for PR queries
--userUser email for ADO queries

Environment Variables

VariableMaps to
ADO_ORG_URLOrganization URL
ADO_PROJECTDefault project
ADO_USER_EMAILUser email
TRIAGE_BOARDDefault triage board URL
INVESTIGATION_MODELModel for investigation sessions
INVESTIGATION_AGENTAgent for investigation sessions
INVESTIGATIONS_DIRDirectory for investigation results
ADO_DASHBOARD_REPO_ROOTRepository root (for skill discovery)

In Settings (s), the Triage Boards section lets you configure multiple boards with separate Name and URL fields, then add/remove entries dynamically. Boards are stored in config.json as [display_name, url] pairs.

UI Details

  • Status bar — global counts per tab plus triage priority breakdown.
  • Dark theme with ADO blue accent.
  • Version displayed in the title bar, including git commit hash (e.g., v0.2.0 (a3b4c5d)) for detecting stale instances.
  • AI triage — pluggable investigation backend (see docs/investigation.md) with rule-based fallback when no backend is configured.
  • Triage board selector — dropdown to switch between configured ADO triage boards with a loading indicator while data refreshes.
  • Investigation launcher — press i/I to launch AI-powered investigation sessions for triage items. Requires a configured InvestigationLauncher (see docs/investigation.md).
  • Dynamic settings — investigation model and agent dropdowns are populated from the active launcher at runtime.
  • Title cleanup — board name prefixes are automatically stripped from triage item titles for cleaner display.
  • Search — press / to open a search bar that filters the active tab's table in real-time. Press Enter to keep the filter, Escape to clear it. Works on My PRs, Reviewing, Work Items, and Copilot Sessions tabs.

How It Works

ADO Dashboard is a Textual TUI. It calls the az CLI asynchronously to fetch data from Azure DevOps, keeping the UI responsive. Detail views fetch richer metadata in the background (az repos pr show, az boards work-item show). Triage data comes from a configurable PowerShell script (see docs/triage-and-investigation.md). Investigation sessions are launched via the configured InvestigationLauncher adapter (see docs/investigation.md).


Architecture

See docs/architecture.md for module map and async model.


For Contributors

DocumentContents
docs/architecture.mdModule map, dependency diagram, async model, screen lifecycle, state ownership
docs/ado-integration.mdaz command shapes, auth assumptions, error handling, JSON mapping
docs/triage-and-investigation.mdPowerShell script contract, categorizer pipeline, AI enrichment, investigation launcher
docs/investigation.mdPluggable InvestigationLauncher adapter: NoOpLauncher + custom backends
docs/configuration.mdFull 4-layer resolution, config schema, setup wizard, in-app settings
docs/development.mdRunning locally, tests, adding a tab, adding a settings field, CSS conventions, known cruft

Troubleshooting / FAQ

az login not authenticated Run az login to sign in, then az account set --subscription <name-or-id> to select the right subscription.

No PRs or work items showing Verify your org URL in the config file (%LOCALAPPDATA%\ado-dashboard\config.json on Windows, ~/.config/ado-dashboard/config.json on Linux/macOS). Re-run ado-dashboard --setup to reconfigure from scratch.

PowerShell not found (Triage tab) Install pwsh or point the triage script to the Windows built-in powershell. PowerShell is only needed if you use the Triage tab.

Triage tab shows "No triage board configured" That's expected — Triage is opt-in. Press s to open Settings and add a board URL.

App shows version v0.2.1-dirty Your working tree has uncommitted changes. Commit or stash them and restart the app.

Downloads & popularity

2downloads
1-day window · source-reported counts19 Oct 2026
73.50
2026-07-24: 2 · observed 2026-10-20T20:45:07.2222655Z · period 2026-07-24–2026-07-242026-07-27: 1 · observed 2026-10-20T20:45:07.2222655Z · period 2026-07-27–2026-07-272026-08-01: 1 · observed 2026-10-20T20:45:07.2222655Z · period 2026-08-01–2026-08-012026-08-02: 2 · observed 2026-10-20T20:45:07.2222655Z · period 2026-08-02–2026-08-022026-08-03: 2 · observed 2026-10-20T20:45:07.2222655Z · period 2026-08-03–2026-08-032026-08-05: 1 · observed 2026-10-20T20:45:07.2222655Z · period 2026-08-05–2026-08-052026-08-09: 3 · observed 2026-10-20T20:45:07.2222655Z · period 2026-08-09–2026-08-092026-08-10: 2 · observed 2026-10-20T20:45:07.2222655Z · period 2026-08-10–2026-08-102026-08-13: 2 · observed 2026-10-20T20:45:07.2222655Z · period 2026-08-13–2026-08-132026-08-14: 4 · observed 2026-10-20T20:45:07.2222655Z · period 2026-08-14–2026-08-142026-08-17: 2 · observed 2026-10-20T20:45:07.2222655Z · period 2026-08-17–2026-08-172026-08-20: 1 · observed 2026-10-20T20:45:07.2222655Z · period 2026-08-20–2026-08-202026-08-23: 3 · observed 2026-10-20T20:45:07.2222655Z · period 2026-08-23–2026-08-232026-08-24: 7 · observed 2026-10-20T20:45:07.2222655Z · period 2026-08-24–2026-08-242026-08-29: 2 · observed 2026-10-20T20:45:07.2222655Z · period 2026-08-29–2026-08-292026-08-31: 2 · observed 2026-10-20T20:45:07.2222655Z · period 2026-08-31–2026-08-312026-09-01: 1 · observed 2026-10-20T20:45:07.2222655Z · period 2026-09-01–2026-09-012026-09-02: 2 · observed 2026-10-20T20:45:07.2222655Z · period 2026-09-02–2026-09-022026-09-07: 3 · observed 2026-10-20T20:45:07.2222655Z · period 2026-09-07–2026-09-072026-09-08: 2 · observed 2026-10-20T20:45:07.2222655Z · period 2026-09-08–2026-09-082026-09-11: 2 · observed 2026-10-20T20:45:07.2222655Z · period 2026-09-11–2026-09-112026-09-12: 3 · observed 2026-10-20T20:45:07.2222655Z · period 2026-09-12–2026-09-122026-09-16: 1 · observed 2026-10-20T20:45:07.2222655Z · period 2026-09-16–2026-09-162026-09-19: 2 · observed 2026-10-20T20:45:07.2222655Z · period 2026-09-19–2026-09-192026-09-21: 1 · observed 2026-10-20T20:45:07.2222655Z · period 2026-09-21–2026-09-212026-09-24: 1 · observed 2026-10-20T20:45:07.2222655Z · period 2026-09-24–2026-09-242026-09-26: 2 · observed 2026-10-20T20:45:07.2222655Z · period 2026-09-26–2026-09-262026-09-27: 2 · observed 2026-10-20T20:45:07.2222655Z · period 2026-09-27–2026-09-272026-09-28: 1 · observed 2026-10-20T20:45:07.2222655Z · period 2026-09-28–2026-09-282026-09-29: 1 · observed 2026-10-20T20:45:07.2222655Z · period 2026-09-29–2026-09-292026-09-30: 1 · observed 2026-10-20T20:45:07.2222655Z · period 2026-09-30–2026-09-302026-10-02: 1 · observed 2026-10-20T20:45:07.2222655Z · period 2026-10-02–2026-10-022026-10-06: 2 · observed 2026-10-20T20:45:07.2222655Z · period 2026-10-06–2026-10-062026-10-07: 1 · observed 2026-10-20T20:45:07.2222655Z · period 2026-10-07–2026-10-072026-10-08: 3 · observed 2026-10-20T20:45:07.2222655Z · period 2026-10-08–2026-10-082026-10-09: 4 · observed 2026-10-20T20:45:07.2222655Z · period 2026-10-09–2026-10-092026-10-10: 1 · observed 2026-10-20T20:45:07.2222655Z · period 2026-10-10–2026-10-102026-10-13: 1 · observed 2026-10-20T20:45:07.2222655Z · period 2026-10-13–2026-10-132026-10-16: 1 · observed 2026-10-20T20:45:07.2222655Z · period 2026-10-16–2026-10-162026-10-19: 2 · observed 2026-10-20T20:45:07.2222655Z · period 2026-10-19–2026-10-19
24 Jul19 Oct

pypistats · 40 observations shown. Missing days are unknown. Source category: overall: without mirrors.

View observed values
Date / source periodValueObserved at
2026-10-19 – 2026-10-1922026-10-20T20:45:07.2222655Z
2026-10-16 – 2026-10-1612026-10-20T20:45:07.2222655Z
2026-10-13 – 2026-10-1312026-10-20T20:45:07.2222655Z
2026-10-10 – 2026-10-1012026-10-20T20:45:07.2222655Z
2026-10-09 – 2026-10-0942026-10-20T20:45:07.2222655Z
2026-10-08 – 2026-10-0832026-10-20T20:45:07.2222655Z
2026-10-07 – 2026-10-0712026-10-20T20:45:07.2222655Z
2026-10-06 – 2026-10-0622026-10-20T20:45:07.2222655Z
2026-10-02 – 2026-10-0212026-10-20T20:45:07.2222655Z
2026-09-30 – 2026-09-3012026-10-20T20:45:07.2222655Z
2026-09-29 – 2026-09-2912026-10-20T20:45:07.2222655Z
2026-09-28 – 2026-09-2812026-10-20T20:45:07.2222655Z
2026-09-27 – 2026-09-2722026-10-20T20:45:07.2222655Z
2026-09-26 – 2026-09-2622026-10-20T20:45:07.2222655Z
2026-09-24 – 2026-09-2412026-10-20T20:45:07.2222655Z
2026-09-21 – 2026-09-2112026-10-20T20:45:07.2222655Z
2026-09-19 – 2026-09-1922026-10-20T20:45:07.2222655Z
2026-09-16 – 2026-09-1612026-10-20T20:45:07.2222655Z
2026-09-12 – 2026-09-1232026-10-20T20:45:07.2222655Z
2026-09-11 – 2026-09-1122026-10-20T20:45:07.2222655Z
2026-09-08 – 2026-09-0822026-10-20T20:45:07.2222655Z
2026-09-07 – 2026-09-0732026-10-20T20:45:07.2222655Z
2026-09-02 – 2026-09-0222026-10-20T20:45:07.2222655Z
2026-09-01 – 2026-09-0112026-10-20T20:45:07.2222655Z
2026-08-31 – 2026-08-3122026-10-20T20:45:07.2222655Z
2026-08-29 – 2026-08-2922026-10-20T20:45:07.2222655Z
2026-08-24 – 2026-08-2472026-10-20T20:45:07.2222655Z
2026-08-23 – 2026-08-2332026-10-20T20:45:07.2222655Z
2026-08-20 – 2026-08-2012026-10-20T20:45:07.2222655Z
2026-08-17 – 2026-08-1722026-10-20T20:45:07.2222655Z
2026-08-14 – 2026-08-1442026-10-20T20:45:07.2222655Z
2026-08-13 – 2026-08-1322026-10-20T20:45:07.2222655Z
2026-08-10 – 2026-08-1022026-10-20T20:45:07.2222655Z
2026-08-09 – 2026-08-0932026-10-20T20:45:07.2222655Z
2026-08-05 – 2026-08-0512026-10-20T20:45:07.2222655Z
2026-08-03 – 2026-08-0322026-10-20T20:45:07.2222655Z
2026-08-02 – 2026-08-0222026-10-20T20:45:07.2222655Z
2026-08-01 – 2026-08-0112026-10-20T20:45:07.2222655Z
2026-07-27 – 2026-07-2712026-10-20T20:45:07.2222655Z
2026-07-24 – 2026-07-2422026-10-20T20:45:07.2222655Z

Versions 1

Collected releases
VersionPublishedDirect dependenciesOpen version
0.3.028 May 20264

Package advisories

0
No matching advisories collected

This describes our collected data; it is not a security assessment.

Repository

PENDING
gaburn/ado-dashboard

Shared repository data · GitHub

License detected in repository
Not collected

Metadata history

Meaningful changes
Current collected state Current

Observed since 20 Oct, 19:45 UTC

No superseded metadata states collected. Unchanged observations do not create new revisions.

Record identity

package:2383f068e26c0e3cd4dd662e0f352bdf3fc185382a805b1fe0cec8612a343bab