A real-time CI/CD dashboard for monitoring GitHub Actions pipelines across multiple repositories — including GitHub Enterprise (GHE) instances.
Built with React, TypeScript, Vite, and Tailwind CSS.
- Multi-repo monitoring — Add any GitHub or GHE repository via URL; no hardcoded configuration
- Pipeline overview — Workflow runs with health bars, durations, branch badges, and conclusion status
- Interactive summary cards — Click any top-level stat card (Repositories, Pipelines, Passing, Failing, In Progress, Annotations, Pass Rate) to reveal detailed breakdowns: per-repo rates, per-workflow stats, failure timelines, annotation frequency analysis, and more
- Annotations panel — Errors, warnings, and notices from CI runs with level indicators and filtering
- Failures panel — Failed jobs with branch/workflow filters; copy-to-clipboard prompts for AI-assisted fixing
- Pull requests & issues — Open PRs and issues across all tracked repos
- Security panel — Dependabot alerts and code scanning findings
- Quality scores — Per-repo quality metrics computed from open issues, PRs, and security alerts
- Branch filtering — Filter by branch (main, staging, etc.) in failures and annotations panels
- Auto-refresh — Polls every 60 seconds
- Dark / light theme — Toggle in the header
- OAuth & PAT authentication — GitHub OAuth device flow or personal access tokens for both GitHub and GHE
- Node.js 18+
- npm
git clone https://github.com/chdinh/mission-control.git
cd mission-control
npm install
npm run devOr use the launcher script:
./run.shThe dashboard opens at http://localhost:5173 (or the port set in .env).
Click the gear icon in the header and paste any GitHub or GHE repository URL:
https://github.com/owner/repo
https://github.example.com/org/repo
owner/repo (defaults to github.com)
Repositories are persisted in localStorage.
Tokens are needed for private repos and to avoid API rate limits.
Option A — Personal Access Token (PAT):
Open Settings → Authentication → enter a PAT with repo and read:org scopes.
Option B — OAuth App (dev server only):
- Register an OAuth App on your GitHub / GHE instance
- Copy
.env.exampleto.envand fill in credentials:
GITHUB_CLIENT_ID=...
GITHUB_CLIENT_SECRET=...
# For GitHub Enterprise:
GHE_URL=https://github.example.com
GHE_CLIENT_ID=...
GHE_CLIENT_SECRET=...- Restart the dev server — the "Sign in" button becomes available.
To connect a GHE instance:
- Set
GHE_URLin your.envfile (e.g.https://github.example.com) - The Vite dev server proxies GHE API requests automatically
- Add GHE repos using their full URL; the dashboard auto-detects the host type
| Layer | Technology |
|---|---|
| UI | React 18, TypeScript |
| Styling | Tailwind CSS 4 |
| Build | Vite |
| API | GitHub REST API (proxied via Vite dev server) |
| State | React hooks + localStorage |
src/
api/ GitHub/GHE API clients and OAuth flow
components/ Dashboard panels and UI components
config/ Repository configuration and hooks
hooks/ Custom hooks (pipelines, extras, theme, animation)
types.ts TypeScript type definitions