Built with Rust

Deploy from
your terminal.

A CLI that deploys web apps to your own infrastructure. No vendor lock-in. Self-hosted, decentralized, and open.

Install Shipyard
$ curl -fsSL https://shipyard.wtf/install | sh
Installing shipyard v0.1.0...
Installed to ~/.shipyard/bin/shipyard
$ shipyard --version
shipyard 0.1.0

Three commands to production.

Initialize your project, deploy it, and get a live URL. Shipyard auto-detects your framework, builds locally, uploads artifacts to S3, and provisions a machine on Fly.io.

  • shipyard initDetects framework, creates project config
  • shipyard deployBuilds, uploads, provisions a machine
  • shipyard deploy --prodPromotes to production domain
~/my-app
$ shipyard init
Detected framework: astro
Created project: my-app
Wrote shipyard.json
$ shipyard deploy
Building with `pnpm build`...
Packaging artifact (2.4 MB)...
Uploading to S3...
Provisioning Fly Machine (iad)...
βœ“ Deployed! https://xk9m2p.shipyard.wtf

Everything you need. Nothing you don't.

Shipyard is a deployment tool that respects your autonomy. Own your infrastructure, your data, and your workflow.

⚑

Framework Detection

Astro, Next.js, Hono, Vite, Remix, or static sites. Auto-detected from your project, zero config needed.

πŸ”

Own Your Infra

Deploys to Fly.io Machines or your own servers. S3-compatible storage for artifacts. No vendor lock-in.

πŸ¦€

Rust CLI

Fast, single binary. No Node.js runtime needed. Builds locally, uploads efficiently with progress bars.

🌐

Custom Domains

Add domains with DNS verification. Automatic TLS via Caddy. Sovereign DNS compatible.

πŸ”‘

Web3 + Traditional Auth

Sign in with Google, MetaMask, or WalletConnect via Privy. API tokens for CI/CD.

πŸ“¦

Preview Deployments

Every deploy gets a unique URL. Promote to production when ready. Rollback instantly.

How it works
# Deploy flow
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Your │────▢│ S3 │────▢│ Fly.io β”‚
β”‚ Machine β”‚ β”‚ Bucket β”‚ β”‚ Machine β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
build upload provision
# Request flow
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ User │────▢│ Caddy │────▢│ Fly.io β”‚
β”‚ Browser β”‚ β”‚ Edge β”‚ β”‚ Machine β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
request TLS+route serve

Simple architecture. Your stack.

Shipyard builds your app locally, uploads the artifact to S3 storage, and provisions a Fly.io Machine to serve it. Caddy handles TLS and routing.

Build
Runs your build command locally. No remote CI needed.
Upload
Gzipped tarball uploaded to S3-compatible storage (MinIO, Storj, AWS).
Provision
Spins up a Fly.io Machine with your artifact. Sub-second cold starts.
Route
Caddy reverse proxy with automatic TLS. Custom domains supported.

Ready to deploy?

Install the CLI, initialize your project, and deploy in under a minute.