Software Factories on AWS

Self-hosted platform for standing up and running software factories on AWS: complete DevSecOps environments with secure delivery pipelines, supply-chain controls, compliance evidence and multi-tenant governance — in minutes, not months.

View on GitHub · Documentation · Plugin Catalog · API Reference

Overview

Pipeline Builder is a self-hosted platform for standing up and running software factories on AWS. An organization gets a complete DevSecOps environment — secure delivery pipelines, supply-chain controls, compliance evidence, golden-path templates and the governance around them — in minutes rather than months, and can run many of them side by side.

The pipelines are one part of that environment, not the whole product. Every pipeline arrives with its controls already attached: signed and scanned plugins, SBOMs and vulnerability gates, per-organization secret encryption, policy-as-code compliance, and a tamper-evident audit trail. Developers reach it from the dashboard, the CLI, the REST API, a CDK construct, or a single AI prompt; platform and security teams set the rules that every one of those paths obeys.

Every pipeline is synthesized as native AWS CodePipeline + CodeBuild in your own AWS account. There is no proprietary runner and no lock-in: if you remove Pipeline Builder, your pipelines keep running.

It is multi-tenant from the ground up, which is what makes running many factories practical rather than theoretical. Every pipeline, plugin, secret, quota, log line, and bill belongs to an organization, and organizations can nest teams, bring their own SSO, and see each other only through deliberate, audited sharing.

Highlights

At a Glance

119 5 14 18 4 4
Official plugins in 10 categories interfaces to build pipelines AI models across 5 providers compliance operators plugin trust tiers deploy targets, from laptop to EKS

Who it is for

If you are… What you have on day one
A platform team serving many product teams One installation that gives every team its own isolated organization, quotas and golden paths — instead of a CI server per team to maintain
A security or compliance lead Controls that refuse non-compliant work at creation, a supply chain you can verify, and a tamper-evident audit trail you can hand to an auditor
Running a regulated or government programme A self-hosted software factory in your own AWS account, optionally with no public surface, where evidence is a by-product of normal work rather than a quarterly scramble
Replacing a SaaS CI/CD contract Native AWS pipelines that keep running if you remove the platform — you pay AWS for what executes, not a vendor for build minutes

Why Pipeline Builder

Challenge How Pipeline Builder solves it
Standing up a secure delivery environment takes months A working software factory — pipelines, controls, compliance, identity and audit — in minutes, from a dashboard, CLI, API, CDK, or AI prompt
Security review happens after the build is written Compliance rules block non-compliant pipelines and plugins at creation, with exemptions and a full audit trail
Build steps are copy-pasted between teams Versioned, containerized plugins shared through a governed ecosystem with installs, version policies, and reviews
Third-party build steps are a supply-chain risk Signed, SBOM-attested, digest-pinned images; trust tiers baked into signatures; two-person approval for every public listing
Teams share infrastructure without isolation Everything is scoped per organization, with RBAC, quotas, per-org secrets, per-org log tenants, and row-level security
Proving compliance means assembling evidence by hand A hash-chained, tamper-evident audit trail, per-org log isolation, and measured delivery metrics — collected as work happens
SaaS CI/CD creates lock-in Pipelines deploy as native AWS resources in your account and keep running without the platform
No visibility into delivery health EventBridge-fed analytics, DORA metrics, maturity scorecards, and plugin health scores

Capabilities

Build pipelines five ways

Interface Best for What you do
Dashboard Application developers Configure sources and stages visually, then deploy
AI prompt New repositories Paste a Git URL; the repo is analyzed and stages and plugins are generated for you
CLI Scripting and CI pipeline-manager pipeline create from any shell
REST API Platform automation Full CRUD plus AI generation endpoints
CDK construct Infrastructure-as-code teams Deploy the PipelineBuilder construct from any CDK app

Golden-path templates. Platform teams publish governed starters with declared inputs. A developer picks one, sets the project and target repository, and gets a pipeline that still passes compliance and quota checks. Templates can be saved from an existing pipeline, authored from scratch, or imported.

