Engineering health metrics that tell the truth.
Five outcome-oriented KPIs. One balanced view of delivery performance.
Quick Start • KPIs • Docs • API • Contributing • Discussions
Most engineering metrics tools measure activity — commits, PRs, lines of code. DevPulse measures outcomes — how fast you ship, how stable your systems are, and whether your architecture is holding up.
- No vanity metrics. Five KPIs chosen because they drive real improvement.
- Balanced by design. Speed, quality, and sustainability measured together — gaming one hurts the others.
- Connects to your stack. GitHub, Jira, PagerDuty, OpsGenie, Jenkins, and more.
- Self-hosted & private. Your data stays on your infrastructure. Always.
- Open source. MIT licensed. Fork it, extend it, make it yours.
DevPulse tracks five KPIs across four health tiers: Elite, Strong, Moderate, and Alert.
| KPI | What it Measures | Unit | Elite | Alert |
|---|---|---|---|---|
| Cycle Time | Median first-commit to production deploy | days | < 2d | > 14d |
| Defect Escape Rate | Defects discovered post-deployment | % | < 5% | > 25% |
| Architecture Drift | Unresolved violations / total rules | % | < 2% | > 15% |
| MTTRC | Incident detection to confirmed root cause | hours | < 1h | > 8h |
| Rework | PRs touching files changed in last 21 days | % | < 10% | > 30% |
Each KPI feeds into a composite Health Score (0–100) with trend tracking and shift detection.
git clone https://github.com/scalefirstai/DevPulse.git
cd DevPulse
docker-compose upOpen http://localhost:3000 — demo data loads automatically.
# Prerequisites: Node.js 20+, pnpm 9+
pnpm install
pnpm build
pnpm test
# Start API server (port 4000)
pnpm --filter @devpulse/server dev
# Start dashboard (port 5173)
pnpm --filter @devpulse/dashboard devDevPulse
├── packages/
│ ├── core/ Pure TypeScript — KPI types, calculation engine, health scoring
│ ├── connectors/ Data integrations — GitHub, Jira, PagerDuty, OpsGenie, Jenkins
│ ├── server/ Express API — PostgreSQL, Redis, BullMQ job processing
│ └── dashboard/ React SPA — Recharts, TailwindCSS, dark-first design
│
├── deploy/
│ ├── helm/ Kubernetes Helm charts for production
│ └── nginx.conf Dashboard reverse proxy config
│
├── docker-compose.yml Full local stack (Postgres + Redis + API + Dashboard)
└── docs/ Comprehensive documentation
┌─────────────┐ ┌──────────────┐ ┌──────────────┐ ┌───────────┐
│ GitHub │────▶│ │────▶│ │────▶│ │
│ Jira │ │ Connectors │ │ Calculation │ │ Dashboard │
│ PagerDuty │ │ (pull) │ │ Engine │ │ (React) │
│ OpsGenie │────▶│ │────▶│ │────▶│ │
│ Jenkins │ └──────────────┘ └──────────────┘ └───────────┘
└─────────────┘ │ │
┌─────▼─────────────────────▼─────┐
│ PostgreSQL + Redis │
│ BullMQ Job Queue │
└─────────────────────────────────┘
DevPulse ships with connectors for the most popular engineering tools:
| Connector | Data Collected | KPIs Fed |
|---|---|---|
| GitHub | PRs, commits, file changes | Cycle Time, Rework |
| Jira | Issues, defects, lifecycle | Defect Escape Rate |
| PagerDuty | Incidents, timelines | MTTRC |
| OpsGenie | Incidents, alerts | MTTRC |
| GitHub Actions | Builds, deployments | Cycle Time |
| Jenkins | Build pipelines | Cycle Time |
| ArchUnit | Architecture rules | Architecture Drift |
Need a connector that doesn't exist yet? Open a feature request or build one — the base class handles retry, rate limiting, and pagination for you.
-
Copy the example config:
cp devpulse.config.example.yaml devpulse.config.yaml
-
Add your credentials:
connectors: github: token: ${GITHUB_TOKEN} repos: [org/repo-1, org/repo-2] jira: host: https://your-org.atlassian.net email: ${JIRA_EMAIL} token: ${JIRA_TOKEN}
-
Trigger collection:
curl -X POST http://localhost:4000/api/collect/trigger
See the full Connector Guide for all options.
| Guide | Description |
|---|---|
| Getting Started | Installation, configuration, first run |
| KPI Definitions | Detailed methodology for each metric |
| API Reference | REST endpoints, request/response formats |
| Connector Guide | Setting up and building data connectors |
| Architecture | System design and package structure |
| Deployment | Docker, Kubernetes, Helm, and production setup |
| Security | Security model, headers, rate limiting |
We welcome contributions of all kinds. Whether it's a bug fix, new connector, documentation improvement, or feature idea — every contribution matters.
# Fork & clone
git clone https://github.com/<your-username>/DevPulse.git
cd DevPulse
# Install & verify
pnpm install && pnpm build && pnpm test
# Create a branch
git checkout -b feat/my-change
# Make your changes, then open a PRSee CONTRIBUTING.md for the full guide, including coding standards and PR process.
Looking for a place to start? Check out issues labeled good first issue — these are scoped, well-described tasks perfect for newcomers.
- GitHub Discussions — Questions, ideas, show & tell
- Issue Tracker — Bug reports and feature requests
- KPI Methodology RFCs — How we measure matters. Help shape the methodology behind each KPI.
- Code of Conduct — Our community standards
If DevPulse helps your team, consider giving it a star — it helps others discover the project.
MIT — Copyright (c) 2026 Selwyn Theo
Built with conviction that what you measure shapes what you build.