Dropway

CLI reference

The Dropway CLI

dropway deploys a folder of static files to a live, access-controlled URL from your terminal. It hashes files locally, uploads only what changed, and prints the live URL.

Install

The CLI is a single static Go binary. The quickest way to get it is the install script, which downloads the right build for your OS and architecture from GitHub Releases, verifies its checksum, and drops it on your PATH.

install
curl -fsSL https://raw.githubusercontent.com/danielpang/dropway/main/install.sh | sh

The script installs to /usr/local/bin (falling back to ~/.local/bin). Set DROPWAY_INSTALL_DIR to choose another location, or DROPWAY_VERSION to pin a specific release.

Prefer to build from source? Install it with Go instead (this puts a dropway binary under $(go env GOPATH)/bin):

install
go install github.com/danielpang/dropway/cli/cmd/dropway@latest

Either way, check it worked:

terminal
dropway version

Log in

Run dropway login for an interactive session, or create an API key for scripts and CI. Both authenticate the same deploy and site commands.

terminal
dropway login

The CLI opens your browser to the Dropway sign-in page (the same account you use in the dashboard). After you approve, it saves your credentials to ~/.config/dropway/credentials.json. That’s it, no tokens to copy. Sign out any time with dropway logout.

API keys for scripts and CI

In the dashboard, open Settings, then API keys, create a key, and set DROPWAY_API_KEY. The env var takes precedence over a stored login, so the same dropway deploy commands (including --new to create a site) work in pipelines and other non interactive environments. Revoke a key any time from Settings.
terminal
export DROPWAY_API_KEY=dw_...
dropway deploy ./dist --new --site my-docs --send

Self-hosting? Point the CLI at your own instance with --api (or the DROPWAY_API environment variable); it defaults to the hosted https://api.dropway.dev. dropway login honors the same flag.

terminal
dropway login --api http://localhost:8080   # self-host

Commands

dropway <command> [flags]. The everyday commands are deploy, sites, and read; gc and dr rebuild are operator utilities.

CommandWhat it does
loginSign in via the browser and store credentials locally.
logoutRemove the stored credentials.
deploy <dir>Hash a folder, upload changed files, finalize, and publish to a live URL.
sitesList the sites you own, or every site in the org with --all.
read <url-or-slug>Fetch a site's served content over HTTP and print it to stdout.
chatShare an agent session transcript as an org chat log, and attach it to a site.
versionPrint the CLI version.
gcOperator: garbage-collect orphaned blobs (keep the current and last N versions).
dr rebuildOperator: rebuild the edge routing projection from Postgres (disaster-recovery drill).

dropway deploy

Walk a directory, compute a SHA-256 per file, and run the full deploy: prepare, upload only-changed blobs, finalize, publish, then print the live URL.

Without --send it is a dry run: it prints the manifest it would upload and makes no network calls. Add --send to actually deploy (run dropway login first, or set DROPWAY_API_KEY).

FlagDescription
--sendActually run the deploy. Without it, print the plan only (requires sign-in).
--newCreate a new site before deploying (requires --site).
--site <slug>The slug for the new site (used with --new).
--site-id <id>Deploy to an existing site by id.
--api <url>API base URL (defaults to https://api.dropway.dev, or DROPWAY_API).

Examples

The common flows: preview, create, and upload.

Preview a deploy (dry run, no upload)

terminal
dropway deploy ./dist

Create a new site and deploy to it

terminal
dropway deploy ./dist --new --site my-docs --send

This creates the my-docs site, uploads the folder, and prints something like https://my-org--my-docs.dropwaycontent.com.

Upload a folder to an existing site

terminal
dropway deploy ./dist --site-id 1a2b3c4d --send

Only files whose contents changed are uploaded (everything is content-addressed), then the new version is published. Roll back any time from the dashboard.

Deploy to a self-hosted instance

terminal
dropway login --api http://localhost:8080
dropway deploy ./dist --api http://localhost:8080 --new --site demo --send

List and read sites

dropway sites lists what you've shipped; dropway read fetches a site's served content straight to your terminal.

dropway sites lists the sites you own. Add --all to list every site in your organization, with an owner column.

terminal
dropway sites          # sites you own
dropway sites --all    # every site in the org

Read a site over HTTP

dropway read fetches served content and writes it to stdout, so you can pipe it elsewhere. Pass a full URL, or a site slug the CLI resolves to its live URL first.

terminal
dropway read my-docs
dropway read https://my-org--my-docs.dropwaycontent.com

Public sites need no sign-in. A gated site returns its sign-in page instead of the content, since the fetch is a plain HTTP request.

dropway chat

Share the agent session behind a deploy as an org chat log, and attach it to a site so viewers see the story behind the artifact.

dropway chat share reads a conversation export (Claude Code JSONL, a ChatGPT JSON export, or plain text) and publishes it to your organization’s chat library. Add --site to attach it to a site, where it becomes that site’s “How this was made” panel under the site’s own access control.

terminal
# share a Claude Code session, attached to a site
dropway chat share ./session.jsonl --site my-docs --source claude_code

# condense the transcript's tool activity into action annotations
dropway chat share ./session.jsonl --site my-docs --derive-actions

Append as the work continues

dropway chat append adds a follow-up message, an action annotation, or another export to an existing log, by chat id or by --site. Action annotations record a file edit or a tool run with a one-line note on why.

terminal
dropway chat append --site my-docs --message "Reworked the hero copy"
dropway chat append --site my-docs --action file_edit --path index.html --comment "Tightened the headline"
CommandWhat it does
share <file>Publish a session export as a chat log (optionally --site to attach it).
listList your org's shared chat logs.
show <chat-id>Print a shared chat's messages.
append [<chat-id>]Add a message, action annotation, or export to a log (by id or --site).
attach <chat-id>Attach a chat log to one of your sites.
detach <chat-id>Detach a chat log from its site.
panel <chat-id>Turn the served “How this was made” panel on or off for the attached site.
delete <chat-id>Delete a chat log and all its messages.
delete-message <chat-id> <seq>Delete one message from a log (mistakes, pasted secrets).

Do the same from an AI tool

The Dropway MCP server exposes share_chat, append_chat, and get_site_chat so an assistant can record and read these logs directly from a conversation.

Changing permissions

Sharing and access control live in the dashboard and the MCP server, not the CLI.

New sites start at your organization’s default visibility (org-only). To make a site public, password-protected, or limited to an email allowlist, change its access in the dashboard, or use the set_site_access tool on the Dropway MCP server.

Manage access from an AI tool

The Dropway MCP server exposes create_site, deploy_site, and set_site_access so an assistant can create, deploy, and re-share sites for you in chat.

Prefer to deploy from an AI assistant?

Connect the Dropway MCP server to Claude, Cursor, or Codex and deploy straight from a conversation.