Synth-time templating. A small {{ .. }} language for pipeline configs and plugin specs is resolved once, at synthesis, with no runtime evaluation and no shell-out. It supports path lookups, | default: fallbacks, type coercion, self-references with cycle detection, and plugin contracts (requiredMetadata, metadataTypes) that are validated at upload. See Template Syntax.

AI that proposes, you decide

Provider Models
Anthropic Claude Sonnet 5, Claude Opus 5, Claude Haiku 4.5
OpenAI GPT-5.6 Sol, GPT-5.6 Terra, GPT-5.6 Luna
Google Gemini 3.7 Flash, Gemini 3.1 Pro
xAI Grok 4.6, Grok 4.5, Grok 4.3
Amazon Bedrock Claude Sonnet 4.5, Amazon Nova Pro, Amazon Nova Lite

Plugin ecosystem

A plugin runs inside CodeBuild with your pipeline’s secrets and IAM role, so a shared plugin is a supply-chain dependency. The ecosystem treats it as one. Every public plugin is built by the platform, gated, approved by two people, signed with its trust tier, pinned by digest, and watched for new CVEs after it ships.

flowchart LR
  O["Org publisher"] --> T["Tenant build<br/>rootless · SBOM · signed"]
  A["Anonymous submitter<br/>verified email · proof of work"] --> Q["Quarantine<br/>isolated build · no credentials"]
  T --> G["Automated gates<br/>lint · license · CVE · contract"]
  Q --> H["Stricter gates<br/>+ heuristics · offline smoke test · look-alike names"]
  G --> M{"Two-person<br/>approval"}
  H --> M
  M -->|approve| P["public/&lt;publisher&gt;/&lt;name&gt;<br/>re-signed · immutable"]
  P --> I["Org installs<br/>version + trust policy"]
  I --> R["Pipeline pulls<br/>by digest"]
  S["Nightly CVE rescan"] -.->|advisory · yank| I

Discover

Trust tiers and governance

Plugin quarantine for anonymous submissions (optional, off by default)

Supply chain

Consume on your terms

Respond fast

Quality signals

Author with confidence

Category Count Examples
Language 11 Java, Python, Node.js, Go, Rust, .NET, C++, PHP, Ruby
Security 34 Snyk, SonarCloud, Trivy, Veracode, Semgrep, Checkmarx, Fortify
Quality 17 ESLint, Prettier, Checkstyle, Clippy, Ruff, ShellCheck
Testing 14 Jest, Pytest, Cypress, Playwright, k6, Postman, Artillery
Artifact & Registry 16 Docker, ECR, GHCR, npm, PyPI, Maven, NuGet, Cargo
Deploy 13 Terraform, CloudFormation, Kubernetes, Helm, Pulumi, ECS, Lambda, CDK
Infrastructure 5 CDK synth, manual approval, S3 cache, shell
Monitoring 3 Datadog, New Relic, Sentry
Notification 5 Slack, Teams, PagerDuty, email, GitHub status
AI 1 Dockerfile generation (multi-provider)

See Installing Plugins, Publishing Plugins, and the Plugin Catalog.

Policy-as-code compliance

Validate plugins and pipelines before they exist, not in a quarterly audit.

See Compliance.

Organizations, access, and identity

See Roles & Permissions and Authentication & SSO.

Observe and improve

Built for production


Architecture

flowchart TB
    subgraph Interfaces
        DASH["Dashboard"] & CLI["CLI"] & API["REST API"] & CDK["CDK Construct"] & DIR["Public Plugin Directory"]
    end

    subgraph Platform["Platform Service"]
        AUTH["Identity · Orgs · RBAC · Audit"]
    end

    subgraph Backend["Backend Services"]
        PIPELINE["Pipeline"] & PLUGIN["Plugin + Ecosystem"]
        COMPLIANCE["Compliance"]
        REPORTING["Reporting"]
        REGISTRY["Image Registry"]
        ASK["Ask (AI)"]
        SUPPORT["Quota · Billing · Messages"]
    end

    CORE["pipeline-core<br/>CDK Synth"]
    AWS["Your AWS Account"]

    DASH & CLI & API -->|token| Platform
    DIR --> PLUGIN
    CDK --> CORE
    Platform --> PIPELINE & PLUGIN & COMPLIANCE & REPORTING & ASK & SUPPORT
    PLUGIN & PIPELINE -->|validate| COMPLIANCE
    PLUGIN -->|build · sign · publish| REGISTRY
    PIPELINE --> CORE
    CORE --> AWS
    AWS -->|pull by digest| REGISTRY
    AWS -->|EventBridge| REPORTING

    style Platform fill:#4A90D9,color:#fff
    style CORE fill:#F5A623,color:#fff
    style AWS fill:#2ECC71,color:#fff
    style COMPLIANCE fill:#E74C3C,color:#fff
    style REPORTING fill:#9B59B6,color:#fff
