Documentation Index
Fetch the complete documentation index at: https://docs.flowx.ai/llms.txt
Use this file to discover all available pages before exploring further.
The File Gateway lets workflows exchange files with external storage systems (FTP, SFTP, S3, Azure Blob) and start processes when new files land in a watched location.
Dependencies
Before setting up the File Gateway, ensure you have the following dependencies in place:- MongoDB for storing file-trigger definitions and poll state
- Kafka for publishing process start events
- Keycloak (or compatible OAuth2 provider) for authentication and authorization
- SpiceDB for fine-grained, workspace-level authorization
- Document service for storing ingested and generated files
- File storage targets — the FTP, SFTP, S3, or Azure Blob systems you connect to (credentials are tenant-supplied per connection, not set as service env vars)
Infrastructure prerequisites
| Component | Description |
|---|---|
| MongoDB | Stores file_triggers, seen_file_cursors, failed_files, poll_leases collections (shares the runtime MongoDB instance) |
| Kafka | Message broker for triggering process starts |
| Keycloak | Identity provider for service authentication |
| SpiceDB | Authorization service for workspace validation |
| Document | Receives uploaded files via the document service internal API |
Configuration
Authorization configuration
Set the following environment variables to connect to your identity management platform:| Environment Variable | Description | Default Value |
|---|---|---|
SECURITY_TYPE | Security type | oauth2 |
SECURITY_OAUTH2_BASE_SERVER_URL | Base URL of the OAuth2/OIDC server | |
SECURITY_OAUTH2_REALM | OAuth2 realm name | |
SECURITY_OAUTH2_CLIENT_CLIENT_ID | Client ID for token introspection | |
SECURITY_OAUTH2_CLIENT_CLIENT_SECRET | Client secret for token introspection | |
SECURITY_OAUTH2_SERVICE_ACCOUNT_ADMIN_CLIENT_ID | Service account client ID | flowx-file-gateway-sa |
SECURITY_OAUTH2_SERVICE_ACCOUNT_ADMIN_CLIENT_SECRET | Service account client secret |
MongoDB configuration
The File Gateway uses the runtime MongoDB instance (the same one used by the Email Gateway) to store file-trigger definitions and polling state.| Environment Variable | Description | Default Value |
|---|---|---|
SPRING_DATA_MONGODB_URI | MongoDB connection URI | - |
Kafka configuration
The File Gateway publishes a process-start event when a watched location receives a new file (a file trigger).Core Kafka settings
| Environment Variable | Description | Default Value |
|---|---|---|
SPRING_KAFKA_BOOTSTRAP_SERVERS | Address of the Kafka server(s) | localhost:9092 |
SPRING_KAFKA_SECURITY_PROTOCOL | Security protocol for Kafka connections | PLAINTEXT |
OAuth authentication (when using SASL_PLAINTEXT)
| Environment Variable | Description | Default Value |
|---|---|---|
KAFKA_OAUTH_CLIENT_ID | OAuth client ID | kafka |
KAFKA_OAUTH_CLIENT_SECRET | OAuth client secret | kafka-secret |
KAFKA_OAUTH_TOKEN_ENDPOINT_URI | OAuth token endpoint | kafka.auth.localhost |
When using the
kafka-auth profile, the security protocol will automatically be set to SASL_PLAINTEXT and the SASL mechanism will be set to OAUTHBEARER.Kafka topics
| Environment Variable | Description | Default Value |
|---|---|---|
KAFKA_TOPIC_PROCESS_START_OUT | Topic for starting a process when a watched file arrives | ai.flowx.core.trigger.start-for-event.process.v1 |
CAS lib configuration (SpiceDB)
| Environment Variable | Description | Default Value |
|---|---|---|
FLOWX_SPICEDB_HOST | SpiceDB hostname | spicedb |
FLOWX_SPICEDB_PORT | SpiceDB gRPC port | 50051 |
FLOWX_SPICEDB_TOKEN | SpiceDB authentication token | - |
FLOWX_LIB_CASCLIENT_RUNTIME_IMPLEMENTATION | Runtime authorization backend used by the CAS client. Keep the default unless instructed by FlowX. | CUSTOM |
Service communication
The File Gateway communicates with the following FlowX services:| Environment Variable | Description | Default Value |
|---|---|---|
FLOWX_LIB_SECURITY_SERVICES_ORGANIZATIONMANAGER_BASEURL | Organization Manager base URL | http://organization-manager:80 |
FLOWX_LIB_CASCLIENT_SERVICES_AUTHORIZATIONSYSTEM_BASEURL | Authorization System base URL | http://authorization-system:80 |
FLOWX_DOCUMENTPLUGIN_BASEURL | Document Plugin base URL used to store ingested files | http://document-plugin:80 |
Logging configuration
| Environment Variable | Description | Default Value |
|---|---|---|
LOGGING_LEVEL_ROOT | Root logging level | INFO |
LOGGING_LEVEL_APP | Application-specific log level | INFO |
File storage connections
File storage targets (FTP, SFTP, S3, Azure Blob) are not configured through service environment variables. Each connection — including its host, path, and credentials — is defined per workspace in the FlowX Designer as a File Storage data source. Credentials are tenant-supplied and stored securely; the File Gateway never uses pod identity, IAM roles, or managed identities to reach a customer’s storage. Supported authentication methods:| Protocol | Authentication |
|---|---|
| FTP / FTPS | Username + password |
| SFTP | Username + password, or private key |
| S3 | Access key + secret |
| Azure Blob | Shared key (access key) |
Secrets management
| Secret Name | Description |
|---|---|
SPRING_DATA_MONGODB_URI | MongoDB connection URI (contains credentials) |
SECURITY_OAUTH2_SERVICE_ACCOUNT_ADMIN_CLIENT_SECRET | Keycloak service account secret |
FLOWX_SPICEDB_TOKEN | SpiceDB authentication token |
KAFKA_OAUTH_CLIENT_SECRET | Kafka OAuth client secret (if using OAuth) |
Deployment
Helm values example
The File Gateway makes outbound connections to customer-managed FTP/SFTP/S3/Azure Blob endpoints. Ensure egress network policies allow traffic to those destinations.
Verify your setup
The File Gateway pod is running and healthy:
kubectl get pods -l app=file-gatewayThe health endpoint returns HTTP 200:
curl http://file-gateway:8080/actuator/healthMongoDB collections appear (
file_triggers, seen_file_cursors, failed_files, poll_leases) with the expected indexesSpiceDB connection is established — check pod logs for successful CAS client initialization
Troubleshooting
Files are not picked up from a watched location
Files are not picked up from a watched location
Solutions:
- Confirm the File Storage data source and file trigger are configured and toggled ON in the Designer
- Verify the connection credentials and path in the data source
- Check egress network policies allow the File Gateway to reach the storage host
- Review pod logs for poll or authentication errors
SpiceDB connection failures
SpiceDB connection failures
Solutions:
- Verify SpiceDB is running and reachable at the configured host and port
- Check that the SpiceDB token is correct
- Ensure network policies allow gRPC traffic to SpiceDB on port
50051
Processes not starting from file triggers
Processes not starting from file triggers
Solutions:
- Verify Kafka bootstrap servers are reachable
- Check that the
ai.flowx.core.trigger.start-for-event.process.v1topic exists - Confirm the bound Message Start Event and active build for the process
Related resources
SpiceDB Configuration
Fine-grained authorization setup
Kafka Authentication
Configure Kafka security and authentication
Email Gateway setup
The email-trigger gateway this service mirrors
IAM Configuration
Identity and access management setup

