Wisp CLI v0.4.1

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.4.1

macOS (Apple Silicon): wisp-cli-aarch64-darwin Linux (ARM64): wisp-cli-aarch64-linux Linux (x86_64): wisp-cli-x86_64-linux Windows (x86_64): wisp-cli-x86_64-windows.exe

SHA-1 Checksums

69de880e160a2f26e3c26b7c28030457913754dc  wisp-cli-aarch64-darwin
026189f2c10077a2be4705102e169e66cb207f84  wisp-cli-aarch64-linux
4777cff07558906717402484a3313359880eae96  wisp-cli-x86_64-linux
d6bc789d7fd7c787e5520eb476cee70c97ccb3ce  wisp-cli-x86_64-windows.exe

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-macos-arm64
chmod +x wisp-cli-macos-arm64

# Deploy your site
./wisp-cli-macos-arm64 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