SimpliCD
Simple CI/CD
2026
Solo Developer
Lightweight, self-hosted deployment tool for VPS and bare-metal servers. Git webhooks, health checks, auto-restart, rollback, and notifications. Single binary, no Docker required.
SimpliCD
Simple continuous deployment for VPS and bare-metal servers. No Docker, no Kubernetes, no agents. Just a single binary.
The Problem
Modern CI/CD tools are built for scale. Jenkins needs a dedicated server. GitHub Actions eats CI minutes. ArgoCD assumes you're running Kubernetes. But most side projects and small-team deployments just need one thing: when code is pushed, pull, build, and restart. The overhead of enterprise CI/CD for "a VPS with three apps" is absurd.
The Solution
SimpliCD is a self-hosted deployment tool written in Go and distributed as a single binary. It watches your Git repositories (via webhooks or polling), pulls changes, runs your build steps, and manages your processes β including health checks, auto-restart on crash, rollback, and notifications. Think of it as PM2 meets a lightweight CI/CD runner.
How It Works
- Configure β Define your projects in a single YAML file: repo URL, branch, build commands, start command, and optional health checks
- Deploy β Run
simplicd deploy my-appor push to your repo and let the webhook trigger it - Monitor β SimpliCD manages the process, tracks memory/uptime, auto-restarts on crash, and sends notifications via Slack, Discord, or email
- Rollback β If something breaks,
simplicd rollback my-appinstantly reverts to the previous version
Key Features
- Git Watching β GitHub, GitLab, and Gitea webhooks, plus polling for private repos
- Private Repos β Full SSH key and token support for private repositories
- Health Checks β HTTP health checks with configurable timeout and retries
- Auto-Restart β Crash detection with automatic restart, retry limits, and backoff
- PM2-style Status β Beautiful terminal display with PID, uptime, memory usage, and restart count
- Notifications β Email (SMTP), Slack, Discord, and generic webhook notifications
- Staging Environments β Deploy any branch to isolated environments with wildcard matching
- Rollback β Keep N previous versions and rollback with a single command
- Centralized Logs β
simplicd logs my-app -ffor real-time log tailing - Systemd Integration β Runs as a system service with proper daemonization
Technical Stack
- Go 1.22+ β For single-binary distribution and performance
- Chi β Lightweight HTTP router for the webhook server
- YAML β Human-readable configuration
- Systemd β Service management integration
- nfpm β Package generation for
.deband.rpm
Usage
# One-liner install
curl -fsSL https://raw.githubusercontent.com/nigelbasa/simplicd/main/install.sh | sudo bash
# Initialize a project interactively
simplicd init
# Deploy
simplicd deploy my-api
# Check status (PM2-style table)
simplicd list
# Follow logs
simplicd logs my-api -f
# Rollback if something breaks
simplicd rollback my-api
# Minimal config (~/.config/simplicd/config.yaml)
server:
port: 9090
projects:
- name: my-api
repo: git@github.com:user/my-api.git
branch: main
path: /var/www/my-api
build:
- npm ci
- npm run build
start: npm start
health_check:
url: http://localhost:3000/health
timeout: 30s
Why I Built This
I run multiple Node.js and Go apps on a single VPS. Every time I tried setting up "proper" CI/CD, I was fighting YAML pipelines, waiting for runners, or configuring Docker when all I needed was git pull && npm run build && pm2 restart. SimpliCD is that workflow, automated and reliable, with crash recovery and notifications built in.
Links
Built With
Want to see more?
View All Projects