Service Purpose
Platform Identity (passwords, OAuth, SSO, passkeys, TOTP, SCIM), organizations and teams, RBAC, audit trail, log access
Pipeline Pipeline CRUD, AI generation, templates, CDK synthesis
Plugin Plugin builds (rootless BuildKit), the plugin ecosystem (publishers, listings, installs, reviews, advisories, public directory), AI plugin generation
Image Registry Plugin images with token auth, signing and SBOM attestation, per-org storage quotas, garbage collection
Compliance Per-org rule enforcement, rule catalog and subscriptions, scans, exemptions
Reporting Execution analytics, DORA metrics, incidents, via EventBridge
Ask Grounded in-app AI assistant (read and propose only)
Quota / Billing / Message Resource limits pooled across teams, subscriptions and bundles, announcements, conversations, and attachments

For end-to-end flows (plugin build, publish, pipeline create, synth, execution), see Architecture Flow. For the business case, see Organization Benefits.


Quick Start

Recommended: install with the CLI. pipeline-manager infra provision picks the target and checks prerequisites. It can fetch missing single-binary tools (yq, kubectl, minikube), generate the local .env with secrets, and build the exact, validated command to run. With an AI key set, it can also parse a natural-language goal and diagnose failures.

npm install -g @pipeline-builder/pipeline-manager
pipeline-manager infra provision --target docker              # show the plan, then ask to confirm
pipeline-manager infra provision --target docker --yes        # non-interactive (for CI)
pipeline-manager infra provision --target docker --json       # print the plan as JSON, run nothing
# or describe the goal: pipeline-manager infra provision --prompt "deploy to EKS in us-east-1 with email"

--init <mode> controls post-deploy initialization. The default, auto, has the deploy initialize the platform itself: on EC2 at first boot, on EKS in setup.sh’s final phase, and on local/minikube through infra provision. Use --init manual to run init-platform yourself (for example, to set real admin credentials) or --init skip to do nothing. See the AWS deployment guide.

Prefer to run it directly? Every target ships a bin/setup.sh:

git clone https://github.com/mwashburn160/pipeline-builder.git && cd pipeline-builder

(cd deploy/local/docker && ./bin/setup.sh)     # 1. pull images and start the stack
./deploy/bin/init-platform.sh docker           # 2. register the admin and load plugins

Minikube instead of Docker? Run (cd deploy/local/minikube && ./bin/setup.sh), then ./deploy/bin/init-platform.sh minikube. On an ~8-core laptop use LEAN=1, because the full stack plus the Istio mesh won’t fit in 8 vCPU. LEAN drops the optional observability and admin services and runs single replicas. For more disk, use DISK_SIZE=60g (default 30g; applies only when the cluster is created). For a clean restart, run minikube delete --profile=pipeline-builder.

Then open https://localhost:8443 and sign in as the default local admin, admin@internal / Pipeline-Builder-Dev-2026!. Change this password immediately on any environment reachable beyond your laptop.

The first load uses a self-signed certificate. If the page is blank with ERR_CERT_AUTHORITY_INVALID errors for JS chunks, trust deploy/local/docker/certs/nginx-tls.crt (see Troubleshooting).

Prerequisites: Docker only. The local stack pulls prebuilt public images, so no registry login is needed. Node.js >= 24.21 and pnpm >= 10.33 are needed only to build from source or use the CLI.


