Production-ready AWS CodePipelines from TypeScript, CLI, or a single AI prompt. 124+ reusable plugins, per-org compliance enforcement, multi-tenant isolation, and zero vendor lock-in.
Setup, usage, and reference for Pipeline Builder. New here? Start with Getting Started below, then jump into Creating Pipelines.
deploy/plugins/ or create your ownbuild_image (build at upload) or prebuilt (pre-built image.tar bundled in zip).pipeline-builder/{orgId}/{secretName}. Injected at build time, never stored in images.| Document | Description |
|---|---|
| AWS Deployment | EC2 and Fargate deployment, post-deploy setup, drift detection |
| CDK Usage | PipelineBuilder construct, sources, stages, VPC, IAM, secrets |
| Compliance | Per-org rule engine with 18 operators, computed fields, audit trail |
| Audit Events | Cross-service audit event names + payload schemas (registry, etc.) |
| Environment Variables | Configuration reference for all services |
| Samples | Pipeline configs for 7 languages and CDK patterns |
| Document | Description |
|---|---|
| API Reference | REST endpoints for pipelines, plugins, compliance, reporting, AI |
| Metadata Keys | 80 typed CodePipeline, CodeBuild, networking, and IAM configuration keys |
| Template Syntax | `` interpolation for pipeline configs and plugin specs |
| Plugin Catalog | 125 pre-built plugins across 10 categories |
| Org → Team Hierarchy | Sub-organizations (teams) nested one level under a parent org — RBAC, visibility, quota, and compliance inheritance |
The web UI at https://localhost:8443 provides visual pipeline and plugin management. The AI builder analyzes a Git repository (or a natural-language prompt) and generates the right stages and plugins automatically, streaming results over SSE. It works across five providers — Anthropic, OpenAI, Google, xAI, and Amazon Bedrock — and can fall back to a secondary provider if the primary one is unavailable.
Default credentials (created by init-platform.sh local on a fresh install):
| Field | Value |
|---|---|
| Identifier | admin@internal |
| Password | SecurePassword123! |
These defaults are only accepted on DEPLOY_TARGET=local. The minikube/ec2/fargate targets refuse the defaults and require the operator to type real values at the init-platform.sh prompt, so a production-style init won’t silently create an account with this password. Change the password from the dashboard immediately after first login on any environment that’s reachable beyond your laptop.
npm install -g @pipeline-builder/pipeline-manager
export PLATFORM_TOKEN=<jwt-from-login>
pipeline-manager upload-plugin --file ./node-build.zip --organization my-org --name node-build --version 1.0.0
pipeline-manager create-pipeline --file ./pipeline-props.json --project my-app --organization my-org
pipeline-manager deploy --id <pipeline-id> --profile production
# Create a pipeline
curl -X POST https://localhost:8443/api/pipelines \
-H "Authorization: Bearer $TOKEN" -H "x-org-id: $ORG_ID" \
-H "Content-Type: application/json" \
-d '{
"project": "my-app",
"organization": "my-org",
"pipelineName": "my-app-pipeline",
"accessModifier": "private",
"props": {
"project": "my-app",
"organization": "my-org",
"synth": {
"source": { "type": "github", "options": { "repo": "my-org/my-app", "branch": "main" } },
"plugin": { "name": "cdk-synth", "version": "1.0.0" }
}
}
}'
# AI-generate a pipeline
curl -X POST https://localhost:8443/api/pipelines/generate \
-H "Authorization: Bearer $TOKEN" -H "x-org-id: $ORG_ID" \
-H "Content-Type: application/json" \
-d '{"prompt": "Build a Node.js app from GitHub, run tests, and deploy with CDK", "provider": "anthropic", "model": "claude-sonnet-4-20250514"}'
See the API Reference for the full endpoint list.
import { App, Stack } from 'aws-cdk-lib';
import { PipelineBuilder } from '@mwashburn160/pipeline-core';
const app = new App();
const stack = new Stack(app, 'MyPipelineStack', {
env: { account: '123456789012', region: 'us-east-1' },
});
new PipelineBuilder(stack, 'MyPipeline', {
project: 'my-app',
organization: 'my-org',
synth: {
source: {
type: 'github',
options: { repo: 'my-org/my-app', branch: 'main',
connectionArn: 'arn:aws:codestar-connections:us-east-1:...:connection/...' },
},
plugin: { name: 'cdk-synth', version: '1.0.0' },
},
stages: [
{ stageName: 'Test', steps: [{ name: 'unit-tests', plugin: { name: 'jest', version: '1.0.0' } }] },
{ stageName: 'Deploy', steps: [{ name: 'deploy-prod', plugin: { name: 'cdk-deploy', version: '1.0.0' }, env: { ENVIRONMENT: 'production' } }] },
],
});
See Samples for more CDK patterns.
cd deploy/local && ./bin/startup.sh # Start
cd deploy/local && docker compose down # Stop
cd deploy/local && docker compose down -v # Stop + remove volumes
bash deploy/minikube/bin/startup.sh # Start
bash deploy/minikube/bin/shutdown.sh # Stop
kubectl get pods -n pipeline-builder # Check
sudo bash /opt/pipeline/pipeline-builder/deploy/aws/ec2/bin/startup.sh # Start
sudo bash /opt/pipeline/pipeline-builder/deploy/aws/ec2/bin/shutdown.sh # Stop
sudo -u minikube kubectl get pods -n pipeline-builder # Check
cd deploy/aws/fargate
bash bin/deploy.sh --stack-prefix pb --region us-east-1 --domain app.example.com # Deploy
bash bin/teardown.sh --stack-prefix pb --region us-east-1 # Teardown
See AWS Deployment for full instructions and post-deploy setup.
After starting any target, run init-platform.sh to register the admin user and load plugins:
# Local / Minikube — interactive
./deploy/bin/init-platform.sh local
./deploy/bin/init-platform.sh minikube
# EC2 — requires minikube user context
sudo -u minikube PLATFORM_BASE_URL=https://your-ip bash /opt/pipeline/pipeline-builder/deploy/bin/init-platform.sh ec2
# Non-interactive with prebuilt images and controlled parallelism
PLUGIN_BUILD_STRATEGY=prebuilt PARALLEL_JOBS=2 ./deploy/bin/init-platform.sh local
Key env vars: PLUGIN_BUILD_STRATEGY (build_image/prebuilt), PLUGIN_CATEGORY (comma-separated filter), PARALLEL_JOBS (upload concurrency, auto-lowered to 1 for prebuilt), FORCE_REBUILD (rebuild existing image.tar files).
Admin credentials prompted by init-platform.sh:
| Target | Identifier default | Password default | Defaults accepted? |
|---|---|---|---|
local |
admin@internal |
SecurePassword123! |
yes — hit Enter to accept |
minikube / ec2 / fargate |
none | none | no — operator must type real values |
Set PLATFORM_IDENTIFIER and PLATFORM_PASSWORD env vars (or PLATFORM_TOKEN for an existing JWT) to skip the prompts in CI.
Organizations are the isolation boundary — each one is a self-contained workspace. Every resource — pipelines, plugins, compliance rules, quotas, secrets, and billing — is scoped to an organization. Organizations can optionally nest teams (see Teams below). This section covers admin tasks; new evaluators can skip ahead to Architecture.
Register an account, then create one or more organizations. The creator becomes the owner.
From the dashboard — navigate to Team and click Create Organization.
From the API:
curl -X POST https://localhost:8443/api/organization \
-H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
-d '{"name":"acme-platform","displayName":"Acme Platform Team"}'
| Role | Capabilities |
|---|---|
| Owner | Full control — manage members, transfer ownership, delete org |
| Admin | Manage plugins, pipelines, compliance rules, quotas, and invite members |
| Member | Create and manage their own pipelines and plugins |
Invite members via email from the dashboard or API. A user can belong to multiple organizations.
A team is an organization nested one level under a parent (root) organization. Nesting is opt-in — every organization is a flat root until you create a team under it, and teams can’t have their own sub-teams (the hierarchy is one level deep). A team is a full organization: it has its own members, roles, quotas, secrets, and billing.
What the parent ↔ team relationship adds on top of plain organizations:
A user can belong to several organizations and teams at once and acts within one at a time (switch with the org switcher).
Creating / managing teams — on the dashboard Members page, an admin of a root org uses Create Sub-Org / Team to nest a new team and Manage teams (per member) to add or remove a member across the org’s teams in one step. Via the API, POST /api/organization accepts a parentOrgId, and POST /api/organization/:id/members/bulk-add adds a user to several teams at once.
| Feature | Developer | Pro | Unlimited |
|---|---|---|---|
| Pipeline / plugin CRUD | yes | yes | yes |
| AI pipeline generation | - | yes | yes |
| AI plugin generation | - | yes | yes |
| Bulk operations | - | yes | yes |
| Audit log | - | - | yes |
| Custom integrations | - | - | yes |
| Priority support | - | yes | yes |
System org users always have access to all features.
flowchart TB
UI[Dashboard / CLI] --> NGINX[Nginx<br/>TLS + Routing]
NGINX --> PIPE[Pipeline Service]
NGINX --> PLUG[Plugin Service]
NGINX --> PLAT[Platform Service]
PIPE --> COMP[Compliance]
PLUG --> REP[Reporting]
PLAT --> QB[Quota / Billing]
COMP & REP & QB --> DB[(PostgreSQL / MongoDB / Redis)]
| Service | Purpose |
|---|---|
| Platform | Auth, orgs, users, JWT, RBAC |
| Pipeline | Pipeline CRUD, AI generation, CDK synthesis |
| Plugin | Plugin CRUD, Docker image builds, AI generation |
| Compliance | Per-org rule enforcement, policy management, audit trail |
| Reporting | Execution analytics via EventBridge ingestion |
| Quota | Resource limits per organization |
| Billing | Subscriptions and usage billing |
| Message | Org announcements and conversations |
For end-to-end request → build → deploy flow diagrams, see Architecture Flow. For the case for adopting Pipeline Builder org-wide, see Organization Benefits.
125 plugins across 10 categories. See the Plugin Catalog for the full list.
| Category | Count | Details |
|---|---|---|
| Language | 11 | Java, Python, Node.js, Go, Rust, .NET |
| Security | 40 | Snyk, SonarCloud, Trivy, Veracode, Semgrep |
| Quality | 17 | ESLint, Prettier, Checkstyle, Clippy, Ruff |
| Testing | 14 | Jest, Pytest, Cypress, Playwright, k6 |
| Artifact | 16 | Docker, ECR, GHCR, npm, PyPI, Maven |
| Deploy | 13 | Terraform, CloudFormation, Kubernetes, Helm, CDK |
| Infrastructure | 5 | CDK synth, manual approval, S3 cache, shell |
| Monitoring | 3 | Datadog, New Relic, Sentry |
| Notification | 5 | Slack, Teams, PagerDuty, email |
| AI | 1 | Dockerfile generation (multi-provider) |