Skip to main content
When you create a Mist app, Fluid provisions a repository, a server and a database, and connects them. This page explains what you get and how to change it.

What Fluid provisions

Creating an app runs these steps in order:
  1. Generates a private Git repository from the starter template.
  2. Creates a dedicated Postgres database.
  3. Creates a private API token and a public token for your company.
  4. Creates the hosting project, links it to the repository, sets its environment variables and gives it a public address with HTTPS.
  5. Starts the first deployment in the background.
If any step fails, Fluid undoes the steps that already finished, and the app shows as Failed. Nothing is left half-created. The app’s address combines your company’s subdomain and the app’s slug, a six-character ID such as 3bed85. You see the full address as URL on the Mist Apps screen, or with fluid mist show.

App states

Environment variables Fluid sets

Fluid sets and rotates these variables itself. They’re marked MIST in the Mist desktop app and managed_by: mist in the API. You can’t change or delete them. When you list variables, Fluid hides the values of the secrets, such as DATABASE_URL and FLUID_DROPLET_SECRET. Your app still reads them at runtime. The template also reads APP_URL, the app’s own public address, when it builds the URLs it registers with Fluid. You don’t need to set it. Without it, the template uses the app’s production address.

Add your own environment variables

Add a variable for anything your app needs, such as another service’s API key. Your variables are encrypted.
  • Mist desktop app: right-click the app, click Environment variables…, then Add variable.
  • CLI: fluid mist env set STRIPE_API_KEY=sk_live_51Hx…
  • API: Add a user-managed env var.
Keys use uppercase letters, digits and underscores, and start with a letter or underscore, such as STRIPE_API_KEY. A new or changed value takes effect on the app’s next deployment. Publish again, or run fluid mist push, to apply it. To create a random secret, such as a signing key, let the CLI generate it:
The CLI prints the value once. Copy it then if you also need it locally.

Use variables locally

Locally, the app reads .env.local, which stays out of Git. Fluid stores your values encrypted and doesn’t send them back, so keep your own copy of each value you need locally in .env.local. fluid mist env pull copies the values it can read into .env.local and keeps every line already in the file. It never copies a variable Fluid manages, such as DATABASE_URL, because local development uses the local database. It lists the encrypted variables it skipped, so you know which ones to add yourself.

Compute

Right-click a Mist app in the Mist desktop app and click Compute to choose how its server runs: Mist saves the choice in vercel.json in the app’s repository. It applies on the next publish. Compute appears once the app is on your computer.

Deployments

Every push to the repository’s main branch builds and deploys the app. You don’t run a deploy step yourself.
  • Mist desktop app: click Publish.
  • CLI: fluid mist push --watch commits, pushes and follows the build.
A deployment is queued, building, ready, error or canceled. To list recent deployments, run fluid mist deployments, or use List recent deployments. To go back to an earlier version, use History in the Mist desktop app, then publish. See Roll back.

Logs

Build logs and runtime logs come from the same place:
  • Mist desktop app: click Logs, then the Production tab.
  • CLI: fluid mist logs --tail streams new entries. Add --deployment <id> to read one deployment’s logs.
What your code writes with console.log and console.error shows up here.

Permissions

Through the API and CLI, each action needs a mist.* permission on your token: Mist API requests don’t accept droplet installation tokens.