Open Source compliance CLI
for GitLab CI/CD & GitHub Actions
Plumber is an open-source CLI and platform that audits GitLab CI/CD pipelines and GitHub Actions workflows for security and compliance. See how it works
How it works
Plumber scans your GitLab CI/CD configuration GitHub Actions workflows
Analyze your pipelines for security and compliance issues with automated checks. Analyze your workflows for security and compliance issues with automated checks.
include:- component: gitlab.com/components/secret-detection/secret-detection@~main mutable- component: gitlab.com/components/sast/sast@0.0.1 outdated- component: random-gitlab.com/components/dast@1.3.4 untrustedinstall-deps:image: node:latest mutablevariables:DAST_DISABLED: "false" overriddenallow_failure: truerules:- when: never weakenedon:## External-contributor trigger- pull_request_target dangerouspermissions: write-all write-alljobs:build:env:ACTIONS_STEP_DEBUG: "true" debugsteps:- uses: tj-actions/changed-files@main mutable- uses: archived-org/setup@v1 archived- run: echo "${{ github.event.title }}" injectionYour .gitlab-ci.yml Your GitHub Actions workflow
with compliance issues
Plumber CLI
scans & analyzes
include:## Security scanning- component: gitlab.com/components/secret-detection/secret-detection@2.3.4 pinned- component: gitlab.com/components/sast/sast@3.3.4 updated- component: gitlab.com/components/dast@1.3.4 trustedinstall-deps:image: node:22@sha256:8f3e2a1b9c0d7e6f5a4b3c2d… pinnedallow_failure: false strictrules:- when: always runson:## Safe trigger- pull_request safepermissions:contents: read least-privjobs:build:steps:- uses: actions/checkout@a1b2c3d4e5f6a7b8c9d0… pinned- env: TITLE: ${{ github.event.title }} boundrun: echo "$TITLE" safeCompliant & secure
audit-ready pipeline audit-ready workflow
Each scan applies policy checks across your pipeline. Here is what Plumber controls.
Pipeline composition
Detects hardcoded jobs in the .gitlab-ci.yml and verifies that all required template and component modules are included, up to date and do not follow unauthorized patterns (latest, main, etc.) Detects unpinned and risky steps in .github/workflows/*.yml and verifies that third-party actions are pinned by commit SHA, not archived, and free of known CVEs.
CI/CD container images
Detects container images using mutable tags that can change unexpectedly. Ensures images come from trusted registries only.
Access and authorization
Verifies that critical branches have proper protection settings.
See all controls
Runners, caches, artifacts, and many other checks beyond these three. The documentation lists the full catalog and how each control maps to issue codes.
Open the controls guideQuick Start
Get started in minutes
Set up Plumber in your GitLab CI/CD pipeline or GitHub Actions workflow with just a few simple steps.
Set up Plumber in your repository
Add the Plumber component to your GitLab pipeline (or call the CLI from your GitHub Actions workflow) and configure controls (registries, action pinning, branch protection, etc.).
Run your CI/CD pipeline
Plumber runs as part of your pipeline and scans your CI configuration and job or workflow definitions.
Get your compliance report
View results in the job output or download the report artifact for audit and remediation.
Plumber Radar
See what's actually shipping in open source CI/CD
We point the open-source Plumber CLI at hundreds of popular public GitLab projects, aggregate the results, and publish them live.
- 200+ Projects scanned
- 13 Compliance controls
- A-E Nutri-style grades
- 96%
- 84%
- 71%
- 53%
- 32%
FAQ
Frequently asked questions
What is Plumber?
Is Plumber free and open source?
How do I check my GitLab CI/CD pipelines for compliance?
.gitlab-ci.yml and project settings against a catalog of compliance controls. You get a letter grade and a list of issues with step-by-step remediation guides.Does Plumber support GitHub Actions?
What is CI/CD compliance?
How is Plumber different from a manual pipeline audit?
## Security scanning