Getting Started
Flowctl uses PostgreSQL as its database. This is the only external dependency. Everything else is included in the binary.
Quick Start
Section titled “Quick Start”For a quick setup, you can use the provided docker-compose.yml file. Alternatively, you can set up flowctl manually with the following steps.
-
Download the binary
Download the latest release for your platform from GitHub Releases.
-
Configure flowctl
Terminal window flowctl --new-configThis will generate a default
config.tomlfile in the current directory. Customize it if required. Create the flows directory as specified inflows_directoryinconfig.toml. -
DB migration
Terminal window flowctl installThis will perform DB migrations. It is safe to run this multiple times.
-
Start flowctl
Terminal window flowctl startThis will start the server and the background workers. The application will be available at http://localhost:7000. This will use the
config.tomlin the current working directory by default. You can pass--configflag to use a different config. -
Login
Use the admin credentials you configured in
config.toml.
Configuration
Section titled “Configuration”The config.toml file controls all aspects of flowctl’s behavior. Here’s a comprehensive guide to the available settings:
Application Settings
Section titled “Application Settings”[app] admin_username = "flowctl_admin" admin_password = "your_secure_password" flows_directory = "flows" root_url = "http://localhost:7000" address = ":7000" use_tls = false http_tls_cert = "server_cert.pem" http_tls_key = "server_key.pem" max_file_upload_size = 104857600admin_username(required): Admin user account username.admin_password(required): Admin user account password. Change the default password for security.root_url(required): The base URL where flowctl is accessible. Update this if running behind a proxy or on a different port.address(required): Address for the server to listen on (default::7000listens on all interfaces).flows_directory(required): Directory path where flow definitions are stored. Can be relative or absolute.use_tls(optional): Enable HTTPS (default:false).http_tls_cert(required ifuse_tlsis true): Path to TLS certificate file.http_tls_key(required ifuse_tlsis true): Path to TLS key file.max_file_upload_size(required): Maximum file upload size in bytes (default: 104857600 = 100MB).
Database Settings
Section titled “Database Settings”[db] host = "127.0.0.1" port = 5432 dbname = "flowctl" user = "flowctl" password = "flowctl" sslmode = "" sslcert = "" sslkey = "" sslrootcert = "" # dsn = ""dsn(optional): Complete PostgreSQL connection string. If set, overrides all other database settings.host(required unlessdsnis set): PostgreSQL server hostname or IP address.port(required unlessdsnis set): PostgreSQL server port (default:5432).dbname(required unlessdsnis set): Name of the database to use.user(required unlessdsnis set): Database authentication username.password(required unlessdsnis set): Database authentication password.sslmode(optional): Postgres SSL mode (disable,allow,prefer,require,verify-ca,verify-full). Default:disable.sslcert/sslkey/sslrootcert(optional): Paths to SSL certificate, key, and root certificate respectively.
Keystore Configuration
Section titled “Keystore Configuration”[keystore] keeper_url = "base64key://..."keeper_url(required): The keystore manages encryption keys for sensitive data. Uses a URI scheme to specify the storage backend. This uses the gocloud package which supports multiple KMS backends. The default config uses a local encryption key.
Scheduler Settings
Section titled “Scheduler Settings”[scheduler] workers = 20 cron_sync_interval = "5m0s" flow_execution_timeout = "1h"workers(required): Number of concurrent workers for executing flows (default: number of CPU threads).cron_sync_interval(required): How often to sync scheduled flows from the database (default:5m0s).flow_execution_timeout(required): Maximum duration for flow execution before termination (default:1h).
Logger Configuration
Section titled “Logger Configuration”[logger] backend = "file" log_directory = "/var/log/flowctl" max_size_bytes = 0 retention_time = "0s" scan_interval = "1h"backend(required): Log storage backend. Currently onlyfileis supported.log_directory(required): Directory for log files when using file backend. This directory should exist.max_size_bytes(required): Maximum size per log file in bytes (0 = unlimited).retention_time(required): How long to keep log files (0 = unlimited). Format: duration string (e.g.,24h,7d).scan_interval(required): Interval between scans for the log manager to delete / manage logs.
Email Notifications (SMTP)
Section titled “Email Notifications (SMTP)”[messengers.email] enabled = true host = "smtp.example.com" port = 587 username = "username" password = "password" from_name = "Flowctl Notifications" max_conns = 10 ssl = "starttls"Configure SMTP settings to enable email notifications for flow events. Email notifications are required for the notification feature to work.
enabled(optional): Enable or disable email notifications (default:false).host(required): SMTP server hostname.port(required): SMTP server port.username(optional): SMTP authentication username.password(optional): SMTP authentication password.from_address(required): Email address that notifications will be sent from.from_name(optional): Display name for the sender.max_conns(required): Maximum number of concurrent SMTP connections (default:10).ssl(required): SSL/TLS mode -none,tls(implicit TLS), orstarttls(explicit TLS).
OIDC Authentication
Section titled “OIDC Authentication”[[oidc]] name = "oidc" client_id = "your-client-id" client_secret = "your-client-secret" issuer = "https://your-oidc-provider.com/" auth_url = "" token_url = "" redirect_url = "" label = "Sign in with OIDC"Configure OpenID Connect for single sign-on. Multiple OIDC providers can be configured by adding additional [[oidc]] sections:
name(required): Unique identifier for the OIDC provider.client_id(required): OAuth2 client ID from your OIDC provider.client_secret(required): OAuth2 client secret.issuer(required): OIDC provider’s issuer URL.auth_url(optional): Authorization URL of the OIDC provider.token_url(optional): Token URL of the OIDC provider.redirect_url(optional): Callback URL for OIDC authentication.label(optional): Label for the SSO button.
Metrics
Section titled “Metrics”[metrics] enabled = true path = "/metrics"Export Prometheus metrics
enabled(optional): Enable or disable metrics export (default:false).path(optional): URL path where metrics will be exposed (default:/metrics).
Next Steps
Section titled “Next Steps”- Learn how to create your first flow
- Configure executors and nodes