Skip to content
flypod
Guides

How to deploy a static site from an AI agent

Run npx flypod ./dist from any coding agent to get a live URL back on stdout, with no account and no config. Covers the one-line deploy, teaching the agent to do it unprompted, and making the URL permanent.

To deploy a static site from an AI agent, have the agent run npx flypod ./dist — it prints a live URL to stdout and needs no account, config, or API key. Run npx flypod install skill once and the agents in that repo learn the command themselves, so "deploy this" is enough.

The one command

npx flypod ./dist
https://ab12cd34.flypod.dev

The URL is the only thing on stdout; the banner and hints go to stderr. So an agent can capture it directly:

URL=$(npx flypod ./dist --quiet)

Or parse structured output:

npx flypod ./dist --json | jq -r .url

flypod detects a non-TTY stdout and drops the animation on its own, so this works unchanged inside an agent's shell tool.

Teach the agent to do it without being told

npx flypod install skill writes the flypod Agent Skill into the repo:

npx flypod install skill

It writes the same skill to both directories agents read — .claude/skills/flypod/ for Claude Code, and .agents/skills/flypod/ for Codex, Cursor, Gemini CLI, and Copilot. Each contains a short SKILL.md the agent always loads, plus reference docs it opens on demand: shipping updates to the same URL, publishing Markdown, collecting comments on a preview, and troubleshooting. Re-running it is safe.

If you already manage your agent skills with skills, install it that way instead:

npx skills add flypod-dev/flypod-skill

Both install the same files. See flypod install skill for the full target list and flags.

Agents can also read these docs directly: /llms.txt for the index and steering block, /llms-full.txt for the whole corpus, or append .md to any docs URL for its raw Markdown.

Ship a change to the same URL

A second flypod creates a second site. To replace the contents of the site the agent already deployed, use update:

npx flypod update ./dist --quiet

flypod links the working directory to its site, so no ID is needed. It is safe to run on every iteration of a loop: the version id is the content hash, so a run with identical files reuses the version that already exists and adds nothing to the site's history. Undo with flypod rollback.

Make the URL permanent

Anonymous deploys expire after 14 days. Deploying while logged in makes the site owned and permanent:

flypod login          # opens a browser to approve this machine
npx flypod ./dist

For a headless agent or a CI job, pass an existing session token instead of logging in:

# FLYPOD_TOKEN is read straight from the environment. Set it from your
# secret store; the CLI needs no login file and writes none.
npx flypod ./dist --quiet

flypod login also auto-claims every anonymous site the CLI remembers, so nothing deployed earlier is lost.

Limits worth knowing

  • Static only. HTML, CSS, browser JavaScript, images, and Markdown. No server-side code, functions, or databases.
  • Size cap. 200 files / 10 MB uncompressed / 5 MB zip per deploy.
  • A folder of Markdown with no root index.html is rendered into a docs site. See Render Markdown.

Next steps

On this page