The Problem
Teams using multiple CI/CD platforms—GitHub Actions, GitLab CI, Buildkite, Jenkins, Tekton, ArgoCD—end up bouncing between dashboards to check pipeline status. Pipedash consolidates those into a single view, polling each provider and surfacing run history, parameters, and status changes in one place.
What This Does
Pipedash is a Tauri desktop app (Rust backend, React/TypeScript frontend) with a web deployment option. It polls configured providers, stores pipeline data in SQLite or PostgreSQL, and lets you trigger, re-run, or cancel workflows with provider-specific parameters. Tokens are encrypted via system keyring or AES-256-GCM with Argon2id-derived keys.
The repo is a workspace of crates: pipedash-core (domain logic, services, repositories, migrations), pipedash-desktop (Tauri entry point), pipedash-plugin-api (plugin trait), and provider plugins (pipedash-plugin-github, pipedash-plugin-argocd, etc.). The src/ directory holds the React frontend.
How It Is Wired
Execution starts in crates/pipedash-desktop/src/main.rs, which boots the Tauri app and registers commands from crates/pipedash-desktop/src/commands.rs. That file is 1,677 lines—the largest in the repo—and routes all frontend-invoked operations into pipedash-core services like pipeline_service.rs and metrics_service.rs. These services write to repositories in crates/pipedash-core/src/infrastructure/database/, which own the SQLite/PostgreSQL effects.
The frontend's src/types/index.ts is the hub: 48 modules import it, making it the highest-blast-radius file. It sits in a circular dependency with src/types/components.ts, so changes there ripple unpredictably. src/services/index.ts (31 importers) and src/hooks/useIsMobile.ts (15 importers) are also high-churn hubs.
The module graph shows 130 internal modules with 346 import edges and 2 modules in a cycle. Deep nesting (max depth 8) appears in 49 files, notably src/components/layout/Navbar.tsx and src/components/pipeline/WorkflowLogsModal.tsx, making control flow hard to follow.
How To Use It
The README documents mise as the task runner. For Docker:
# SQLite backend
mise run examples:sqlite:up
mise run examples:sqlite:down
# PostgreSQL backend
mise run examples:postgres:up
For the desktop app, build via cargo build from the workspace root, or download from the releases page. Web deployments require PIPEDASH_VAULT_PASSWORD to enable API authentication; requests must include Authorization: Bearer <vault_password>.
Real-World Use
A team running GitHub Actions for open-source repos and Jenkins for legacy services deploys Pipedash via Docker with PostgreSQL. They configure two GitHub instances (separate orgs) and one Jenkins instance, set per-provider refresh intervals, and get a single dashboard. When a GitHub workflow fails, they re-run it with the same parameters from Pipedash without opening GitHub's UI.
Code Health & Issues
Static analysis found 79 issues (31 high, 48 medium). Key findings:
- High - Import cycle -
src/types/index.tsandsrc/types/components.tsparticipate in a circular dependency; extract shared types or defer imports. - High - Hub modules -
src/types/index.ts(48 dependents),src/services/index.ts(31),src/hooks/useIsMobile.ts(15); high churn blast radius. - High - Deep nesting - 49 files with max indentation depth 8; flatten with early returns.
- High - Duplicated code - 564 repeated 6-line blocks across 106 files, concentrated in
crates/pipedash-core/src/application/services/. - High - Oversized files -
metrics_repository.rs,repository.rs,commands.rsexceed 1,600 lines each.
SDLC observations:
- High - No test suite - 272 source files, zero test files; any change ships without regression signal.
- High - Unpinned GitHub Actions -
.github/workflowsuses@v3tags; pin to commit SHAs to prevent supply-chain attacks. - High -
continue-on-erroron a correctness step -.github/workflows/release.ymlline 171; a failing test reports green. - Medium - Mutable container base -
docker/Dockerfileusesoven/bun:latestandcargo-chef:latest; pin by digest. - Medium - No dependency scan in CI - add
dependency-review-actionorosv-scanner. - Medium - No non-root USER in
docker/Dockerfile. - Low - No job timeouts in workflows.
The Bottom Line
Pipedash is a functional multi-provider CI/CD dashboard with a solid plugin architecture and real encryption work. The Rust core is substantial but untested, and the frontend has hub-and-cycle problems that will make changes costly. Worth adopting if you need a self-hosted aggregator and can invest in a test suite before relying on it.