Skip to main content

Server

The Flow server is the central component to the workflow system. It receives workflows requests, inputs, manages processors, and more. The Flow server is written in Go and all interaction occurs over GRPC.

Datastore

Flow uses PostgreSQL for backend data storage for items such as user accounts, workflow definitions, output metadata and more.

API

At the core of the Flow server is the API. The API is defined using protobufs and all interaction that happens, from the CLI to a third party processor, happens over GRPC to the API.

Authentication

Flow uses authentication to verify a user before accepting a workflow. Upon first start, the Flow server will create an admin account to administer the system.

Token

For all user authentication a time based token is generated upon login. This token is used for all communication between the client and Flow server.

API Tokens

To enable third party integrations you can also generate API tokens. API tokens are bound to the user account that created it and do not expire. API tokens also assume the identity of the bound user and can do anything that the user is authorized to do.

Service Tokens

Service tokens are designed to be used by processors. They can only be generated by an admin and have a global scope. However, they can only access workflow related API functions such as registering as a processor, receiving workflows, and managing input and output. They cannot do any other function including creating workflows.

Namespaces

Flow is intended to a be a multi-tenant workflow engine. All users of the system have a namespace that contains their workflows. Processors can also optionally be scoped to the namespace level to have user based workflow processing.