Deployment Options

Target Best for Cost
Local (Docker Compose) Development Free
Minikube Local Kubernetes Free
EC2 Dev / staging ~$610–680/mo at the default size (detail)
EKS (Auto Mode) Production ~$850–950/mo running 24/7 (measured)

Development

Building from source (not needed just to run the platform):

pnpm install          # Node.js >= 24.21, pnpm >= 10.33
pnpm build            # compile, test, and lint every package
Path Contains
packages/ Shared libraries: api-core, api-server, ai-core, pipeline-data, pipeline-core, pipeline-events, pipeline-manager (the CLI)
api/ Backend services: pipeline, plugin, image-registry, compliance, reporting, ask, quota, billing, message
platform/ Identity, organizations, users, audit, and the observability proxy
frontend/ Next.js dashboard and public plugin directory
deploy/ Per-target install (local/docker, local/minikube, aws/ec2, aws/eks) and the plugin catalog (deploy/plugins)
docs/ Documentation

This repo is projen-managed. package.json, tsconfig.json, and the CI workflows are generated. Edit .projenrc.ts / projenrc/ and re-run pnpm dlx projen, or your change is overwritten on the next synth.


Documentation

The full docs hub is docs/, grouped by task. For a term, see the Content Index (A–Z).

Start here

Document Description
Onboarding a New Organization First admin: login → org → members → access key → store-token → setup-events → first pipeline
Pipeline Manager CLI Provision the platform, build and deploy pipelines, author plugins, run audits
AWS Deployment Deploy to EC2 or EKS: modes, post-deploy setup, reporting, teardown

Build

Document Description
Developer Guide Five ways to create a pipeline, plus cut-and-paste patterns for 7 languages
CDK Usage PipelineBuilder construct: sources, stages, VPC, IAM, secrets
Template Syntax {{ .. }} synth-time interpolation and golden-path templates
Metadata Keys Typed CodePipeline, CodeBuild, networking, and IAM configuration keys
Plugin Catalog 119 Official plugins across 10 categories
Installing Plugins Trust tiers, installs, version policies, consumption policy, reviews
Publishing Plugins Publisher profiles, publish requests, catalog metadata, pausing
Developer Portal Catalog ownership, My Services, golden-path templates, maturity scorecards
Samples Ready-to-load pipeline templates for 7 languages, plus CDK patterns

Govern

Document Description
Organization Benefits What orgs gain from standardizing on the platform
Roles & Permissions Permission catalog, built-in roles, assurance tiers, session invalidation, impersonation
Permission Contract Hand-maintained route-to-permission table; a diff here is a permission change, reviewed as one
Compliance Per-org rule engine: validation, enforcement, add-ons, audit trail
Authentication & SSO Passwords, OAuth, OIDC and SAML SSO, SCIM, passkeys, TOTP, device sign-in
Audit Events Hash-chained trail, /audit/verify, action catalog
Logs Per-org application logs: search, masking, export
Billing Providers Stripe and AWS Marketplace setup
Billing Add-on Bundles Stackable add-ons that raise pooled caps and unlock features
Billing Discounts Coupon codes and usage credits

Operate

Document Description
Deploy Operations Preflight, secret rotation, backups and DR, teardown
Service Mesh Istio ambient: STRICT mTLS and identity-based authorization
Environment Variables Every configuration variable, by subsystem
Notifications Email, Slack, webhooks and the in-app inbox — what an operator enables, what an org configures
DORA Metrics Deployment frequency, change failure rate, MTTR, measured lead time
Stakeholder Reports Scheduled snapshot reports held for human review; authoring and sharing are separate permissions
Incident Webhook Connect PagerDuty, Datadog, or Alertmanager for change failure rate and MTTR

Reference

Document Description
API Reference REST endpoints, query parameters, curl examples
Architecture Flow End-to-end flow diagrams (request → build → deploy)
Error Handling Error-to-HTTP convention
Testing Conventions Module-mocking rules, authorization gates that run for real, coverage ratchet, type-checked tests

License

Apache License 2.0. See LICENSE.