# Ship Deploy apps and websites to a VPS. Automatic HTTPS. No daemon. Just SSH, systemd, and Caddy doing their jobs. ## How it works Ship is a set of Claude skills. Tell Claude what to deploy. Claude handles it. Server is source of truth — Claude checks the server directly, always current. ## Skills | Skill | What it does | |-------|-------------| | `/ship-setup` | One-time VPS setup. Installs Caddy, saves host config | | `/ship-status` | What's running, what port, how much disk. Asks server directly | | `/ship-deploy` | Deploy something. Claude asks what it needs to know | | `/ship-binary` | Upload binary, wire up systemd + Caddy, back up SQLite first | | `/ship-static` | Rsync dist folder, Caddy serves it | | `/ship-env` | Read/write env vars. Never wipes what's already there | | `/ship-caddy` | Manage per-app Caddy config. Validates before reloading | | `/ship-service` | Start, stop, restart, logs | ## Install ```bash cp -r skills/ship-* ~/.claude/skills/ ``` ## Quick start ### 1. Set up VPS ``` /ship-setup ``` Claude asks for SSH host, domain, nickname. Done. Or skip Claude entirely: ```bash bash ~/.claude/skills/ship-setup/setup.sh ubuntu@1.2.3.4 example.com prod --default ``` ### 2. Deploy ``` /ship-deploy ``` Claude asks a few questions. Deploys. You go touch grass. ### 3. Check what's running ``` /ship-status ``` ## Config `~/.config/ship/config.json` — lives on your machine, created by `/ship-setup`. ```json { "default": "prod", "hosts": { "prod": { "host": "ubuntu@1.2.3.4", "domain": "example.com" }, "staging": { "host": "ubuntu@5.6.7.8", "domain": "staging.example.com" } } } ``` Multiple hosts supported. "Deploy to staging" just works. ## Server layout ``` /usr/local/bin/ # binary /var/lib//data/ # persistent data (SQLite lives here) /var/lib//backups/ # SQLite backups before each deploy /var/www// # static site files /etc/systemd/system/.service # systemd unit /etc/caddy/sites-enabled/.caddy # Caddy config /etc/ship/env/.env # env vars /etc/ship/ports/ # allocated port ``` ## Requirements - Ubuntu 20.04+ or Debian 11+ - SSH access - Claude Code ## License MIT