Wisp CLI v2.1.2

A command-line tool for deploying and serving static websites. Deploy to your own account, serve with live updates, and manage your domains — all from the terminal.

Learn more at wisp.place.

Features

Download v2.1.2

SHA-256 Checksums

checksums
28026797cc909a9101e459ff901768203e5bcbefc96eff1d00cf00f190601940  wisp-cli-aarch64-darwin
ac5d72d1ddda95dc992add98bda56cb8519120407f6d31b8c1a58182d22f2299  wisp-cli-aarch64-linux
655fb3b7fcd5285338e22620548466d49023386973e4005465bcca93c4b9950b  wisp-cli-darwin-universal
537f2d7905b9b2c07ff778bd7d1aa6b7ee7c082bd8f6f59ef86a0e4729e5a4e7  wisp-cli-x86_64-darwin
79a6250c5bcc0d2cf6b93a7a7550255bba78351af73566aca908f07a5def8fbc  wisp-cli-x86_64-linux
0ea68a9f0c9bf3a9973882645adc13befdc3698fdd8c11556594be2d7979f002  wisp-cli-x86_64-windows.exe

Basic Usage

Deploy a Site

bash
# Deploy your site
./wisp-cli deploy your-handle.bsky.social \
  --path ./dist \
  --site my-site

# Your site will be available at:
# https://sites.wisp.place/your-handle/my-site

Pull a Site

Download a site to your local machine for backup or development:

bash
# Pull a site to a specific directory
./wisp-cli pull your-handle.bsky.social \
  --site my-site \
  --path ./my-site

# Pull to current directory
./wisp-cli pull your-handle.bsky.social \
  --site my-site

Serve with Live Updates

Run a local server that monitors the firehose for real-time updates:

bash
# Serve on http://localhost:8080 (default)
./wisp-cli serve your-handle.bsky.social \
  --site my-site

# Serve on a custom port
./wisp-cli serve your-handle.bsky.social \
  --site my-site \
  --port 3000

# Enable SPA mode (serve index.html for all routes)
./wisp-cli serve your-handle.bsky.social \
  --site my-site \
  --spa

# Enable directory listing
./wisp-cli serve your-handle.bsky.social \
  --site my-site \
  --directory-listing

Domain Management

bash
# Claim a custom domain
./wisp-cli domain claim your-handle.bsky.social --domain example.com

# Claim a subdomain
./wisp-cli domain claim-subdomain your-handle.bsky.social --subdomain alice

# Check domain status
./wisp-cli domain status your-handle.bsky.social --domain example.com

# Attach a site to a domain
./wisp-cli domain add-site your-handle.bsky.social --domain example.com --site mysite

# Delete a domain or site
./wisp-cli domain delete your-handle.bsky.social --domain example.com
./wisp-cli site delete your-handle.bsky.social --site mysite

List Domains & Sites

bash
./wisp-cli list domains your-handle.bsky.social
./wisp-cli list sites your-handle.bsky.social

Options

Use an alternate proxy service DID:

bash
./wisp-cli list domains your-handle.bsky.social --service did:web:example.com

CI/CD Integration

Deploy automatically on every push using Tangled Spindle:

spindle.yaml
when:
  - event: ['push']
    branch: ['main']
  - event: ['manual']

engine: 'nixery'

clone:
  skip: false
  depth: 1

environment:
  SITE_PATH: 'dist'
  SITE_NAME: 'my-site'
  WISP_HANDLE: 'your-handle.bsky.social'

steps:
  - name: build site
    command: |
      bun install && bun run build

  - name: deploy to wisp
    command: |
      curl https://sites.wisp.place/nekomimi.pet/wisp-cli-binaries/wisp-cli-x86_64-linux -o wisp-cli
      chmod +x wisp-cli
      ./wisp-cli deploy "$WISP_HANDLE" \
        --path "$SITE_PATH" \
        --site "$SITE_NAME" \
        --password "$WISP_APP_PASSWORD"
Note: Set WISP_APP_PASSWORD as a secret in your Tangled Spindle repository settings.