Flowblocks
Dashboard
Dashboard
Getting Started
QuickstartHow it works
Building Workflows
The canvasGenerating with AIPreview and runsSharing and collaboration
Steps
OverviewAgentBranches and loopsGuardrails and approvalState and data
Connectors
OverviewGoogleMicrosoftDropboxOther providersMCP servers
Develop
Embedding the builderNode SDKREST API
Reference
Self-hostingEnvironment variablesLimitsFAQ

All systems operational

Reference

Self-hosting

Run Flowblocks locally or on your own infrastructure with Node.js and Postgres.

Flowblocks needs Node.js and a Postgres database. The free Developer plan runs locally. Enterprise plans cover self-hosting in production and VPC installs.

Requirements

  • Node.js 20.9 or newer
  • pnpm
  • Postgres

Quick preview

To try it without setting anything up:

pnpm install
pnpm preview

pnpm preview writes .env.local if it is missing, starts an embedded Postgres on port 54329, applies migrations, and runs the dev server at http://localhost:3000.

Full setup

Install

pnpm install
cp .env.example .env.local

Generate the secrets

openssl rand -base64 32   # BETTER_AUTH_SECRET
openssl rand -hex 32      # INTEGRATION_ENCRYPTION_KEY

Put both in .env.local.

Point at your database

Set DATABASE_URL to your Postgres connection string, then apply the schema:

pnpm db:migrate

Add a model key

Set at least one of OPENAI_API_KEY, ANTHROPIC_API_KEY or XAI_API_KEY. See Environment variables.

Start

pnpm dev

The encryption key

INTEGRATION_ENCRYPTION_KEY encrypts connector tokens and MCP tokens at rest. It must be 64 hex characters.

Warning

Set the key before you store real tokens, and keep it stable. Changing it makes every stored token unreadable, and each person has to reconnect their accounts.

If the key is unset, Flowblocks derives one from BETTER_AUTH_SECRET. A value of the wrong length is rejected rather than ignored, so a placeholder cannot silently fall back to the auth secret.

Sign-in

Sign-in is email and password, and every page requires it. A new account confirms its email with a six-digit code. Set RESEND_API_KEY and EMAIL_FROM to send it; without them, a development server prints the code in its log. To add social sign-in, set GITHUB_CLIENT_ID and GITHUB_CLIENT_SECRET, or reuse the Google client from the connectors.

ProviderCallback
GitHubhttp://localhost:3000/api/auth/callback/github
Googlehttp://localhost:3000/api/auth/callback/google

Connectors

A connector only appears as connectable once its client id and secret are set. Each provider has a setup guide: Google, Microsoft, Dropbox and every other provider. Restart the server after changing them.

Trying it without a model

Set AGENT_DEMO=true to skip the model. The Agent step then shapes the message and calls a tool on a connected step, so a local preview spends nothing.

On this page

RequirementsQuick previewFull setupInstallGenerate the secretsPoint at your databaseAdd a model keyStartThe encryption keySign-inConnectorsTrying it without a model