Deploy a site
Deploy a folder or a single file to a live URL, with auto-detection of common build directories and machine-readable output for scripts.
Point flypod at a directory of static files:
npx flypod ./distflypod zips the folder, POSTs it to the server, and prints a live URL:
https://ab12cd34.flypod.devOpen it. The site is live. You can also deploy a single file:
npx flypod ./index.htmlLet flypod find the folder
Run with no path and flypod auto-detects a build directory: the first of these
that contains an index.html:
dist/ build/ out/ .output/public .vercel/output/static public/ _site/npx flypodAuto-detection only matches a directory that actually contains an index.html.
If none do, pass the path explicitly.
What the output looks like
In a terminal (TTY), flypod shows a banner, a spinner, and post-deploy hints. The split never changes:
- The live URL goes to stdout.
- The banner, spinner, and hints go to stderr.
So URL=$(npx flypod ./dist) captures just the URL. When stdout is not a TTY
(a pipe, a CI job, an agent), flypod auto-detects it and strips the animation.
No flag needed.
Machine-readable output
For structured output, use --json and parse stdout:
npx flypod ./dist --json{
"ok": true,
"url": "https://ab12cd34.flypod.dev",
"site_id": "ab12cd34",
"version_id": "v_...",
"expires_at": "2026-07-02T00:00:00.000Z",
"manage_token": "...",
"claim_token": "...",
"owner_account_id": null,
"source": "./dist",
"files": 12,
"bytes": 48211,
"elapsed_ms": 734
}For the bare minimum, use --quiet. The URL is the only thing on stdout, and
the manage_token is printed to stderr:
URL=$(npx flypod ./dist --quiet)Owned vs anonymous
If you are logged in, the deploy is owned and permanent. If not, it is
anonymous and expires after 14 days. Running flypod login later
automatically claims every anonymous site this CLI remembers — no tokens to
copy. The JSON output also includes a claim_token for the rare case where
you need to claim a site from a different machine. See
Accounts & claiming.
The folder→site link
After a successful deploy, flypod records a link between the current folder and
the site it deployed to. This lets flypod update,
flypod versions, and
flypod rollback work without an ID. The link lives in a
per-user config directory (not in your repo), and recording it is
best-effort: if it fails, the deploy still succeeds.
Flags
| Flag | Effect |
|---|---|
--json | Emit a JSON object on stdout. |
-q, --quiet | URL on stdout, manage_token on stderr. |
-h, --help | Print usage. |
-v, --version | Print the flypod version. |