The complete platform for Sails.js — deploy, manage, monitor, and debug your apps on your own infrastructure.
Slipway is an open-source, self-hosted platform purpose-built for Sails.js and The Boring JavaScript Stack applications. One command to install, one command to deploy.
- One-command deploys —
slipway slidepackages, pushes, and deploys your app with zero-downtime blue-green deployments - Self-hosted — Runs on any Linux VPS you control. Your code, your data, your servers
- Sails-native — Understands your models, helpers, hooks, and config out of the box
- Automatic HTTPS — SSL certificates provisioned automatically via Caddy
- Database management — Provision PostgreSQL, MySQL, or Redis with one click. Connection URLs auto-injected
- Built-in platform — Helm (production REPL), Bridge (data management), Dock (SQL console), Quest (job scheduler), Content (CMS)
- Backups — Database backups to S3-compatible storage with one-click restore
- Team collaboration — Multi-user access with team management
SSH into your VPS and run:
curl -fsSL https://raw.githubusercontent.com/sailscastshq/slipway/main/install.sh | bashThis installs two containers (Slipway + Caddy proxy) and gives you a dashboard URL.
When you want a local run that mirrors the production installer more closely than host-side npm run dev, use:
npm run localThis runs local.sh, the local counterpart to install.sh. It:
- builds the current checkout into a local Docker image
- creates or reuses the
slipwayDocker network - persists local secrets under
.tmp/local/.env - persists local app source and SQLite data under
.tmp/local/ - installs container dependencies into Docker volumes
- runs Slipway in Docker with
npm run dev - waits for
/healthbefore returning control
That means you still get the normal Slipway development loop, but through a runtime that is much closer to production:
- Docker-only runtime issues show up earlier
- asset/compiler problems are caught before a production deploy
/var/slipway/apps, Docker socket access, and SQLite files behave like the real container setup- the startup flow mirrors the structure of
install.sh
Helpful companion commands:
npm run local:logs
npm run local:status
npm run local:shell
npm run local:stop
npm run local:down
npm run local:destroyLocal Docker data is kept under .tmp/local/, and container dependencies are cached in Docker volumes so reruns stay fast.
Command semantics:
npm run local:stopstops the running container but keeps it for restart/debuggingnpm run local:downremoves the local containernpm run local:destroyremoves the local container, cached Docker volumes, and.tmp/local/state for a full reset
# Install the CLI
npm install -g slipway-cli
# Login to your Slipway instance
slipway login --server https://slipway.yourdomain.com
# Initialize your project
cd my-sails-app
slipway init
# Deploy
slipway slide┌──────────────────────────────────────────────────┐
│ YOUR VPS │
│ │
│ ┌────────────────────────────────────────────┐ │
│ │ SLIPWAY (Sails.js + Vue) │ │
│ │ Dashboard · API · Deploy Engine · Platform │ │
│ └────────────────────┬───────────────────────┘ │
│ │ │
│ ┌────────────────────┴───────────────────────┐ │
│ │ Docker + Caddy Proxy │ │
│ │ ┌──────┐ ┌──────┐ ┌───────┐ ┌─────────┐ │ │
│ │ │ app │ │ app │ │ redis │ │postgres │ │ │
│ │ └──────┘ └──────┘ └───────┘ └─────────┘ │ │
│ └────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────┘
Key technology choices:
| Component | Choice | Why |
|---|---|---|
| App framework | Sails.js + Vue 3 + Inertia.js | Dogfooding the stack |
| Database | SQLite | Zero-config, single-file backup |
| Proxy | Caddy | Automatic HTTPS, Docker-native routing |
| Containers | Docker | Universal runtime, no vendor lock-in |
| Security | execFile() everywhere |
No shell injection possible |
Slipway includes integrated tools that work with your deployed Sails apps:
| Tool | What it does |
|---|---|
| Helm | Production REPL — query models, run helpers, inspect config from the browser |
| Bridge | Auto-generated data management UI from your Waterline models |
| Dock | SQL console, schema diff, and migration tool for your databases |
| Quest | Job scheduler dashboard for sails-hook-quest |
| Content | CMS for sails-content markdown files |
| Lookout | Infrastructure monitoring via sails-hook-slipway telemetry |
- A Linux VPS with 1GB+ RAM (we recommend Hetzner Cloud)
- Docker (auto-installed by the install script)
- Node.js 22+ on your local machine (for the CLI)
Full documentation at docs.sailscasts.com/slipway
This repo is a monorepo containing:
| Package | Description |
|---|---|
packages/cli |
Zero-dependency CLI (slipway-cli on npm) |
packages/hook |
Auto-instrumentation hook for deployed apps (sails-hook-slipway on npm) |
- Discord — Chat with other developers
- GitHub Issues — Report bugs and request features
- YouTube — Tutorials and updates
Slipway is open-source software licensed under the MIT license.