Skip to main content
Three commands take you from an empty folder to a public site.

Before you start

  • Node.js 24 or later.
  • Git, which fluid deploy uses to save the site’s source.
  • A Fluid login for a company that has sites turned on. If publishing answers 404, contact support to turn them on.

Steps

1

Create the project

This makes a Vite and React project with @fluid-app/sites already imported. npx @fluid-app/create-fluid-site my-event does the same. For a single HTML page and no build step, use the html template:
2

Log in

If you don’t have the Fluid CLI yet, install it first:
3

Deploy

fluid deploy finds the framework, runs its build, creates the site the first time (a company Site with an admin login, your own Site with a member login), publishes the build and prints the site’s address, such as https://yoli.com/sites/my-event.The first deploy asks whether to make the site public. Pass --public to skip the question. Without a terminal to ask on, the site stays private until you run fluid sites visibility public.Before it publishes, fluid deploy commits the folder and pushes it to the site’s source repository, so fluid sites pull can clone it later. Pass --no-source to publish without saving the source. See Source and branches.
Run fluid deploy again after each change. Files Fluid already holds aren’t uploaded again.

Already have a project?

Skip the first step. Run fluid deploy in the folder of any Vite, Astro, plain HTML or Next.js static export project. It builds the project with the package manager its lockfile names. See the framework guides for what each one needs. A Next.js app that needs a server isn’t deployed: fluid deploy explains why and creates nothing. See Site or App?.

Deploy without fluid login

Where you can’t run fluid login, such as in CI, set FLUID_TOKEN and FLUID_API_BASE. The CLI reads FLUID_TOKEN before any saved login, and a token from FLUID_TOKEN has no default API base, so set FLUID_API_BASE to https://api.fluid.app too. The token must be a signed-in person’s:
  • For a company Site, an admin’s login whose role may change themes (application_themes.update). A company API token can list and read company Sites, but it can’t publish them.
  • For a member’s own Site, that member’s login.
Pass --as admin or --as member to say which it is, so a mismatch stops before any request.

Next steps