Install the CLI
One command to publish — npm package shiply-cli
The shiply CLI wraps the publish API: it walks a directory, hashes every
file, uploads only what changed, and prints the live URL.
The npm package is named
shiply-cli, notshiply. A separate npm package namedshiply(an unrelated auto-commit watcher) exists — installing it does NOT give you the shiply.now CLI. Always useshiply-cli.
Install
curl -fsSL https://shiply.now/install.sh | bashor directly via npm (Node 18+):
npm install -g shiply-cli
# or, no install:
npx -y shiply-cli@latest publish ./distPublish
shiply publish ./distThat's it — the command prints https://<slug>.shiply.now/ when the site is
live. Without an API key the site is anonymous: it expires after 24 hours and
the command prints a one-time claimToken and claimUrl so you can update or
claim it later.
shiply publish ./dist --spa # single-page app fallback
shiply update ./dist --claim-token <token> # new version of an anonymous site
shiply status my-site --wait # SSL + readiness check (agents: parse SSL_READY / SITE_READY)Teach your agent
shiply skill # installs the shiply skill to ~/.claude/skills
shiply skill --project # or just for the current projectThe skill gives Claude Code (and compatible agents) durable instructions for publishing, updating the same URL instead of creating duplicates, SSL checks, custom domains, and variables. Raw file: shiply.now/skill.md.
Log in for permanent sites
shiply loginEnter your email, type the 6-digit code it sends you, and the CLI saves an API
key to ~/.shiply/credentials. Every publish after that is permanent and owned
by your account. In CI or scripts, set SHIPLY_API_KEY instead — it takes
precedence over the saved credentials.
No npm? No problem
The CLI is a convenience. Everything it does is three HTTP calls — see the
Quick start to publish with curl alone.