Skip to main content
Sean Brill

CI/CD server

2025–now

Open source

EZPIPELINE

Self-hosted CI/CD with live logs, approvals and rollbacks.

EZPIPELINEportfolio-releasefilefreak-prodnotch-releaseknitted-build4seasons-releaseportfolio-release#142 · main · git watch · 1m 31sdeployingPreflight4sFetch the code3sInstall and check46sBuild the site38sDeploy the site▸ filefreak sites deploy out --site portfolio-site hashing 94 files uploading 12 changed, 82 unchanged

Overview

A self-hosted CI/CD server. Pipelines are YAML files of shell steps that run on your own machine, with their output streamed live to a React dashboard. It ships FileFreak, notch.fm, knitted.studio, 4 Seasons and this site.

My role

Creator. Server, dashboard, permissions model and the pipelines that run on it.

Built with

  • TypeScript
  • Node.js
  • Express 5
  • SQLite
  • Socket.IO
  • React 19
  • Vite
  • Tailwind CSS 4
  • xterm.js
  • Docker

In numbers

products it ships, this site included
5
permission flags per pipeline
7
licensed
Apache-2.0

How it's built.

  • Live, without polling

    One Node process owns the database, the pipeline files and the child processes. Progress streams over Server-Sent Events, with each step's bar estimated from that pipeline's own history.

  • Approvals and rollbacks

    Approval gates where a newer push replaces a build still waiting, and rollbacks that re-run a pipeline's deploy steps from an archived build.

  • Permissions that mean something

    Seven flags per pipeline, so “can deploy” and “can rewrite the deploy script” are different rights. Optional email MFA, and secrets redacted from logs by name.

  • Git watches and deploy keys

    A run starts when a watched branch moves. SSH deploy keys are generated per group on the server, encrypted at rest and inherited by the groups below.

  • An assistant with guardrails

    An in-app AI assistant with 11 scoped tools and no shell or filesystem access, and an MCP server with 16 tools, rollback planning among them.