Skip to main content
Shipyard is a backend CI/CD engine you can self-host to automate your entire deployment workflow. Connect any GitHub repository, push code, and Shipyard handles cloning, building, testing, and deploying your project — all inside isolated Docker containers with real-time log streaming to your frontend.

Quickstart

Connect your first GitHub repo and trigger a build in minutes

API Reference

Explore all REST endpoints and WebSocket events

Architecture

Understand how the CI/CD pipeline works end to end

Connect a repo

Step-by-step guide to connecting and configuring a repository

How it works

Shipyard automates the full lifecycle from code push to live deployment:
1

Authenticate with GitHub

Sign in via GitHub OAuth. Shipyard requests read:user, repo, and read:org scopes so it can register webhooks and clone private repositories on your behalf.
2

Connect a repository

Select a GitHub repo, choose a branch, and provide install and build commands. Shipyard automatically registers a webhook on the repo via the GitHub API.
3

Push code

Every push to the configured branch triggers the webhook. Shipyard verifies the HMAC-SHA256 signature, then starts a build automatically.
4

Build and test

Shipyard clones the repo, generates a Dockerfile if needed, builds a Docker image, and runs your install and build commands inside an isolated container. Logs stream to your client in real time via Socket.io.
5

Deploy

If the build passes and the project has no sensitive environment variables, Shipyard copies the build output to a deployment directory and serves it at a project-named subdomain.

Key features

Docker-isolated builds

Every build runs inside a fresh Docker container. Projects without a Dockerfile get one generated automatically.

Real-time log streaming

Build and test logs stream to your frontend via Socket.io as they happen, with line numbers and error classification.

Encrypted secrets

Environment variables are stored with AES-256-GCM encryption and injected at build time — never exposed in API responses.

Subdomain deployments

Static sites and SPAs are served at <project-name>.<your-domain> with SPA fallback support for client-side routing.

Rollback support

Revert any project to a previous deployment by re-running the build from that deployment’s commit hash.

Framework detection

Vite and Next.js projects are automatically detected and their output directories resolved without manual configuration.

Build docs developers (and LLMs) love