What is a FlowApp?
A FlowApp is a self-contained plugin that provides:- Actions: Operations that agents can perform (e.g., “Book a Meeting”, “Send Email”)
- Data Fetchers: Dynamic dropdown options for action inputs (e.g., fetch list of event types)
- Schema Definitions: JSON Schema files that define input validation and UI rendering
- Authentication: Integration with the admin dashboard for credential management
Architecture overview
FlowApps follow a structured architecture:Core interfaces
Discovery and initialization
TheFlowAppManager automatically discovers all FlowApps at startup using reflection:
FlowApps can have constructor dependencies like
IHttpClientFactory or ILogger<T> - they are resolved automatically via dependency injection.Execution pipeline
When an agent executes a FlowApp action, the following pipeline runs:1
Template resolution
Scriban templates in inputs are resolved:
2
Schema validation
Resolved inputs are validated against the JSON Schema:
3
Action execution
The action’s
ExecuteAsync method is invoked:4
Output routing
The result’s
OutputPortKey determines the next node in the flow:Authentication and integrations
FlowApps can require authentication credentials managed through the admin dashboard:IqraInfrastructure/Managers/FlowApp/Apps/CalCom/CalComApp.cs:14
IntegrationType is set:
- Admins configure credentials in the dashboard
- Credentials are encrypted at rest
ExecuteAsyncreceives decrypted credentials via theintegrationparameter
Permissions and feature flags
FlowApps support runtime permissions managed via the database:- App-level: Disable entire integration
- Action-level: Disable specific actions
- Fetcher-level: Disable data sources
IqraInfrastructure/Managers/FlowApp/FlowAppManager.cs:254-263
Next steps
Creating FlowApps
Step-by-step guide to building your first FlowApp
Schema definition
Learn how to define JSON schemas for action inputs
Examples
Explore real-world FlowApp implementations