Wisp CLI v0.5.0

Deploy static sites to the AT Protocol

The Wisp CLI is a command-line tool for deploying static websites directly to your AT Protocol account. Host your sites on wisp.place with full ownership and control, backed by the decentralized AT Protocol.

Features

Download v0.5.0

macOS (Universal): wisp-cli-darwin-universal macOS (Apple Silicon): wisp-cli-aarch64-darwin macOS (Intel): wisp-cli-darwin-x86_64 Linux (ARM64): wisp-cli-aarch64-linux Linux (x86_64): wisp-cli-x86_64-linux

SHA-1 Checksums

7d0cc968d2a130158c3b204d9a15bcc29b8af252  wisp-cli-darwin-universal
912f8f99c2b55ca6ad75e0a89903688bd2c1cb4b  wisp-cli-aarch64-darwin
40d26d4a9c058e42e7911a195c3e078e8a4b5e82  wisp-cli-darwin-x86_64
ef1992d8850f8fef1d719e4e8fab5431475c352e  wisp-cli-aarch64-linux
3018dde8fec495abcae044079564ced93cdeb4f8  wisp-cli-x86_64-linux

CI/CD Integration

Deploy automatically on every push using Tangled Spindle:

when:
  - event: ['push']
    branch: ['main']
  - event: ['manual']

engine: 'nixery'

clone:
  skip: false
  depth: 1
  submodules: false

dependencies:
  nixpkgs:
    - nodejs
    - coreutils
    - curl
  github:NixOS/nixpkgs/nixpkgs-unstable:
    - bun

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

steps:
  - name: build site
    command: |
      export PATH="$HOME/.nix-profile/bin:$PATH"

      # regenerate lockfile, https://github.com/npm/cli/pull/8184 makes rolldown not install
      rm package-lock.json bun.lock
      bun install @rolldown/binding-linux-arm64-gnu --save-optional
      bun install

      # run directly with bun because of shebang issues in nix
      bun node_modules/.bin/vite build

  - name: deploy to wisp
    command: |
      # Download Wisp CLI
      curl https://sites.wisp.place/nekomimi.pet/wisp-cli-binaries/wisp-cli-x86_64-linux -o wisp-cli
      chmod +x wisp-cli

      # Deploy to Wisp
      ./wisp-cli \
        "$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. Generate an app password from your AT Protocol account settings.

Basic Usage

Deploy a Site

# Download and make executable
curl -O https://sites.wisp.place/nekomimi.pet/wisp-cli-binaries/wisp-cli-aarch64-darwin
chmod +x wisp-cli-aarch64-darwin

# Deploy your site
./wisp-cli-aarch64-darwin 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 from PDS

Download a site from the PDS to your local machine (uses OAuth authentication):

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

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

Serve a Site Locally with Real-Time Updates

Run a local server that monitors the firehose for real-time updates (uses OAuth authentication):

# 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

# Downloads site, serves it, and watches firehose for live updates!

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

# Enable directory listing for paths without index files
wisp-cli serve your-handle.bsky.social \
  --site my-site \
  --directory