To configure flo, you will need to set some environment variables, There is file called .env at the root directory for our main repo.
When you execute the tools/deploy.sh script in the Docker installation tutorial, it will produce these values.

Environment Variables

VariableDescriptionDefault ValueExample
FLO_CONFIG_PATHOptional parameter for specifying the path to store PGLite database and local settings.~/.flo
FLO_CLOUD_AUTH_ENABLEDTurn off the utilization of FLO oauth2 applicationsfalse
FLO_DB_TYPEThe type of database to use. POSTGRES for external PostgreSQL, PGLITE for embedded database. Note: SQLITE3 is deprecated and will be automatically migrated to PGLITE.POSTGRES
FLO_EXECUTION_MODEYou can choose between ‘SANDBOX_PROCESS’, ‘UNSANDBOXED’, ‘SANDBOX_CODE_ONLY’, ‘SANDBOX_CODE_AND_PROCESS’ as possible values. If you decide to change this, make sure to carefully read https://docs.flo.andaihub.ai/install/architecture/workersUNSANDBOXED
FLO_WORKER_CONCURRENCYThe number of different scheduled worker jobs can be processed in same time5
FLO_AGENTS_WORKER_CONCURRENCYThe number of different agents can be processed in same time10
FLO_ENCRYPTION_KEY❗️ Encryption key used for connections is a 32-character (16 bytes) hexadecimal key. You can generate one using the following command: openssl rand -hex 16.None
FLO_EXECUTION_DATA_RETENTION_DAYSThe number of days to retain execution data, logs and events.30
FLO_FRONTEND_URL❗️ Url that will be used to specify redirect url and webhook url.
FLO_INTERNAL_URL(BETA) Used to specify the SSO authentication URL.Nonehttps://demo.flo.andaihub.ai/api
FLO_JWT_SECRET❗️ Encryption key used for generating JWT tokens is a 32-character hexadecimal key. You can generate one using the following command: openssl rand -hex 32.Nonehttps://demo.flo.andaihub.ai
FLO_QUEUE_UI_ENABLEDEnable the queue UI (only works with redis)true
FLO_QUEUE_UI_USERNAMEThe username for the queue UI. This is required if FLO_QUEUE_UI_ENABLED is set to true.None
FLO_QUEUE_UI_PASSWORDThe password for the queue UI. This is required if FLO_QUEUE_UI_ENABLED is set to true.None
FLO_REDIS_FAILED_JOB_RETENTION_DAYSThe number of days to retain failed jobs in Redis.30
FLO_REDIS_FAILED_JOB_RETENTION_MAX_COUNTThe maximum number of failed jobs to retain in Redis.2000
FLO_TRIGGER_DEFAULT_POLL_INTERVALHow many minutes before the system checks for new data updates for hubs with scheduled triggers, such as new Google Contacts.5
FLO_PIECES_SOURCEFLO_PIECES_SOURCE: FILE for local development, DB for database. You can find more information about it in Setting Hub Source section.CLOUD_AND_DB
FLO_PIECES_SYNC_MODEFLO_PIECES_SYNC_MODE: None for no metadata syncing / ‘OFFICIAL_AUTO’ for automatic syncing for hubs metadata from cloudOFFICIAL_AUTO
FLO_POSTGRES_DATABASE❗️ The name of the PostgreSQL databaseNone
FLO_POSTGRES_HOST❗️ The hostname or IP address of the PostgreSQL serverNone
FLO_POSTGRES_PASSWORD❗️ The password for the PostgreSQL, you can generate a 32-character hexadecimal key using the following command: openssl rand -hex 32.None
FLO_POSTGRES_PORT❗️ The port number for the PostgreSQL serverNone
FLO_POSTGRES_USERNAME❗️ The username for the PostgreSQL userNone
FLO_POSTGRES_USE_SSLUse SSL to connect the postgres databasefalse
FLO_POSTGRES_SSL_CAUse SSL Certificate to connect to the postgres database
FLO_POSTGRES_URLAlternatively, you can specify only the connection string (e.g postgres://user:password@host:5432/database) instead of providing the database, host, port, username, and password.None
FLO_POSTGRES_POOL_SIZEMaximum number of clients the pool should contain for the PostgreSQL databaseNone
FLO_POSTGRES_IDLE_TIMEOUT_MSSets the idle timout pool for your PostgreSQL30000
FLO_REDIS_TYPEWhere to spin redis instance, either in memory (MEMORY) or in a dedicated instance (STANDALONE), or in a sentinel instance (SENTINEL)STANDALONE
FLO_REDIS_URLIf a Redis connection URL is specified, all other Redis properties will be ignored.None
FLO_REDIS_USER❗️ Username to use when connect to redisNone
FLO_REDIS_PASSWORD❗️ Password to use when connect to redisNone
FLO_REDIS_HOST❗️ The hostname or IP address of the Redis serverNone
FLO_REDIS_PORT❗️ The port number for the Redis serverNone
FLO_REDIS_DBThe Redis database index to use0
FLO_REDIS_USE_SSLConnect to Redis with SSLfalse
FLO_REDIS_SSL_CA_FILEThe path to the CA file for the Redis server.None
FLO_REDIS_SENTINEL_HOSTSIf specified, this should be a comma-separated list of host:port pairs for Redis Sentinels. Make sure to set FLO_REDIS_CONNECTION_MODE to SENTINELNonesentinel-host-1:26379,sentinel-host-2:26379,sentinel-host-3:26379
FLO_REDIS_SENTINEL_NAMEThe name of the master node monitored by the sentinels.Nonesentinel-host-1
FLO_REDIS_SENTINEL_ROLEThe role to connect to, either master or slave.Nonemaster
FLO_TRIGGER_TIMEOUT_SECONDSMaximum allowed runtime for a trigger to perform polling in seconds60
FLO_FLOW_TIMEOUT_SECONDSMaximum allowed runtime for a flow to run in seconds600
FLO_SANDBOX_MEMORY_LIMITThe maximum amount of memory (in kilobytes) that a single sandboxed engine process can use. Each engine process executes at most one execution at a time. This helps prevent runaway memory usage in custom code or hubs. If not set, the default is 1,048,576 KB (1,024 MB).10485761048576
FLO_SANDBOX_PROPAGATED_ENV_VARSEnvironment variables that will be propagated to the sandboxed code. If you are using it for hubs, we strongly suggests keeping everything in the authentication object to make sure it works across AP instances.None
FLO_TELEMETRY_ENABLEDCollect telemetry information.true
FLO_TEMPLATES_SOURCE_URLThis is the endpoint we query for templates, remove it and templates will be removed from UIhttps://cloud.flo.andaihub.ai/api/v1/templates
FLO_WEBHOOK_TIMEOUT_SECONDSThe default timeout for webhooks. The maximum allowed is 15 minutes. Please note that Cloudflare limits it to 30 seconds. If you are using a reverse proxy for SSL, make sure it’s configured correctly.30
FLO_TRIGGER_FAILURE_THRESHOLDThe maximum number of consecutive trigger failures is 576 by default, which is equivalent to approximately 2 days.30
FLO_PROJECT_RATE_LIMITER_ENABLEDEnforce rate limits and prevent excessive usage by a single project.true
FLO_MAX_CONCURRENT_JOBS_PER_PROJECTThe maximum number of active runs a project can have. This is used to enforce rate limits and prevent excessive usage by a single project.100
FLO_S3_ACCESS_KEY_IDThe access key ID for your S3-compatible storage service. Not required if FLO_S3_USE_IRSA is true.None
FLO_S3_SECRET_ACCESS_KEYThe secret access key for your S3-compatible storage service. Not required if FLO_S3_USE_IRSA is true.None
FLO_S3_BUCKETThe name of the S3 bucket to use for file storage.None
FLO_S3_ENDPOINTThe endpoint URL for your S3-compatible storage service. Not required if AWS_ENDPOINT_URL is set.Nonehttps://s3.amazonaws.com
FLO_S3_REGIONThe region where your S3 bucket is located. Not required if AWS_REGION is set.Noneus-east-1
FLO_S3_USE_SIGNED_URLSIt is used to route traffic to S3 directly. It should be enabled if the S3 bucket is public.None
FLO_S3_USE_IRSAUse IAM Role for Service Accounts (IRSA) to connect to S3. When true, FLO_S3_ACCESS_KEY_ID and FLO_S3_ACCESS_KEY_ID are not required.Nonetrue
FLO_SMTP_HOSTThe host name for the SMTP server that flo uses to send emailsNonemail.example.com
FLO_SMTP_PORTThe port number for the SMTP server that flo uses to send emailsNone587
FLO_SMTP_USERNAMEThe user name for the SMTP server that flo uses to send emailsNonetest@mail.example.com
FLO_SMTP_PASSWORDThe password for the SMTP server that flo uses to send emailsNonesecret1234
FLO_SMTP_SENDER_EMAILThe email address from which flo sends emails.Nonetest@mail.example.com
FLO_SMTP_SENDER_NAMEThe sender name flo uses to send emails.
FLO_MAX_FILE_SIZE_MBThe maximum allowed file size in megabytes for uploads including logs of flow runs. If logs exceed this size, they will be truncated which may cause flow execution issues.1010
FLO_FILE_STORAGE_LOCATIONThe location to store files. Possible values are DB for storing files in the database or S3 for storing files in an S3-compatible storage service.DB
FLO_PAUSED_FLOW_TIMEOUT_DAYSThe maximum allowed pause duration in days for a paused flow, please note it can not exceed FLO_EXECUTION_DATA_RETENTION_DAYS30
FLO_MAX_RECORDS_PER_TABLEThe maximum allowed number of records per table1000010000
FLO_MAX_FIELDS_PER_TABLEThe maximum allowed number of fields per table100100
FLO_MAX_TABLES_PER_PROJECTThe maximum allowed number of tables per project2020
FLO_MAX_MCPS_PER_PROJECTThe maximum allowed number of mcp per project2020
FLO_ENABLE_FLOW_ON_PUBLISHWhether publishing a new flow version should automatically enable the flowtruefalse
FLO_ISSUE_ARCHIVE_DAYSControls the automatic archival of issues in the system. Issues that have not been updated for this many days will be automatically moved to an archived state.141
FLO_LOAD_TRANSLATIONS_FOR_DEV_PIECESLoad translations for dev hubs (configured via FLO_DEV_HUBS). When disabled, dev hubs are loaded without translations. This only affects development mode.falsetrue
FLO_APP_TITLEInitial title shown in the browser tab while loading the appFLOFLO
FLO_FAVICON_URLInitial favicon shown in the browser tab while loading the apphttps://cdn.andaihub.ai/brand/favicon.icohttps://cdn.andaihub.ai/brand/favicon.ico
The frontend URL is essential for webhooks and app triggers to work. It must be accessible to third parties to send data.

Setting Webhook (Frontend URL):

The default URL is set to the machine’s IP address. To ensure proper operation, ensure that this address is accessible or specify an FLO_FRONTEND_URL environment variable. One possible solution for this is using a service like ngrok (https://ngrok.com/), which can be used to expose the frontend port (4200) to the internet.

Redis Configuration

Set the FLO_REDIS_URL environment variable to the connection URL of your Redis server. Please note that if a Redis connection URL is specified, all other Redis properties will be ignored.
If you don’t have the Redis URL, you can use the following command to get it. You can use the following variables:
  • REDIS_USER: The username to use when connecting to Redis.
  • REDIS_PASSWORD: The password to use when connecting to Redis.
  • REDIS_HOST: The hostname or IP address of the Redis server.
  • REDIS_PORT: The port number for the Redis server.
  • REDIS_DB: The Redis database index to use.
  • REDIS_USE_SSL: Connect to Redis with SSL.
If you are using Redis Sentinel, you can set the following environment variables:
  • FLO_REDIS_TYPE: Set this to SENTINEL.
  • FLO_REDIS_SENTINEL_HOSTS: A comma-separated list of host:port pairs for Redis Sentinels. When set, all other Redis properties will be ignored.
  • FLO_REDIS_SENTINEL_NAME: The name of the master node monitored by the sentinels.
  • FLO_REDIS_SENTINEL_ROLE: The role to connect to, either master or slave.
  • FLO_REDIS_PASSWORD: The password to use when connecting to Redis.
  • FLO_REDIS_USE_SSL: Connect to Redis with SSL.
  • FLO_REDIS_SSL_CA_FILE: The path to the CA file for the Redis server.

SMTP Configuration

SMTP can be configured both from the platform admin screen and through environment variables. The enviroment variables are only used if the platform admin screen has no email configuration entered. FLO will only use the configuration from the environment variables if FLO_SMTP_HOST, FLO_SMTP_PORT, FLO_SMTP_USERNAME and FLO_SMTP_PASSWORD all have a value set. TLS is supported.