FlowX.AI is a comprehensive, event-driven platform designed to accelerate digital transformation by enabling rapid development of web and mobile applications without extensive coding. The architecture consists of several interconnected components that work together to provide a seamless experience for both developers and end users.
The FlowX.AI Designer is a collaborative, no-code/full-code web-based application development environment that serves as the central workspace for creating and managing processes, UIs, integrations, and other application components.Key capabilities:
Design processes using industry-standard BPMN 2.0 notation
Configure user interfaces for both generated and custom components
Define business rules and validations via DMN or MVEL scripting
Create visual integration connectors to external systems
The FlowX Designer is a web application that runs in the browser, residing outside a FlowX deployment, serving as the administrative interface for the entire platform.
FlowX Designer
The no-code/full-code capabilities allow both business users (analysts, product managers) and experienced developers to collaboratively build applications, reducing the typical development cycle from months to days.
FlowX.AI is built on a suite of specialized microservices that provide the foundation for the platform’s capabilities. These microservices communicate through an event-driven architecture, primarily using Kafka for messaging, enabling scalability, resilience, and extensibility:
The FlowX.AI Engine is the core orchestration component of the platform, serving as the central nervous system that executes process definitions, manages process instances, and coordinates communications between all platform components.
Key responsibilities:
Executing business processes based on BPMN 2.0 definitions
Creating and managing process instances throughout their lifecycle
Coordinating real-time interactions between users, systems, and data
Orchestrating the event-driven communication across the platform
Dynamically generating and delivering UI components based on process state
Handling integration with external systems via Kafka messaging
The Engine is built on Kafka, providing high-throughput, low-latency event processing. This architecture enables FlowX.AI to maintain a responsive user experience (0.2s response time) even when integrating with slow legacy systems by buffering load and managing asynchronous communication.Technical infrastructure:
PostgreSQL database for process definitions and instance data
MongoDB for runtime build information
Redis for caching process definitions and improving performance
Multiple script engine support including Python, JavaScript, and MVEL
Elasticsearch integration for efficient data indexing and searching
The Engine works closely with the Advancing Controller to ensure efficient process instance progression, particularly in scaled environments.
The Application Manager is responsible for managing the application lifecycle, including:
Creating, updating, and deleting applications and their resources
Managing versions, manifests, and configurations
Serving as a proxy for front-end resource requests
Handling application builds and deployments
This microservice maintains a comprehensive data model for applications, including all their components, versions, and dependencies, ensuring consistency across environments.
The Integration Designer provides a visual interface for creating and managing integrations with external systems:
Define REST API endpoints and authentication methods
Create and configure integration workflows
Map data between FlowX.AI processes and external systems
Test and monitor integrations in real-time
This microservice simplifies the complex task of connecting to various enterprise systems, allowing for secure, scalable, and maintainable integrations without extensive coding.
Store and serve localization content and translations
Organize media assets and reference data
Centralize content that needs to be shared across applications
This Java-based service uses MongoDB for flexible storage of unstructured content, making it the go-to place for all shared taxonomies and content definitions.
The Scheduler microservice handles time-based operations within processes:
Set process expiration dates and reminders
Trigger time-based events and activities
Manage recurring tasks and scheduled operations
Support delayed actions and follow-ups
It communicates with the FlowX Engine through Kafka, creating time-based events that can be processed when needed, similar to a reminder application for business processes.
The Data Search microservice enables search capabilities across the platform, allowing users to find data within process instances:
Searching for data across processes and applications using indexed keys
Indexing and retrieving information based on specific criteria
Supporting complex queries with filtering by process status, date ranges, and more
Enabling cross-application data discovery and access
This service leverages Elasticsearch to execute efficient searches. It works by indexing process data automatically when process status changes or at specific trigger points, making the information searchable without impacting performance. The service communicates with the FlowX Engine through Kafka topics, receiving search requests and returning results that can be displayed in applications.
The Events Gateway microservice centralizes and manages the real-time communication between backend services and frontend clients through Server-Sent Events (SSE):
Processes events from various sources like the FlowX Engine and Task Management
Routes and distributes messages to appropriate components based on their destination
Publishes events to frontend renderers enabling real-time UI updates
Integrates with Redis for efficient event distribution and ensuring messages reach the correct instance with the SSE connection
This component is crucial for maintaining the real-time, responsive nature of FlowX applications. It ensures that all UI updates, notifications, and system changes are immediately reflected across the platform without requiring page refreshes or manual polling. The Events Gateway reads messages from Kafka topics and distributes them appropriately, enabling features like instant form rendering when reaching user tasks or displaying real-time configuration errors.
The Advancing Controller is a critical supporting service for the FlowX.AI Engine that enhances process execution efficiency, particularly in scaled deployments:
Manages the distribution of workload across Engine instances
Facilitates even redistribution during scale-up and scale-down scenarios
Utilizes database triggers in PostgreSQL or Oracle Database configurations
Prevents process instances from getting stuck if a worker pod fails
Performs cleanup tasks and monitors worker pod status
The Advancing Controller works in close coordination with the Engine to ensure uninterrupted process advancement. It must run concurrently with the Engine for optimal performance, particularly in production environments where reliability is crucial.
FlowX.AI recommends Keycloak or Azure AD (Entra) for identity and access management:
Create and manage users and credentials
Define groups and assign roles
Secure API access through token-based authentication
Integrate with existing identity providers
Every communication from client applications passes through a public entry point (API Gateway), which validates authentication tokens before allowing access to the platform. The system supports OAuth2 authentication with multiple configuration options for securing microservice communication.
FlowX.AI can connect to external systems through custom integrations called connectorsThese integrations can be developed using any technology stack, with the only requirement being a connection to Kafka. This flexibility allows for seamless integration with:
The FlowX.AI platform uses an event-driven architecture based on Kafka for asynchronous communication between components:
Process Initiation: Client applications initiate processes through the API Gateway
Event Processing: The FlowX Engine processes events and coordinates activities
Integration Orchestration: External system interactions are managed through integration workflows
UI Generation: Dynamic user interfaces are generated and delivered to client applications
Data Management: Process data is stored and managed throughout the execution lifecycle
This event-driven approach enables the platform to handle complex, long-running processes while maintaining responsiveness and scalability. Each microservice communicates through predefined Kafka topics following a consistent naming convention (e.g., ai.flowx.dev.core.trigger.advance.process.v1), allowing for loosely coupled but highly cohesive system architecture.
The platform includes comprehensive monitoring and health check capabilities:
Prometheus metrics export for performance monitoring
Kubernetes health probes for service availability
Database connection health checks
Kafka cluster health monitoring
These features ensure that the platform remains reliable and observable in production environments, with the ability to detect and resolve issues proactively.
FlowX.AI offers a comprehensive, event-driven platform for rapidly developing and deploying digital applications without extensive coding. Its microservices architecture, combined with industry-standard technologies and a user-friendly design environment, enables organizations to accelerate their digital transformation initiatives while maintaining flexibility, scalability, and integration with existing systems.
Last modified on July 24, 2025
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"FlowX.AI","description":"Comprehensive documentation for FlowX.AI, the AI-driven process automation platform.","colors":{"primary":"#fcb813","light":"#fcb813","dark":"#fcb813"},"logo":{"light":"https://mintcdn.com/flowxai/38fXEM0a7v86Lg2m/logo/light.png?fit=max\u0026auto=format\u0026n=38fXEM0a7v86Lg2m\u0026q=85\u0026s=d767c06cef433b0a02f40a1f4f785eab","dark":"https://mintcdn.com/flowxai/38fXEM0a7v86Lg2m/logo/dark.png?fit=max\u0026auto=format\u0026n=38fXEM0a7v86Lg2m\u0026q=85\u0026s=6b8b8c3e7abd17acf6be8bffce4e599d"},"favicon":"https://mintcdn.com/flowxai/VVxnbzjz7JuL1Ngt/favicon2.svg?fit=max\u0026auto=format\u0026n=VVxnbzjz7JuL1Ngt\u0026q=85\u0026s=ef6a780a1ed3894c7b276bcc7b3c6c69","appearance":{"default":"dark","strict":false},"background":{"decoration":"grid","color":{"light":"#f4f4f5","dark":"#0a0b0d"}},"navbar":{"links":[],"primary":{"type":"button","label":"Academy","href":"https://academy.flowx.ai/"}},"footer":{"socials":{"linkedin":"https://www.linkedin.com/company/flowxai","x":"https://x.com/FlowX_ai","youtube":"https://www.youtube.com/@FlowX_AI"},"links":[{"header":"Documentation","items":[{"label":"Introduction","href":"https://docs.flowx.ai/5.9/docs/introduction"},{"label":"Platform overview","href":"https://docs.flowx.ai/5.9/docs/platform-overview/flowx-architecture"},{"label":"Designer","href":"https://docs.flowx.ai/5.9/docs/flowx-designer/overview"},{"label":"AI Platform","href":"https://docs.flowx.ai/5.9/ai-platform/ai-in-flowx"},{"label":"Use the docs with AI","href":"https://docs.flowx.ai/5.9/docs/getting-started/using-flowx-docs-with-ai"},{"label":"Release notes","href":"https://docs.flowx.ai/release-notes/overview"}]},{"header":"Resources","items":[{"label":"FlowX.AI Academy","href":"https://academy.flowx.ai"},{"label":"Support","href":"https://flowxai.zendesk.com/"}]},{"header":"Company","items":[{"label":"About FlowX.AI","href":"https://www.flowx.ai/about"},{"label":"Contact us","href":"mailto:hello@flowx.ai"},{"label":"Careers","href":"https://apply.workable.com/flowxai"}]},{"header":"Legal","items":[{"label":"Privacy Policy","href":"https://www.flowx.ai/privacy-policy"},{"label":"Cookie Policy","href":"https://www.flowx.ai/cookie-policy"},{"label":"Terms and Conditions","href":"https://www.flowx.ai/terms-and-conditions"}]}]},"search":{"prompt":"Search the docs"},"seo":{"metatags":{"zd-site-verification":"94tteg5ir5of8gkb4twzh"}},"fonts":{"heading":{"family":"Sora"},"body":{"family":"Geist"}},"styling":{"eyebrows":"breadcrumbs","codeblocks":"dark","latex":true},"integrations":{"ga4":{"measurementId":"G-CGW0FVK9YM"}},"banner":{"content":"🚀 [See the latest FlowX.AI releases →](/release-notes/overview)","dismissible":true},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"metadata":{"timestamp":true},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"flowxai","hasAudioNarration":false,"actualSubdomain":"flowxai","customDomains":["docs.flowx.ai"],"gitSource":{"type":"github","owner":"flowx-ai","repo":"flowx-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"feedback":{"thumbs":true,"contextualFeedback":{"allowEmail":true},"agentFeedback":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"CONTEXTUAL_FEEDBACK":{"status":"ENABLED"},"CODE_SNIPPET_FEEDBACK":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6af493191b7090e5aeaa5423","clientVersion":"0.0.4111","searchFilterCounts":[{"language":"default","tag":"Documentation","count":800},{"language":"default","tag":"Building blocks","count":331},{"language":"default","tag":"Platform deep dive","count":267},{"language":"default","tag":"Setup guides","count":191},{"language":"default","tag":"UI Designer","count":140},{"language":"default","tag":"Release notes","count":137},{"language":"default","tag":"Release Notes","count":137},{"language":"default","tag":"Microservices","count":112},{"language":"default","tag":"Core extensions","count":107},{"language":"default","tag":"Nodes","count":88}],"searchSettings":{"isFiltersEnabled":true}},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":true,"enableAskAiSearchBar":true,"deflection":{"enabled":true,"type":"email","email":"learning.team@flowx.ai","showHelpButton":true}},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"privacy":{"consentBanner":{"enabled":true}},"googleFontsInlined":true},"customCss":[{"filePath":"custom.css","content":"/* cyrillic-ext */\n@font-face {\n font-family: 'Geist Mono';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/geistmono/v6/or3nQ6H-1_WfwkMZI_qYFrodmgPn.woff2) format('woff2');\n unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;\n}\n/* cyrillic */\n@font-face {\n font-family: 'Geist Mono';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/geistmono/v6/or3nQ6H-1_WfwkMZI_qYFrMdmgPn.woff2) format('woff2');\n unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;\n}\n/* symbols2 */\n@font-face {\n font-family: 'Geist Mono';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/geistmono/v6/or3nQ6H-1_WfwkMZI_qYFg08vz7ehw.woff2) format('woff2');\n unicode-range: U+2000-2001, U+2004-2008, U+200A, U+23B8-23BD, U+2500-259F;\n}\n/* vietnamese */\n@font-face {\n font-family: 'Geist Mono';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/geistmono/v6/or3nQ6H-1_WfwkMZI_qYFrgdmgPn.woff2) format('woff2');\n unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Geist Mono';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/geistmono/v6/or3nQ6H-1_WfwkMZI_qYFrkdmgPn.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Geist Mono';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/geistmono/v6/or3nQ6H-1_WfwkMZI_qYFrcdmg.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* cyrillic-ext */\n@font-face {\n font-family: 'Geist Mono';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/geistmono/v6/or3nQ6H-1_WfwkMZI_qYFrodmgPn.woff2) format('woff2');\n unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;\n}\n/* cyrillic */\n@font-face {\n font-family: 'Geist Mono';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/geistmono/v6/or3nQ6H-1_WfwkMZI_qYFrMdmgPn.woff2) format('woff2');\n unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;\n}\n/* symbols2 */\n@font-face {\n font-family: 'Geist Mono';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/geistmono/v6/or3nQ6H-1_WfwkMZI_qYFg08vz7ehw.woff2) format('woff2');\n unicode-range: U+2000-2001, U+2004-2008, U+200A, U+23B8-23BD, U+2500-259F;\n}\n/* vietnamese */\n@font-face {\n font-family: 'Geist Mono';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/geistmono/v6/or3nQ6H-1_WfwkMZI_qYFrgdmgPn.woff2) format('woff2');\n unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Geist Mono';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/geistmono/v6/or3nQ6H-1_WfwkMZI_qYFrkdmgPn.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Geist Mono';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/geistmono/v6/or3nQ6H-1_WfwkMZI_qYFrcdmg.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* cyrillic-ext */\n@font-face {\n font-family: 'Geist Mono';\n font-style: normal;\n font-weight: 600;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/geistmono/v6/or3nQ6H-1_WfwkMZI_qYFrodmgPn.woff2) format('woff2');\n unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;\n}\n/* cyrillic */\n@font-face {\n font-family: 'Geist Mono';\n font-style: normal;\n font-weight: 600;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/geistmono/v6/or3nQ6H-1_WfwkMZI_qYFrMdmgPn.woff2) format('woff2');\n unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;\n}\n/* symbols2 */\n@font-face {\n font-family: 'Geist Mono';\n font-style: normal;\n font-weight: 600;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/geistmono/v6/or3nQ6H-1_WfwkMZI_qYFg08vz7ehw.woff2) format('woff2');\n unicode-range: U+2000-2001, U+2004-2008, U+200A, U+23B8-23BD, U+2500-259F;\n}\n/* vietnamese */\n@font-face {\n font-family: 'Geist Mono';\n font-style: normal;\n font-weight: 600;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/geistmono/v6/or3nQ6H-1_WfwkMZI_qYFrgdmgPn.woff2) format('woff2');\n unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Geist Mono';\n font-style: normal;\n font-weight: 600;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/geistmono/v6/or3nQ6H-1_WfwkMZI_qYFrkdmgPn.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Geist Mono';\n font-style: normal;\n font-weight: 600;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/geistmono/v6/or3nQ6H-1_WfwkMZI_qYFrcdmg.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\ncode,pre,kbd,samp{font-family:\"Geist Mono\", ui-monospace, SFMono-Regular, Menlo, monospace}#topbar-cta-button{color:#131007!important}.label-version{display:inline-block;font-weight:bold;color:#ffffff;background-color:#007bff;padding:0.5px 15px;border-radius:12px;box-shadow:0 2px 4px rgba(0, 0, 0, 0.1);font-size:0.9em;text-transform:uppercase;letter-spacing:0.5px;margin-right:5px;transition:background-color 0.3s ease;text-decoration:none}.label-version:hover{background-color:#0056b3}#banner{background:linear-gradient(90deg, #0a0b0d 0%, #0e1013 55%, #2a2310 100%)!important;border-bottom:1px solid rgba(252, 184, 19, 0.30);backdrop-filter:saturate(120%)}#banner a{color:#fcb813!important;text-decoration-color:rgba(252, 184, 19, 0.55)!important;transition:opacity 0.2s ease}#banner a:hover{opacity:0.85}:root{--flowx-yellow-50: #fff8e7;--flowx-yellow-200: #ffdf92;--flowx-yellow-400: #ffc739;--flowx-yellow-500: #fcb813;--flowx-yellow-800: #8a5e00;--flowx-yellow-900: #6b4e08;--flowx-neutrals-50: #f7f8f9;--flowx-neutrals-100: #e3e8ed;--flowx-neutrals-200: #cbd1db;--flowx-neutrals-300: #a6b0be;--flowx-neutrals-400: #8390a2;--flowx-neutrals-500: #64748b;--flowx-neutrals-700: #475263;--flowx-neutrals-800: #2a313a;--flowx-neutrals-900: #1d232c;--flowx-blue-50: #e6f0fb;--flowx-blue-200: #8abbed;--flowx-blue-700: #004c99;--flowx-blue-900: #002d5b;--flowx-elevation-m: 0 8px 16px #1634621a}.cb-wrap{margin-top:32px}.cb-filters{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:24px}.cb-filters input{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.cb-filters label{cursor:pointer;user-select:none;font-size:12px;line-height:16px;font-weight:600;padding:8px 16px;border-radius:120px;border:1px solid var(--flowx-neutrals-200);color:var(--flowx-neutrals-500);background:transparent;transition:border-color 0.15s ease, background 0.15s ease, color 0.15s ease}.cb-filters label span{margin-left:6px;opacity:0.55;font-variant-numeric:tabular-nums}.cb-filters label:hover{border-color:var(--flowx-yellow-500);color:var(--flowx-neutrals-900)}.cb-filters input:checked+label{background:var(--flowx-yellow-500);border-color:var(--flowx-yellow-500);color:var(--flowx-neutrals-900)}.cb-filters input:focus-visible+label{outline:2px solid var(--flowx-yellow-500);outline-offset:2px}.dark .cb-filters label{border-color:var(--flowx-neutrals-700);color:var(--flowx-neutrals-400)}.dark .cb-filters label:hover{border-color:var(--flowx-yellow-400);color:var(--flowx-neutrals-50)}.dark .cb-filters input:checked+label{background:var(--flowx-yellow-500);border-color:var(--flowx-yellow-500);color:var(--flowx-neutrals-900)}.cb-grid{display:grid;grid-template-columns:repeat(3, minmax(0, 1fr));gap:16px}@media (max-width: 1024px){.cb-grid{grid-template-columns:repeat(2, minmax(0, 1fr))}}@media (max-width: 640px){.cb-grid{grid-template-columns:1fr}}.cb-wrap:has(#cb-cookbook:checked) .cb-card:not([data-f~=\"cookbook\"]),.cb-wrap:has(#cb-tutorial:checked) .cb-card:not([data-f~=\"tutorial\"]),.cb-wrap:has(#cb-guide:checked) .cb-card:not([data-f~=\"guide\"]),.cb-wrap:has(#cb-pattern:checked) .cb-card:not([data-f~=\"pattern\"]),.cb-wrap:has(#cb-docs:checked) .cb-card:not([data-f~=\"docs\"]),.cb-wrap:has(#cb-conv:checked) .cb-card:not([data-f~=\"conversational\"]),.cb-wrap:has(#cb-integr:checked) .cb-card:not([data-f~=\"integrations\"]),.cb-wrap:has(#cb-ui:checked) .cb-card:not([data-f~=\"ui\"]){display:none}.cb-card{position:relative;display:flex;flex-direction:column;gap:12px;padding:24px;border:1px solid var(--flowx-neutrals-100);border-radius:16px;background:transparent;text-decoration:none!important;transition:border-color 0.2s ease, transform 0.2s ease, box-shadow 0.2s ease}.cb-card::after{content:\"\\2192\";position:absolute;top:20px;right:24px;font-size:14px;line-height:22px;color:var(--flowx-neutrals-300);transition:color 0.2s ease, transform 0.2s ease}.cb-card:hover{transform:translateY(-2px);border-color:var(--flowx-yellow-500);box-shadow:var(--flowx-elevation-m)}.cb-card:hover::after{color:var(--flowx-neutrals-900);transform:translateX(4px)}.dark .cb-card{border-color:var(--flowx-neutrals-800)}.dark .cb-card:hover{border-color:var(--flowx-yellow-400);box-shadow:0 8px 16px rgba(0, 0, 0, 0.4)}.dark .cb-card:hover::after{color:var(--flowx-yellow-400)}@media (prefers-reduced-motion: reduce){.cb-card,.cb-card::after{transition:none}.cb-card:hover{transform:none}.cb-card:hover::after{transform:none}}.cb-tags{display:flex;flex-wrap:wrap;gap:6px;padding-right:24px}.cb-tag{font-size:10px;line-height:12px;font-weight:600;letter-spacing:0.05em;text-transform:uppercase;padding:4px 8px;border-radius:4px;background:var(--flowx-neutrals-50);color:var(--flowx-neutrals-500)}.cb-tag-tut{background:var(--flowx-yellow-50);color:var(--flowx-yellow-800)}.cb-tag-pat{background:var(--flowx-neutrals-900);color:#ffffff}.cb-tag-cook{background:var(--flowx-yellow-500);color:var(--flowx-neutrals-900)}.cb-tag-gui{background:var(--flowx-blue-50);color:var(--flowx-blue-700)}.dark .cb-tag{background:var(--flowx-neutrals-800);color:var(--flowx-neutrals-400)}.dark .cb-tag-tut{background:var(--flowx-yellow-900);color:var(--flowx-yellow-200)}.dark .cb-tag-pat{background:var(--flowx-neutrals-50);color:var(--flowx-neutrals-900)}.dark .cb-tag-cook{background:var(--flowx-yellow-500);color:var(--flowx-neutrals-900)}.dark .cb-tag-gui{background:var(--flowx-blue-900);color:var(--flowx-blue-200)}.cb-title{display:block;font-size:14px;line-height:22px;font-weight:600;letter-spacing:-0.01em;color:var(--flowx-neutrals-900)}.dark .cb-title{color:var(--flowx-neutrals-50)}.cb-desc{display:block;font-size:12px;line-height:18px;font-weight:400;color:var(--flowx-neutrals-500)}.dark .cb-desc{color:var(--flowx-neutrals-400)}.cb-foot{display:flex;flex-wrap:wrap;align-items:baseline;gap:16px;margin-top:40px;padding-top:24px;border-top:1px solid var(--flowx-neutrals-100);font-size:12px;line-height:16px}.dark .cb-foot{border-top-color:var(--flowx-neutrals-800)}.cb-foot span{color:var(--flowx-neutrals-400)}.dark .cb-foot span{color:var(--flowx-neutrals-500)}.cb-foot a{font-weight:600;text-decoration:none;color:var(--flowx-neutrals-900);border-bottom:1px solid var(--flowx-yellow-500);padding-bottom:1px}.dark .cb-foot a{color:var(--flowx-neutrals-50)}.cb-foot a:hover{color:var(--flowx-yellow-800)}.dark .cb-foot a:hover{color:var(--flowx-yellow-400)}#content-area:has(.fxh-hero) #header{display:none}main#content-container:has(.fxh-hero){max-width:none}#content-area:has(.fxh-hero){width:100%!important}#content-area:has(.fxh-hero) #content{max-width:none;margin-top:0}#content-area:has(.fxh-hero) #content div[class*=\"--page-padding\"]{--page-padding: 0px}#content-area:has(.fxh-hero) #content>:not(.fxh-hero){max-width:1360px;margin-left:auto;margin-right:auto}.fxh-hero{position:relative;text-align:center}@media (min-width: 1024px){.fxh-hero{margin-top:-2.5rem}}.fxh-hero__bg{position:sticky;top:0;z-index:0;height:100dvh;overflow:clip;border-radius:18px;background:#0a0b0d;border:1px solid rgba(255, 255, 255, 0.08)}.fxh-hero__bg::before{content:\"\";position:absolute;inset:0;background-image:linear-gradient(rgba(255, 255, 255, 0.045) 1px, transparent 1px),\n linear-gradient(90deg, rgba(255, 255, 255, 0.045) 1px, transparent 1px);background-size:56px 56px;-webkit-mask-image:radial-gradient(ellipse at 50% 0%, #000 25%, transparent 75%);mask-image:radial-gradient(ellipse at 50% 0%, #000 25%, transparent 75%);pointer-events:none}.fxh-hero__bg::after{content:\"\";position:absolute;top:-45%;left:25%;width:50%;height:90%;background:radial-gradient(closest-side, rgba(252, 184, 19, 0.10), transparent 70%);pointer-events:none}.fxh-hero__steps{position:relative;z-index:1;margin-top:-100dvh}.fxh-hero__step{position:relative;min-height:calc(100dvh - 9.5rem);display:grid;grid-template-columns:minmax(0, 1fr);align-content:center;padding:48px clamp(24px, 5vw, 56px) 96px}.fxh-hero__step:not(:first-child){min-height:72dvh;padding-top:48px;padding-bottom:48px}.fxh-hero--single .fxh-hero__bg{position:absolute;inset:0;height:auto;z-index:0}.fxh-hero--single .fxh-hero__steps{margin-top:0}.fxh-hero--single .fxh-hero__step{min-height:calc(100dvh - 9.5rem)}.fxh-hero--slim .fxh-hero__step{min-height:min(46dvh, 480px);padding-top:clamp(40px, 6vh, 64px);padding-bottom:clamp(40px, 6vh, 64px)}.fxh-step-title{display:block;font-family:\"Sora\", sans-serif;font-size:clamp(1.7rem, 3.4vw, 2.6rem);font-weight:700;letter-spacing:-0.02em;line-height:1.1;color:#f5f5f0;max-width:20ch;margin:0 auto clamp(18px, 3vh, 28px)}.fxh-vs{display:flex;flex-wrap:wrap;justify-content:center;gap:clamp(9px, 1.1vw, 14px);max-width:min(780px, 100%);margin:clamp(14px, 3vh, 30px) auto 0;padding:0;list-style:none}.fxh-vs li{display:flex;align-items:center;gap:12px;padding:11px clamp(18px, 1.6vw, 24px);border:1px solid rgba(255, 255, 255, 0.14);background:rgba(255, 255, 255, 0.035);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-radius:999px}.fxh-vs__no{font-family:\"Geist Mono\", ui-monospace, SFMono-Regular, Menlo, monospace;font-size:11px;color:rgba(255, 255, 255, 0.42)}.fxh-vs__name{font-family:\"Sora\", sans-serif;font-size:clamp(12.5px, 1.1vw, 15px);font-weight:600;letter-spacing:0.01em;color:rgba(255, 255, 255, 0.9)}.fxh-scroll{position:absolute;bottom:clamp(20px, 4vh, 40px);left:50%;transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;gap:8px;font-family:\"Geist Mono\", ui-monospace, SFMono-Regular, Menlo, monospace;font-size:10px;letter-spacing:0.3em;text-transform:uppercase;color:rgba(255, 255, 255, 0.42)}.fxh-scroll-line{width:1px;height:46px;background:linear-gradient(rgba(255, 255, 255, 0.45), transparent)}.fxh-eyebrow{font-family:\"Geist Mono\", ui-monospace, SFMono-Regular, Menlo, monospace;display:inline-flex;align-items:center;gap:12px;font-size:13px;font-weight:400;letter-spacing:0.22em;text-transform:uppercase;color:#a3a39a;margin-bottom:28px}.fxh-tick{display:inline-block;width:8px;height:8px;flex-shrink:0;background:#fcb813;animation:fxh-tick-pulse 2.6s ease-in-out infinite}@keyframes fxh-tick-pulse{0%,100%{opacity:1}50%{opacity:0.35}}.fxh-title{display:block;font-family:\"Sora\", sans-serif;font-weight:700;letter-spacing:-0.02em;line-height:1.08;max-width:920px;margin:0 auto clamp(20px, 3vh, 28px);text-wrap:balance}.fxh-line{display:block;font-size:clamp(1.7rem, 3.4vw, 2.7rem);color:#f5f5f0}.fxh-line--dim{color:rgba(244, 245, 243, 0.58);margin-top:0.06em}.fxh-amber{color:#fcb813}.fxh-sub{display:block;max-width:62ch;margin:0 auto clamp(20px, 3vh, 28px);font-size:15px;line-height:1.55;color:#b9b9b1}.fxh-ctas{display:flex;flex-wrap:wrap;justify-content:center;gap:12px;position:relative}.fxh-cta{display:inline-flex;align-items:center;justify-content:center;gap:8px;white-space:nowrap;padding:12px 22px;border-radius:10px;font-size:15px;font-weight:550;text-decoration:none!important;transition:background 0.2s ease, border-color 0.2s ease, color 0.2s ease}.fxh-cta--primary{background:#fcb813;color:#131007!important;font-weight:640}.fxh-cta--primary:hover{background:#ffc739}.fxh-cta--ghost{border:1px solid rgba(255, 255, 255, 0.16);color:#f4f5f3!important}.fxh-cta--ghost:hover{border-color:rgba(255, 255, 255, 0.42);background:rgba(255, 255, 255, 0.04)}.fxh-term{position:relative;width:min(680px, 100%);margin:clamp(24px, 4vh, 36px) auto clamp(22px, 3.5vh, 32px);text-align:left;border:1px solid rgba(255, 255, 255, 0.12);border-radius:18px;overflow:hidden;background:linear-gradient(180deg, rgba(255, 255, 255, 0.10) 0, rgba(255, 255, 255, 0.03) 20%, rgba(255, 255, 255, 0.01) 60%, rgba(255, 255, 255, 0.045) 100%),\n rgba(10, 11, 13, 0.91);box-shadow:0 24px 60px rgba(0, 0, 0, 0.5)}.fxh-term__bar{display:flex;align-items:center;gap:16px;padding:14px 22px;font-family:\"Geist Mono\", ui-monospace, SFMono-Regular, Menlo, monospace;font-size:13px;letter-spacing:0.06em;color:rgba(255, 255, 255, 0.62);border-bottom:1px solid rgba(255, 255, 255, 0.12)}.fxh-term__dots{display:inline-flex;gap:7px}.fxh-term__dots i{width:11px;height:11px;border-radius:50%;border:1px solid rgba(255, 255, 255, 0.12)}.fxh-term__body{display:flex;flex-direction:column;gap:14px;padding:24px 26px 26px;font-family:\"Geist Mono\", ui-monospace, SFMono-Regular, Menlo, monospace;font-size:14px}.fxh-term__body p{margin:0;color:rgba(255, 255, 255, 0.72)}.fxh-term__prompt{color:#fcb813;margin-right:8px}.fxh-caret{display:inline-block;width:9px;height:1.05em;margin-left:6px;vertical-align:text-bottom;background:rgba(252, 184, 19, 0.85);animation:fxh-caret-blink 1.1s steps(1) infinite}@keyframes fxh-caret-blink{50%{opacity:0}}.fxh-term__log{display:grid;gap:5px;align-content:start}.fxh-term__log:empty{display:none}.fxh-term__log .ln{display:flex;justify-content:space-between;gap:16px;font-size:12.5px;color:rgba(255, 255, 255, 0.58);opacity:0;transform:translateY(6px);animation:fxh-ln-in 0.45s cubic-bezier(0.16, 1, 0.3, 1) forwards}.fxh-term__log .ok{color:#fcb813;margin-right:8px}.fxh-term__log .t{color:rgba(255, 255, 255, 0.34)}@keyframes fxh-ln-in{to{opacity:1;transform:none}}.fxh-term__ver{margin-left:auto;color:rgba(255, 255, 255, 0.34)}.fxh-field{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;opacity:0.55}.fxh-hero--live .fxh-hero__bg::before{display:none}.fxh-hero--live .fxh-hero__step:first-child .fxh-eyebrow,.fxh-hero--live .fxh-hero__step:first-child .fxh-title,.fxh-hero--live .fxh-hero__step:first-child .fxh-sub,.fxh-hero--live .fxh-hero__step:first-child .fxh-ctas,.fxh-hero--live .fxh-hero__step:first-child .fxh-scroll{opacity:0;transform:translateY(26px);animation:fxh-rv-in 0.9s cubic-bezier(0.16, 1, 0.3, 1) forwards}.fxh-hero--live .fxh-hero__step:first-child .fxh-eyebrow{animation-delay:0.15s}.fxh-hero--live .fxh-hero__step:first-child .fxh-title{animation-delay:0.26s}.fxh-hero--live .fxh-hero__step:first-child .fxh-sub{animation-delay:0.48s}.fxh-hero--live .fxh-hero__step:first-child .fxh-ctas{animation-delay:0.59s}.fxh-hero--live .fxh-hero__step:first-child .fxh-scroll{animation-delay:0.92s}@keyframes fxh-rv-in{to{opacity:1;transform:none}}@media (max-width: 640px){.fxh-hero__step{padding:72px 20px}}@media (prefers-reduced-motion: reduce){.fxh-tick,.fxh-caret{animation:none}.fxh-hero--live .fxh-hero__step:first-child .fxh-eyebrow,.fxh-hero--live .fxh-hero__step:first-child .fxh-title,.fxh-hero--live .fxh-hero__step:first-child .fxh-sub,.fxh-hero--live .fxh-hero__step:first-child .fxh-ctas,.fxh-hero--live .fxh-hero__step:first-child .fxh-scroll{animation:none;opacity:1;transform:none}}.cb-grid--2{grid-template-columns:repeat(2, minmax(0, 1fr))}@media (max-width: 640px){.cb-grid--2{grid-template-columns:1fr}}:root{--fxl-mono: \"Geist Mono\", ui-monospace, SFMono-Regular, Menlo, monospace;--fxl-display: \"Sora\", sans-serif;--fxl-ease: cubic-bezier(0.16, 1, 0.3, 1);--fxl-text: #17181b;--fxl-dim: rgba(23, 24, 27, 0.64);--fxl-faint: rgba(23, 24, 27, 0.44);--fxl-line: rgba(24, 24, 27, 0.12);--fxl-line-soft: rgba(24, 24, 27, 0.07);--fxl-amber-text: #8a5e00;--fxl-bg: #f4f4f5;--fxl-panel: #fcfcfd;--fxl-amber-soft: rgba(252, 184, 19, 0.12)}.dark{--fxl-text: #f4f5f3;--fxl-dim: rgba(244, 245, 243, 0.58);--fxl-faint: rgba(244, 245, 243, 0.34);--fxl-line: rgba(255, 255, 255, 0.08);--fxl-line-soft: rgba(255, 255, 255, 0.05);--fxl-amber-text: #fcb813;--fxl-bg: #0a0b0d;--fxl-panel: #0c0e11;--fxl-amber-soft: rgba(252, 184, 19, 0.08)}.fxl-no{display:flex;align-items:center;gap:12px;font-family:var(--fxl-mono);font-size:12px;letter-spacing:0.18em;text-transform:uppercase;color:var(--fxl-faint);margin-top:8px}.fxl-no::after{content:\"\";flex:1;height:1px;background:var(--fxl-line-soft)}.fxl-no+h2{margin-top:10px}.fxl-grid{display:grid;grid-template-columns:repeat(2, 1fr);gap:1px;background:var(--fxl-line);border:1px solid var(--fxl-line);border-radius:16px;overflow:hidden}.fxl-cell{position:relative;display:block;background:var(--fxl-panel);padding:clamp(24px, 2.6vw, 34px);text-decoration:none!important;transition:background 0.2s ease}.fxl-cell:hover{background:var(--fxl-amber-soft)}.fxl-cell::after{content:\"\\2192\";position:absolute;top:24px;right:26px;font-family:var(--fxl-mono);font-size:14px;color:var(--fxl-faint);transition:color 0.2s ease, transform 0.2s ease}.fxl-cell:hover::after{color:var(--fxl-amber-text);transform:translateX(4px)}.fxl-cell__no{display:block;font-family:var(--fxl-mono);font-size:11px;letter-spacing:0.2em;color:var(--fxl-amber-text);margin-bottom:14px}.fxl-cell__title{display:block;font-family:var(--fxl-display);font-size:18px;font-weight:600;letter-spacing:-0.01em;color:var(--fxl-text);margin-bottom:6px}.fxl-cell__desc{display:block;font-size:13.5px;line-height:1.5;color:var(--fxl-dim);max-width:46ch}.fxl-grid--1{grid-template-columns:1fr}.fxl-grid--3{grid-template-columns:repeat(3, 1fr)}@media (max-width: 1024px){.fxl-grid--3{grid-template-columns:repeat(2, 1fr)}}@media (max-width: 640px){.fxl-grid,.fxl-grid--3{grid-template-columns:1fr}}.fxl-cell--eval{grid-column:1 / -1;display:grid;grid-template-columns:minmax(0, 1fr) minmax(0, 1.05fr);gap:32px;align-items:center}.fxl-cell--eval::after{content:none}.fxl-cell--eval:hover{background:var(--fxl-panel)}.fxl-eval__links{display:flex;flex-wrap:wrap;gap:8px 18px;margin-top:18px}.fxl-eval__links a{font-family:var(--fxl-mono);font-size:12px;color:var(--fxl-amber-text);text-decoration:none!important;border-bottom:1px solid rgba(252, 184, 19, 0.45);padding-bottom:1px}.fxl-eval__links a:hover{border-bottom-color:var(--fxl-amber-text)}.fxl-stack{font-family:var(--fxl-mono);font-size:12px;color:var(--fxl-faint)}.fxl-stack__row{position:relative;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:7px 12px 7px 30px;border-bottom:1px solid var(--fxl-line-soft)}.fxl-stack__row:last-child{border-bottom:none}.fxl-stack__row span:last-child{font-size:10.5px;letter-spacing:0.08em;opacity:0.8}.fxl-stack__tick{position:absolute;left:10px;top:50%;width:7px;height:7px;margin-top:-3.5px;border-radius:2px;background:var(--fxl-line)}.fxl-stack__client{border:1px solid var(--fxl-line);border-radius:10px;color:var(--fxl-dim)}.fxl-stack__client .fxl-stack__tick{background:#fcb813}.fxl-stack__gw{display:flex;align-items:center;gap:10px;padding:10px 0 10px 30px;font-size:10.5px;letter-spacing:0.16em;text-transform:uppercase}.fxl-stack__gw::after{content:\"\";flex:1;height:1px;background:repeating-linear-gradient(90deg, var(--fxl-line) 0 4px, transparent 4px 8px)}.fxl-stack__svc{position:relative;border:1px solid var(--fxl-line);border-radius:10px;overflow:hidden}.fxl-stack__spine{position:absolute;left:13px;top:0;bottom:0;width:1px;background:var(--fxl-line)}.fxl-stack__pulse{position:absolute;left:10px;top:0;width:7px;height:7px;border-radius:50%;background:#fcb813;box-shadow:0 0 0 4px rgba(252, 184, 19, 0.18);opacity:0;animation:fxl-stack-ride 6.6s linear infinite}.fxl-stack__svc .fxl-stack__row,.fxl-stack__svc .fxl-stack__tick{animation:6.6s linear infinite}.fxl-stack__svc .fxl-stack__row{animation-name:fxl-stack-lit}.fxl-stack__svc .fxl-stack__tick{animation-name:fxl-stack-tick}.fxl-stack__svc .fxl-stack__row:nth-child(4),.fxl-stack__svc .fxl-stack__row:nth-child(4) .fxl-stack__tick{animation-delay:0.55s}.fxl-stack__svc .fxl-stack__row:nth-child(5),.fxl-stack__svc .fxl-stack__row:nth-child(5) .fxl-stack__tick{animation-delay:1.1s}.fxl-stack__svc .fxl-stack__row:nth-child(6),.fxl-stack__svc .fxl-stack__row:nth-child(6) .fxl-stack__tick{animation-delay:1.65s}.fxl-stack__svc .fxl-stack__row:nth-child(7),.fxl-stack__svc .fxl-stack__row:nth-child(7) .fxl-stack__tick{animation-delay:2.2s}.fxl-stack__svc .fxl-stack__row:nth-child(8),.fxl-stack__svc .fxl-stack__row:nth-child(8) .fxl-stack__tick{animation-delay:2.75s}.fxl-stack__foot{display:flex;justify-content:space-between;margin-top:8px;font-size:10.5px;letter-spacing:0.14em;text-transform:uppercase}.fxl-stack__bus{color:var(--fxl-amber-text)}@keyframes fxl-stack-ride{0%{top:0;opacity:0}4%{opacity:1}52%{top:calc(100% - 7px);opacity:1}58%,100%{top:calc(100% - 7px);opacity:0}}@keyframes fxl-stack-lit{0%,2%{color:var(--fxl-faint)}6%,18%{color:var(--fxl-text)}30%,100%{color:var(--fxl-faint)}}@keyframes fxl-stack-tick{0%,2%{background:var(--fxl-line)}6%,18%{background:#fcb813}30%,100%{background:var(--fxl-line)}}@media (prefers-reduced-motion: reduce){.fxl-stack__pulse,.fxl-stack__svc .fxl-stack__row,.fxl-stack__svc .fxl-stack__tick{animation:none}.fxl-stack__svc .fxl-stack__row{color:var(--fxl-dim)}}@media (max-width: 768px){.fxl-cell--eval{grid-template-columns:1fr;gap:24px}}.fxl-flow{display:flex;align-items:stretch;gap:14px}.fxl-flow__stage{flex:1;border:1px solid var(--fxl-line);background:var(--fxl-panel);border-radius:14px;padding:20px 22px}.fxl-flow__no{display:block;font-family:var(--fxl-mono);font-size:11px;letter-spacing:0.18em;text-transform:uppercase;color:var(--fxl-amber-text);margin-bottom:10px}.fxl-flow__title{display:block;font-family:var(--fxl-display);font-size:15px;font-weight:600;letter-spacing:-0.01em;color:var(--fxl-text)}.fxl-flow__desc{display:block;margin-top:6px;font-size:12.5px;line-height:1.5;color:var(--fxl-dim)}.fxl-flow__arrow{align-self:center;flex-shrink:0;font-family:var(--fxl-mono);font-size:16px;color:var(--fxl-amber-text)}@media (max-width: 768px){.fxl-flow{flex-direction:column}.fxl-flow__arrow{transform:rotate(90deg)}}.fxl-rails{list-style:none;padding:0;margin:0;font-family:var(--fxl-mono);font-size:13px;color:var(--fxl-dim)}.fxl-rails li{display:flex;align-items:baseline;gap:12px;padding:12px 0;border-bottom:1px solid var(--fxl-line-soft)}.fxl-rails li:last-child{border-bottom:none}.fxl-rails__state{align-self:center;flex-shrink:0;width:7px;height:7px;border-radius:2px;background:#fcb813}.fxl-rails a{color:var(--fxl-text);text-decoration:none;border-bottom:1px solid rgba(252, 184, 19, 0.45);padding-bottom:1px;transition:color 0.15s ease}.fxl-rails a:hover{color:var(--fxl-amber-text)}.fxl-rails em{margin-left:auto;padding-left:16px;flex-shrink:0;font-style:normal;font-size:11px;letter-spacing:0.1em;color:var(--fxl-faint)}.fxl-proc{display:grid;grid-template-columns:repeat(4, 1fr);gap:1px;list-style:none;padding:0;margin:0;background:var(--fxl-line);border:1px solid var(--fxl-line);border-radius:16px;overflow:hidden}.fxl-proc li{background:var(--fxl-bg);padding:clamp(22px, 2.4vw, 32px);margin:0}.fxl-proc__no{display:block;font-family:var(--fxl-mono);font-size:11px;letter-spacing:0.2em;color:var(--fxl-amber-text);margin-bottom:16px}.fxl-proc__title{display:block;font-family:var(--fxl-display);font-size:17px;font-weight:600;letter-spacing:-0.01em;color:var(--fxl-text);margin-bottom:8px}.fxl-proc__desc{display:block;font-size:13.5px;line-height:1.55;color:var(--fxl-dim)}.fxl-proc a{display:inline-block;margin-top:12px;font-family:var(--fxl-mono);font-size:12px;color:var(--fxl-amber-text);text-decoration:none;border-bottom:1px solid rgba(252, 184, 19, 0.45);padding-bottom:1px}.fxl-proc a:hover{border-bottom-color:var(--fxl-amber-text)}@media (max-width: 1024px){.fxl-proc{grid-template-columns:repeat(2, 1fr)}}@media (max-width: 640px){.fxl-proc{grid-template-columns:1fr}}.fxl-reg{border:1px solid var(--fxl-line);background:var(--fxl-panel);border-radius:16px;padding:clamp(16px, 2.5vw, 28px)}.fxl-reg__hd,.fxl-reg__row{display:grid;grid-template-columns:minmax(180px, 1.2fr) 2fr 150px 24px;gap:16px;align-items:baseline;font-family:var(--fxl-mono)}.fxl-reg__hd{font-size:11px;letter-spacing:0.08em;color:var(--fxl-faint);padding-bottom:10px;border-bottom:1px solid var(--fxl-line-soft)}.fxl-reg__item{border-bottom:1px solid var(--fxl-line-soft)}.fxl-reg__item:last-child{border-bottom:none}.fxl-reg__toggle{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.fxl-reg__row{padding:14px 0;cursor:pointer;font-size:12.5px;user-select:none}.fxl-reg__toggle:focus-visible+.fxl-reg__row{outline:2px solid #fcb813;outline-offset:2px}.fxl-reg__type{font-size:10px;letter-spacing:0.12em;color:var(--fxl-faint);margin-left:6px}.fxl-reg__type--lts{color:var(--fxl-amber-text)}a.fxl-reg__row{text-decoration:none!important;transition:background 0.15s ease}a.fxl-reg__row:hover{background:var(--fxl-amber-soft)}a.fxl-reg__row:hover .fxl-reg__name{color:var(--fxl-amber-text)}.fxl-reg__name{color:var(--fxl-text);font-weight:500}.fxl-reg__caps{color:var(--fxl-dim)}.fxl-reg__status{color:var(--fxl-amber-text);white-space:nowrap}.fxl-reg__mark{color:var(--fxl-amber-text);font-size:14px;text-align:right;transition:transform 0.3s var(--fxl-ease)}.fxl-reg__item:has(.fxl-reg__toggle:checked) .fxl-reg__mark{transform:rotate(45deg)}.fxl-reg__body{display:none;padding:2px 0 18px;font-size:13.5px;line-height:1.6;color:var(--fxl-dim);max-width:72ch}.fxl-reg__item:has(.fxl-reg__toggle:checked) .fxl-reg__body{display:block}.fxl-reg__body p{margin:0 0 8px}.fxl-reg__body strong{color:var(--fxl-text);font-weight:600}@media (max-width: 768px){.fxl-reg__hd,.fxl-reg__row{grid-template-columns:1fr 132px 20px;gap:10px}.fxl-reg__caps,.fxl-reg__hd span:nth-child(2){display:none}}.fxl-dgv{display:grid;gap:10px}.fxl-dgv__row{display:grid;grid-template-columns:150px 1fr;gap:18px;align-items:baseline;border:1px solid var(--fxl-line);border-radius:12px;padding:14px 20px}.fxl-dgv__key{font-family:var(--fxl-mono);font-size:12.5px;color:var(--fxl-amber-text)}.fxl-dgv__val{font-size:13.5px;line-height:1.55;color:var(--fxl-dim)}@media (max-width: 640px){.fxl-dgv__row{grid-template-columns:1fr;gap:6px}}.fxl-cta{position:relative;overflow:hidden;border-radius:18px;padding:clamp(40px, 6vw, 64px) clamp(24px, 5vw, 56px);background:#0a0b0d;border:1px solid rgba(255, 255, 255, 0.08);text-align:center}.fxl-cta::before{content:\"\";position:absolute;inset:0;background-image:linear-gradient(rgba(255, 255, 255, 0.045) 1px, transparent 1px),\n linear-gradient(90deg, rgba(255, 255, 255, 0.045) 1px, transparent 1px);background-size:56px 56px;-webkit-mask-image:radial-gradient(ellipse at 50% 100%, #000 25%, transparent 75%);mask-image:radial-gradient(ellipse at 50% 100%, #000 25%, transparent 75%);pointer-events:none}.fxl-cta>*{position:relative;z-index:1}.fxl-cta__title{display:block;font-family:var(--fxl-display);font-size:clamp(1.5rem, 3vw, 2.2rem);font-weight:700;letter-spacing:-0.02em;line-height:1.1;color:#f5f5f0;margin-bottom:12px}.fxl-cta__sub{display:block;font-size:14.5px;color:#b9b9b1;max-width:56ch;margin:0 auto 24px}html.fxl-js .rv{opacity:0;transform:translateY(12px);transition:opacity 0.6s var(--fxl-ease), transform 0.6s var(--fxl-ease);transition-delay:calc(var(--i, 0) * 0.06s)}html.fxl-js .rv.in{opacity:1;transform:none}@media (prefers-reduced-motion: reduce){html.fxl-js .rv{opacity:1;transform:none;transition:none}.fxl-rails__state{animation:none}}#footer a[href*=\"utm_campaign=poweredBy\"]{display:none}"}],"page":{"pagePath":"4.7.x/docs/platform-overview/flowx-architecture","slug":"/4.7.x/docs/platform-overview/flowx-architecture","pageMetadata":{"title":"FlowX.AI architecture","icon":"diagram-project","description":"FlowX.AI is a comprehensive, event-driven platform designed to accelerate digital transformation by enabling rapid development of web and mobile applications without extensive coding. The architecture consists of several interconnected components that work together to provide a seamless experience for both developers and end users.","href":"/4.7.x/docs/platform-overview/flowx-architecture"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"FlowX.AI is a comprehensive, event-driven platform designed to accelerate digital transformation by enabling rapid development of web and mobile applications without extensive coding. The architecture consists of several interconnected components that work together to provide a seamless experience for both developers and end users.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,img:`img`,li:`li`,ol:`ol`,p:`p`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{Card,CardGroup,Frame,Heading,Tip}=_components;if(!Card)_missingMdxReference(`Card`,true);if(!CardGroup)_missingMdxReference(`CardGroup`,true);if(!Frame)_missingMdxReference(`Frame`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Tip)_missingMdxReference(`Tip`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:_jsx(_components.img,{src:`https://s3.eu-west-1.amazonaws.com/docx.flowx.ai/470/archi_final_ai.svg`,alt:`FlowX.AI Architecture Overview`})}),`\n`,_jsx(Heading,{level:`2`,id:`core-components`,children:`Core components`}),`\n`,_jsx(_components.p,{children:`The FlowX.AI platform is built on a microservices architecture, with each component serving a specific purpose in the overall ecosystem:`}),`\n`,_jsx(Heading,{level:`3`,id:`flowx-ai-designer`,children:`FlowX.AI Designer`}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.strong,{children:`FlowX.AI Designer`}),` is a collaborative, no-code/full-code web-based application development environment that serves as the central workspace for creating and managing processes, UIs, integrations, and other application components.`]}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Key capabilities:`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Design processes using industry-standard `,_jsx(_components.a,{href:`/4.7.x/docs/platform-overview/frameworks-and-standards/business-process-industry-standards/intro-to-bpmn`,children:`BPMN 2.0`}),` notation`]}),`\n`,_jsx(_components.li,{children:`Configure user interfaces for both generated and custom components`}),`\n`,_jsxs(_components.li,{children:[`Define business rules and validations via `,_jsx(_components.a,{href:`/4.7.x/docs/platform-overview/frameworks-and-standards/business-process-industry-standards/intro-to-dmn`,children:`DMN`}),` or `,_jsx(_components.a,{href:`/4.7.x/docs/platform-overview/frameworks-and-standards/business-process-industry-standards/intro-to-mvel`,children:`MVEL`}),` scripting`]}),`\n`,_jsx(_components.li,{children:`Create visual integration connectors to external systems`}),`\n`,_jsx(_components.li,{children:`Design and manage data models`}),`\n`,_jsxs(_components.li,{children:[`Add extensibility through `,_jsx(_components.a,{href:`/4.7.x/docs/platform-deep-dive/plugins/custom-plugins`,children:`custom plugins`})]}),`\n`,_jsx(_components.li,{children:`Manage user access roles and permissions`}),`\n`]}),`\n`,_jsx(Tip,{children:_jsx(_components.p,{children:`The FlowX Designer is a web application that runs in the browser, residing outside a FlowX deployment, serving as the administrative interface for the entire platform.`})}),`\n`,_jsx(Card,{title:`FlowX Designer`,href:`/4.7.x/docs/flowx-designer`,icon:`pencil`}),`\n`,_jsx(_components.p,{children:`The no-code/full-code capabilities allow both business users (analysts, product managers) and experienced developers to collaboratively build applications, reducing the typical development cycle from months to days.`}),`\n`,_jsx(Heading,{level:`3`,id:`microservices-architecture`,children:`Microservices architecture`}),`\n`,_jsx(_components.p,{children:`FlowX.AI is built on a suite of specialized microservices that provide the foundation for the platform’s capabilities. These microservices communicate through an event-driven architecture, primarily using Kafka for messaging, enabling scalability, resilience, and extensibility:`}),`\n`,_jsx(Heading,{level:`4`,id:`flowx-ai-engine`,children:`FlowX.AI Engine`}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.strong,{children:`FlowX.AI Engine`}),` is the core orchestration component of the platform, serving as the central nervous system that executes process definitions, manages process instances, and coordinates communications between all platform components.`]}),`\n`,_jsx(Frame,{children:_jsx(_components.p,{children:_jsx(_components.img,{src:`https://s3.eu-west-1.amazonaws.com/docx.flowx.ai/4.5/Engine%20Diagram%20%281%29.png`,alt:`FlowX Engine Components`})})}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Key responsibilities:`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Executing business processes based on BPMN 2.0 definitions`}),`\n`,_jsx(_components.li,{children:`Creating and managing process instances throughout their lifecycle`}),`\n`,_jsx(_components.li,{children:`Coordinating real-time interactions between users, systems, and data`}),`\n`,_jsx(_components.li,{children:`Orchestrating the event-driven communication across the platform`}),`\n`,_jsx(_components.li,{children:`Dynamically generating and delivering UI components based on process state`}),`\n`,_jsx(_components.li,{children:`Handling integration with external systems via Kafka messaging`}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`The Engine is built on `,_jsx(_components.a,{href:`/4.7.x/docs/platform-overview/frameworks-and-standards/event-driven-architecture-frameworks/intro-to-kafka-concepts`,children:`Kafka`}),`, providing high-throughput, low-latency event processing. This architecture enables FlowX.AI to maintain a responsive user experience (0.2s response time) even when integrating with slow legacy systems by buffering load and managing asynchronous communication.`]}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Technical infrastructure:`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`PostgreSQL database for process definitions and instance data`}),`\n`,_jsx(_components.li,{children:`MongoDB for runtime build information`}),`\n`,_jsx(_components.li,{children:`Redis for caching process definitions and improving performance`}),`\n`,_jsx(_components.li,{children:`Multiple script engine support including Python, JavaScript, and MVEL`}),`\n`,_jsx(_components.li,{children:`Elasticsearch integration for efficient data indexing and searching`}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`The Engine works closely with the `,_jsx(_components.strong,{children:`Advancing Controller`}),` to ensure efficient process instance progression, particularly in scaled environments.`]}),`\n`,_jsx(Card,{title:`FlowX.AI Engine`,href:`/4.7.x/docs/platform-deep-dive/core-components/flowx-engine`,icon:`window-flip`}),`\n`,_jsx(Heading,{level:`4`,id:`flowx-ai-application-manager`,children:`FlowX.AI Application Manager`}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.strong,{children:`Application Manager`}),` is responsible for managing the application lifecycle, including:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Creating, updating, and deleting applications and their resources`}),`\n`,_jsx(_components.li,{children:`Managing versions, manifests, and configurations`}),`\n`,_jsx(_components.li,{children:`Serving as a proxy for front-end resource requests`}),`\n`,_jsx(_components.li,{children:`Handling application builds and deployments`}),`\n`]}),`\n`,_jsx(_components.p,{children:`This microservice maintains a comprehensive data model for applications, including all their components, versions, and dependencies, ensuring consistency across environments.`}),`\n`,_jsx(Card,{title:`Projects`,href:`/4.7.x/docs/projects`,icon:`folder-open`}),`\n`,_jsx(Heading,{level:`4`,id:`flowx-ai-runtime-manager`,children:`FlowX.AI Runtime Manager`}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.strong,{children:`Runtime Manager`}),` works in conjunction with the Application Manager to:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Deploy application builds to runtime environments`}),`\n`,_jsx(_components.li,{children:`Manage runtime configurations and environment-specific settings`}),`\n`,_jsx(_components.li,{children:`Monitor and manage active application instances`}),`\n`,_jsx(_components.li,{children:`Handle the runtime data and state of deployed applications`}),`\n`]}),`\n`,_jsx(Heading,{level:`4`,id:`flowx-ai-integration-designer`,children:`FlowX.AI Integration Designer`}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.strong,{children:`Integration Designer`}),` provides a visual interface for creating and managing integrations with external systems:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Define REST API endpoints and authentication methods`}),`\n`,_jsx(_components.li,{children:`Create and configure integration workflows`}),`\n`,_jsx(_components.li,{children:`Map data between FlowX.AI processes and external systems`}),`\n`,_jsx(_components.li,{children:`Test and monitor integrations in real-time`}),`\n`]}),`\n`,_jsx(_components.p,{children:`This microservice simplifies the complex task of connecting to various enterprise systems, allowing for secure, scalable, and maintainable integrations without extensive coding.`}),`\n`,_jsx(Card,{title:`Integration Designer`,href:`/4.7.x/docs/platform-deep-dive/integrations/integration-designer`,icon:`ruler-combined`}),`\n`,_jsx(Heading,{level:`4`,id:`flowx-ai-content-management`,children:`FlowX.AI Content Management`}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.strong,{children:`Content Management`}),` microservice handles all taxonomies and structured content within the platform:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Manage enumerations (dropdown options, categories)`}),`\n`,_jsx(_components.li,{children:`Store and serve localization content and translations`}),`\n`,_jsx(_components.li,{children:`Organize media assets and reference data`}),`\n`,_jsx(_components.li,{children:`Centralize content that needs to be shared across applications`}),`\n`]}),`\n`,_jsx(_components.p,{children:`This Java-based service uses MongoDB for flexible storage of unstructured content, making it the go-to place for all shared taxonomies and content definitions.`}),`\n`,_jsx(Card,{title:`Content Management`,href:`/4.7.x/docs/platform-deep-dive/core-extensions/content-management`,icon:`folder-grid`}),`\n`,_jsx(Heading,{level:`4`,id:`flowx-ai-scheduler`,children:`FlowX.AI Scheduler`}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.strong,{children:`Scheduler`}),` microservice handles time-based operations within processes:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Set process expiration dates and reminders`}),`\n`,_jsx(_components.li,{children:`Trigger time-based events and activities`}),`\n`,_jsx(_components.li,{children:`Manage recurring tasks and scheduled operations`}),`\n`,_jsx(_components.li,{children:`Support delayed actions and follow-ups`}),`\n`]}),`\n`,_jsx(_components.p,{children:`It communicates with the FlowX Engine through Kafka, creating time-based events that can be processed when needed, similar to a reminder application for business processes.`}),`\n`,_jsx(Card,{title:`Scheduler`,href:`/4.7.x/docs/platform-deep-dive/core-extensions/scheduler`,icon:`clock`}),`\n`,_jsx(Heading,{level:`4`,id:`flowx-ai-admin`,children:`FlowX.AI Admin`}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.strong,{children:`Admin`}),` microservice is responsible for:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Storing and editing process definitions`}),`\n`,_jsx(_components.li,{children:`Managing user roles and permissions`}),`\n`,_jsx(_components.li,{children:`Configuring system-wide settings`}),`\n`,_jsx(_components.li,{children:`Providing administrative functions for the platform`}),`\n`]}),`\n`,_jsx(_components.p,{children:`This service connects to the same database as the FlowX Engine, ensuring consistency in process definitions and configurations.`}),`\n`,_jsx(Heading,{level:`4`,id:`flowx-ai-data-search`,children:`FlowX.AI Data Search`}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.strong,{children:`Data Search`}),` microservice enables search capabilities across the platform, allowing users to find data within process instances:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Searching for data across processes and applications using indexed keys`}),`\n`,_jsx(_components.li,{children:`Indexing and retrieving information based on specific criteria`}),`\n`,_jsx(_components.li,{children:`Supporting complex queries with filtering by process status, date ranges, and more`}),`\n`,_jsx(_components.li,{children:`Enabling cross-application data discovery and access`}),`\n`]}),`\n`,_jsx(_components.p,{children:`This service leverages Elasticsearch to execute efficient searches. It works by indexing process data automatically when process status changes or at specific trigger points, making the information searchable without impacting performance. The service communicates with the FlowX Engine through Kafka topics, receiving search requests and returning results that can be displayed in applications.`}),`\n`,_jsx(Card,{title:`Data Search`,href:`/4.7.x/docs/platform-deep-dive/core-extensions/search-data-service`,icon:`magnifying-glass`}),`\n`,_jsx(Heading,{level:`4`,id:`flowx-ai-events-gateway`,children:`FlowX.AI Events Gateway`}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.strong,{children:`Events Gateway`}),` microservice centralizes and manages the real-time communication between backend services and frontend clients through Server-Sent Events (SSE):`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Processes events from various sources like the FlowX Engine and Task Management`}),`\n`,_jsx(_components.li,{children:`Routes and distributes messages to appropriate components based on their destination`}),`\n`,_jsx(_components.li,{children:`Publishes events to frontend renderers enabling real-time UI updates`}),`\n`,_jsx(_components.li,{children:`Integrates with Redis for efficient event distribution and ensuring messages reach the correct instance with the SSE connection`}),`\n`]}),`\n`,_jsx(_components.p,{children:_jsx(_components.img,{src:`https://s3.eu-west-1.amazonaws.com/docx.flowx.ai/platform-deep-dive/events_gateway_archi.png`,alt:`Events Gateway Architecture`})}),`\n`,_jsx(_components.p,{children:`This component is crucial for maintaining the real-time, responsive nature of FlowX applications. It ensures that all UI updates, notifications, and system changes are immediately reflected across the platform without requiring page refreshes or manual polling. The Events Gateway reads messages from Kafka topics and distributes them appropriately, enabling features like instant form rendering when reaching user tasks or displaying real-time configuration errors.`}),`\n`,_jsx(Card,{title:`Events Gateway`,href:`/4.7.x/docs/platform-deep-dive/core-components/events-gateway`,icon:`window-flip`}),`\n`,_jsx(Heading,{level:`3`,id:`flowx-ai-sdks`,children:`FlowX.AI SDKs`}),`\n`,_jsx(_components.p,{children:`The platform provides SDKs for different client platforms:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Web SDK (Angular)`}),`: For rendering process screens in web applications`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Android SDK`}),`: For native Android application support`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Custom Component SDK`}),`: For developing reusable UI components`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`These SDKs communicate with the FlowX Engine to render dynamic UIs and orchestrate user interactions based on process definitions.`}),`\n`,_jsx(Card,{title:`SDKs`,href:`/4.7.x/sdks/sdks-overview`,icon:`browser`}),`\n`,_jsx(Heading,{level:`3`,id:`flowx-ai-plugins`,children:`FlowX.AI plugins`}),`\n`,_jsx(_components.p,{children:`The platform’s functionality can be extended through plugins:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Notifications Plugin`}),`: For sending and managing notifications`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Documents Plugin`}),`: For document generation and management`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`OCR Plugin`}),`: For optical character recognition and document processing`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Task Management Plugin`}),`: For handling human tasks and assignments`]}),`\n`]}),`\n`,_jsx(Frame,{children:_jsx(_components.p,{children:_jsx(_components.img,{src:`https://s3.eu-west-1.amazonaws.com/docx.flowx.ai/platform-overview/plugins_architecture.png`,alt:`Plugins Architecture`})})}),`\n`,_jsx(_components.p,{children:`Plugins provide modular extensions to the core platform, allowing for customization without modifying the base architecture.`}),`\n`,_jsx(Card,{title:`Plugins`,href:`/4.7.x/docs/platform-deep-dive/plugins/custom-plugins`,icon:`plug`}),`\n`,_jsx(Heading,{level:`2`,id:`platform-infrastructure`,children:`Platform infrastructure`}),`\n`,_jsx(Heading,{level:`3`,id:`advancing-controller`,children:`Advancing Controller`}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.strong,{children:`Advancing Controller`}),` is a critical supporting service for the FlowX.AI Engine that enhances process execution efficiency, particularly in scaled deployments:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Manages the distribution of workload across Engine instances`}),`\n`,_jsx(_components.li,{children:`Facilitates even redistribution during scale-up and scale-down scenarios`}),`\n`,_jsx(_components.li,{children:`Utilizes database triggers in PostgreSQL or Oracle Database configurations`}),`\n`,_jsx(_components.li,{children:`Prevents process instances from getting stuck if a worker pod fails`}),`\n`,_jsx(_components.li,{children:`Performs cleanup tasks and monitors worker pod status`}),`\n`]}),`\n`,_jsx(_components.p,{children:`The Advancing Controller works in close coordination with the Engine to ensure uninterrupted process advancement. It must run concurrently with the Engine for optimal performance, particularly in production environments where reliability is crucial.`}),`\n`,_jsx(Card,{title:`Advancing Controller`,href:`/4.7.x/docs/platform-deep-dive/core-components/advancing-controller`,icon:`window-flip`}),`\n`,_jsx(Heading,{level:`3`,id:`authorization-\u0026-session-management`,children:`Authorization \u0026 session management`}),`\n`,_jsxs(_components.p,{children:[`FlowX.AI recommends `,_jsx(_components.strong,{children:`Keycloak`}),` or `,_jsx(_components.strong,{children:`Azure AD (Entra)`}),` for identity and access management:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Create and manage users and credentials`}),`\n`,_jsx(_components.li,{children:`Define groups and assign roles`}),`\n`,_jsx(_components.li,{children:`Secure API access through token-based authentication`}),`\n`,_jsx(_components.li,{children:`Integrate with existing identity providers`}),`\n`]}),`\n`,_jsx(_components.p,{children:`Every communication from client applications passes through a public entry point (API Gateway), which validates authentication tokens before allowing access to the platform. The system supports OAuth2 authentication with multiple configuration options for securing microservice communication.`}),`\n`,_jsxs(CardGroup,{children:[_jsx(Card,{title:`Keycloak`,href:`/4.7.x/setup-guides/access-management/configuring-an-iam-solution`,icon:`key`}),_jsx(Card,{title:`Azure AD (Entra)`,href:`/4.7.x/setup-guides/access-management/configuring-an-iam-solution-entra`,icon:`key`})]}),`\n`,_jsx(Heading,{level:`3`,id:`integrations`,children:`Integrations`}),`\n`,_jsx(_components.p,{children:`FlowX.AI can connect to external systems through custom integrations called connectors`}),`\n`,_jsx(_components.p,{children:`These integrations can be developed using any technology stack, with the only requirement being a connection to Kafka. This flexibility allows for seamless integration with:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Legacy APIs and systems`}),`\n`,_jsx(_components.li,{children:`Custom file exchange solutions`}),`\n`,_jsx(_components.li,{children:`Third-party services and platforms`}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`technical-foundation`,children:`Technical foundation`}),`\n`,_jsx(Heading,{level:`3`,id:`data-flow-and-event-driven-communication`,children:`Data flow and event-driven communication`}),`\n`,_jsx(_components.p,{children:`The FlowX.AI platform uses an event-driven architecture based on Kafka for asynchronous communication between components:`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Process Initiation`}),`: Client applications initiate processes through the API Gateway`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Event Processing`}),`: The FlowX Engine processes events and coordinates activities`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Integration Orchestration`}),`: External system interactions are managed through integration workflows`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`UI Generation`}),`: Dynamic user interfaces are generated and delivered to client applications`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Data Management`}),`: Process data is stored and managed throughout the execution lifecycle`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`This event-driven approach enables the platform to handle complex, long-running processes while maintaining responsiveness and scalability. Each microservice communicates through predefined Kafka topics following a consistent naming convention (e.g., `,_jsx(_components.code,{children:`ai.flowx.dev.core.trigger.advance.process.v1`}),`), allowing for loosely coupled but highly cohesive system architecture.`]}),`\n`,_jsx(Heading,{level:`3`,id:`script-engine-support`,children:`Script engine support`}),`\n`,_jsx(_components.p,{children:`FlowX.AI supports multiple scripting languages for business rules, validations, and data transformations:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`MVEL`}),`: Default scripting language for business rules`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Python`}),`: Supported in both Python 2.7 (Jython) and Python 3 (GraalPy)`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`JavaScript`}),`: Available using GraalJS for high-performance execution`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`This flexibility allows developers to use the most appropriate language for different use cases while maintaining performance and security.`}),`\n`,_jsx(Card,{title:`Supported Scripts`,href:`/4.7.x/docs/building-blocks/supported-scripts`,icon:`code`}),`\n`,_jsx(Heading,{level:`2`,id:`deployment-and-scalability`,children:`Deployment and scalability`}),`\n`,_jsx(_components.p,{children:`FlowX.AI is designed for containerized deployment, typically using Kubernetes:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Microservices can be scaled independently based on demand`}),`\n`,_jsx(_components.li,{children:`Stateless components allow for horizontal scaling`}),`\n`,_jsx(_components.li,{children:`Kafka provides resilient message handling and event streaming`}),`\n`,_jsx(_components.li,{children:`Redis supports caching and real-time event distribution`}),`\n`,_jsx(_components.li,{children:`Database configurations support both PostgreSQL and Oracle Database`}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`monitoring-and-health-checks`,children:`Monitoring and health checks`}),`\n`,_jsx(_components.p,{children:`The platform includes comprehensive monitoring and health check capabilities:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Prometheus metrics export for performance monitoring`}),`\n`,_jsx(_components.li,{children:`Kubernetes health probes for service availability`}),`\n`,_jsx(_components.li,{children:`Database connection health checks`}),`\n`,_jsx(_components.li,{children:`Kafka cluster health monitoring`}),`\n`]}),`\n`,_jsx(_components.p,{children:`These features ensure that the platform remains reliable and observable in production environments, with the ability to detect and resolve issues proactively.`}),`\n`,_jsx(Heading,{level:`2`,id:`conclusion`,children:`Conclusion`}),`\n`,_jsx(_components.p,{children:`FlowX.AI offers a comprehensive, event-driven platform for rapidly developing and deploying digital applications without extensive coding. Its microservices architecture, combined with industry-standard technologies and a user-friendly design environment, enables organizations to accelerate their digital transformation initiatives while maintaining flexibility, scalability, and integration with existing systems.`})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"codeStyling":"dark","config":{},"pageMetadata":{"title":"FlowX.AI architecture","icon":"diagram-project","description":"FlowX.AI is a comprehensive, event-driven platform designed to accelerate digital transformation by enabling rapid development of web and mobile applications without extensive coding. The architecture consists of several interconnected components that work together to provide a seamless experience for both developers and end users.","href":"/4.7.x/docs/platform-overview/flowx-architecture"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Core components","slug":"core-components","depth":2,"children":[{"title":"FlowX.AI Designer","slug":"flowx-ai-designer","depth":3,"children":[]},{"title":"Microservices architecture","slug":"microservices-architecture","depth":3,"children":[]},{"title":"FlowX.AI Engine","slug":"flowx-ai-engine","depth":4,"children":[]},{"title":"FlowX.AI Application Manager","slug":"flowx-ai-application-manager","depth":4,"children":[]},{"title":"FlowX.AI Runtime Manager","slug":"flowx-ai-runtime-manager","depth":4,"children":[]},{"title":"FlowX.AI Integration Designer","slug":"flowx-ai-integration-designer","depth":4,"children":[]},{"title":"FlowX.AI Content Management","slug":"flowx-ai-content-management","depth":4,"children":[]},{"title":"FlowX.AI Scheduler","slug":"flowx-ai-scheduler","depth":4,"children":[]},{"title":"FlowX.AI Admin","slug":"flowx-ai-admin","depth":4,"children":[]},{"title":"FlowX.AI Data Search","slug":"flowx-ai-data-search","depth":4,"children":[]},{"title":"FlowX.AI Events Gateway","slug":"flowx-ai-events-gateway","depth":4,"children":[]},{"title":"FlowX.AI SDKs","slug":"flowx-ai-sdks","depth":3,"children":[]},{"title":"FlowX.AI plugins","slug":"flowx-ai-plugins","depth":3,"children":[]}]},{"title":"Platform infrastructure","slug":"platform-infrastructure","depth":2,"children":[{"title":"Advancing Controller","slug":"advancing-controller","depth":3,"children":[]},{"title":"Authorization \u0026 session management","slug":"authorization-\u0026-session-management","depth":3,"children":[]},{"title":"Integrations","slug":"integrations","depth":3,"children":[]}]},{"title":"Technical foundation","slug":"technical-foundation","depth":2,"children":[{"title":"Data flow and event-driven communication","slug":"data-flow-and-event-driven-communication","depth":3,"children":[]},{"title":"Script engine support","slug":"script-engine-support","depth":3,"children":[]}]},{"title":"Deployment and scalability","slug":"deployment-and-scalability","depth":2,"children":[{"title":"Monitoring and health checks","slug":"monitoring-and-health-checks","depth":3,"children":[]}]},{"title":"Conclusion","slug":"conclusion","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/flowxai/9795f3937492dd76/snippets/zendesk-verification.js","/_mintlify/custom/flowxai/93d12cb97573b7cd/snippets/intro-hero.js","/_mintlify/custom/flowxai/90103fefc8b4bea0/snippets/footer-horizon.js"],"subdomain":"flowxai","siteName":"FlowX.AI","title":"FlowX.AI architecture - FlowX.AI","relatedPagesConfig":{"enabled":true,"limit":5,"mode":"automatic"},"contextualStarterQuestions":[{"_id":"69ef76b18e68bb64e185954c","deploymentId":"694954a421c35c020852b639","questionText":"What are the core components?","status":"active","generatedBy":"contextual","path":"4.7.x/docs/platform-overview/flowx-architecture","createdAt":"2026-04-27T14:46:09.755Z","updatedAt":"2026-04-27T14:46:09.755Z","__v":0},{"_id":"69ef76b18e68bb64e185954a","deploymentId":"694954a421c35c020852b639","questionText":"What is FlowX.AI Designer?","status":"active","generatedBy":"contextual","path":"4.7.x/docs/platform-overview/flowx-architecture","createdAt":"2026-04-27T14:46:09.755Z","updatedAt":"2026-04-27T14:46:09.755Z","__v":0},{"_id":"69ef76b18e68bb64e185954b","deploymentId":"694954a421c35c020852b639","questionText":"How does the architecture work?","status":"active","generatedBy":"contextual","path":"4.7.x/docs/platform-overview/flowx-architecture","createdAt":"2026-04-27T14:46:09.755Z","updatedAt":"2026-04-27T14:46:09.755Z","__v":0}],"navMaps":{"firstHrefInVersion":{"v6.x":{"href":"/6.x/docs/platform-overview/flowx-architecture","matchLevel":1},"v5.9.x":{"href":"/5.9/docs/platform-overview/flowx-architecture","matchLevel":1},"v5.1.x":{"href":"/5.1/docs/platform-overview/flowx-architecture","matchLevel":1},"v4.7.x":{"href":"/4.7.x/docs/platform-overview/flowx-architecture","matchLevel":0},"v4.1.x":{"href":"/4.1.x/docs/platform-overview/flowx-architecture","matchLevel":1,"noindex":true},"v3.x":{"href":"/3.x/docs/platform-overview/flowx-architecture","matchLevel":1,"noindex":true}},"firstHrefInLanguage":{}},"lastModified":"2026-01-26T18:10:28.689Z","gitLastModified":"2025-07-24T08:40:13.000Z","originalFileLocation":"4.7.x/docs/platform-overview/flowx-architecture.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"dark\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"FlowX.AI is a comprehensive, event-driven platform designed to accelerate digital transformation by enabling rapid development of web and mobile applications without extensive coding. The architecture consists of several interconnected components that work together to provide a seamless experience for both developers and end users.\">\u003cmeta data-mint-head name=\"application-name\" content=\"FlowX.AI\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/flowxai/tLAtpK66JQ6LptNv/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/flowxai/tLAtpK66JQ6LptNv/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/flowxai/tLAtpK66JQ6LptNv/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/flowxai/tLAtpK66JQ6LptNv/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/flowxai/tLAtpK66JQ6LptNv/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/flowxai/tLAtpK66JQ6LptNv/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/flowxai/tLAtpK66JQ6LptNv/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/flowxai/tLAtpK66JQ6LptNv/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/flowxai/tLAtpK66JQ6LptNv/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"FlowX.AI architecture - FlowX.AI\">\u003cmeta data-mint-head property=\"og:description\" content=\"FlowX.AI is a comprehensive, event-driven platform designed to accelerate digital transformation by enabling rapid development of web and mobile applications without extensive coding. The architecture consists of several interconnected components that work together to provide a seamless experience for both developers and end users.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"FlowX.AI\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.flowx.ai/4.7.x/docs/platform-overview/flowx-architecture\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://flowxai.mintlify.site/_mintlify/api/og/v2?division=Platform+overview\u0026amp;title=FlowX.AI+architecture\u0026amp;description=FlowX.AI+is+a+comprehensive%2C+event-driven+platform+designed+to+accelerate+digital+transformation+by+enabling+rapid+development+of+web+and+mobile+applications+wi\u0026amp;theme=3cf14baeb844d8250f9e8ff4\u0026amp;signature=d035acc0c0e1d1c228c9524cc28cb5c866b6648f7f5365ea105c886ea081a503\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"FlowX.AI architecture - FlowX.AI\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"FlowX.AI is a comprehensive, event-driven platform designed to accelerate digital transformation by enabling rapid development of web and mobile applications without extensive coding. The architecture consists of several interconnected components that work together to provide a seamless experience for both developers and end users.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://flowxai.mintlify.site/_mintlify/api/og/v2?division=Platform+overview\u0026amp;title=FlowX.AI+architecture\u0026amp;description=FlowX.AI+is+a+comprehensive%2C+event-driven+platform+designed+to+accelerate+digital+transformation+by+enabling+rapid+development+of+web+and+mobile+applications+wi\u0026amp;theme=3cf14baeb844d8250f9e8ff4\u0026amp;signature=d035acc0c0e1d1c228c9524cc28cb5c866b6648f7f5365ea105c886ea081a503\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/flowxai/tLAtpK66JQ6LptNv/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"FlowX.AI\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#fcb813\">\u003cmeta data-mint-head name=\"zd-site-verification\" content=\"94tteg5ir5of8gkb4twzh\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.flowx.ai/4.7.x/docs/platform-overview/flowx-architecture\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/4.7.x/docs/platform-overview/flowx-architecture.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.flowx.ai/#organization\",\"name\":\"FlowX.AI\",\"url\":\"https://docs.flowx.ai\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/flowxai/38fXEM0a7v86Lg2m/logo/light.png?fit=max\u0026auto=format\u0026n=38fXEM0a7v86Lg2m\u0026q=85\u0026s=d767c06cef433b0a02f40a1f4f785eab\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.flowx.ai#website\",\"name\":\"FlowX.AI\",\"url\":\"https://docs.flowx.ai\",\"publisher\":{\"@id\":\"https://docs.flowx.ai/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.flowx.ai/4.7.x/docs/platform-overview/flowx-architecture#webpage\",\"url\":\"https://docs.flowx.ai/4.7.x/docs/platform-overview/flowx-architecture\",\"name\":\"FlowX.AI architecture\",\"description\":\"FlowX.AI is a comprehensive, event-driven platform designed to accelerate digital transformation by enabling rapid development of web and mobile applications without extensive coding. The architecture consists of several interconnected components that work together to provide a seamless experience for both developers and end users.\",\"dateModified\":\"2025-07-24T08:40:13.000Z\",\"isPartOf\":{\"@id\":\"https://docs.flowx.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.flowx.ai/4.7.x/docs/platform-overview/flowx-architecture#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.flowx.ai/4.7.x/docs/platform-overview/flowx-architecture#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Platform overview\",\"item\":\"https://docs.flowx.ai/4.7.x/docs/platform-overview/frameworks-and-standards/business-process-industry-standards/intro-to-bpmn\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"FlowX.AI architecture\",\"item\":\"https://docs.flowx.ai/4.7.x/docs/platform-overview/flowx-architecture\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.flowx.ai/4.7.x/docs/platform-overview/flowx-architecture#article\",\"headline\":\"FlowX.AI architecture\",\"name\":\"FlowX.AI architecture\",\"description\":\"FlowX.AI is a comprehensive, event-driven platform designed to accelerate digital transformation by enabling rapid development of web and mobile applications without extensive coding. The architecture consists of several interconnected components that work together to provide a seamless experience for both developers and end users.\",\"url\":\"https://docs.flowx.ai/4.7.x/docs/platform-overview/flowx-architecture\",\"mainEntityOfPage\":{\"@id\":\"https://docs.flowx.ai/4.7.x/docs/platform-overview/flowx-architecture#webpage\"},\"dateModified\":\"2025-07-24T08:40:13.000Z\",\"publisher\":{\"@id\":\"https://docs.flowx.ai/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.flowx.ai#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"FlowX.AI\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"FlowX.AI\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/4.7.x/docs/platform-overview/flowx-architecture.md","siteName":"FlowX.AI","nav":{"global":null,"versions":[{"version":"v6.x","tag":"Preview","pages":[{"title":"v6.x","href":"/6.x/docs/platform-overview/flowx-architecture"}]},{"version":"v5.9.x","default":true,"tag":"Latest LTS","pages":[{"title":"v5.9.x","href":"/5.9/docs/platform-overview/flowx-architecture"}]},{"version":"v5.1.x","tag":"LTS","pages":[{"title":"v5.1.x","href":"/5.1/docs/platform-overview/flowx-architecture"}]},{"version":"v4.7.x","tag":"Legacy","tabs":[{"tab":"Documentation","groups":[{"group":"Getting Started","pages":[{"title":"Introduction to FlowX.AI","icon":"sparkles","mode":"wide","href":"/4.7.x/docs/introduction"},{"title":"Building with FlowX.AI","icon":"rocket","href":"/4.7.x/docs/getting-started/building-your-first-proc"},{"title":"AI in FlowX.AI","icon":"hand-sparkles","href":"/4.7.x/docs/getting-started/ai-in-flowx"}]},{"group":"Platform overview","pages":[{"group":"Frameworks and standards","icon":"gears","pages":[{"group":"Business process industry and standards","pages":[{"title":"Intro to BPMN","href":"/4.7.x/docs/platform-overview/frameworks-and-standards/business-process-industry-standards/intro-to-bpmn"},{"title":"Intro to DMN","href":"/4.7.x/docs/platform-overview/frameworks-and-standards/business-process-industry-standards/intro-to-dmn"},{"title":"Intro to MVEL","href":"/4.7.x/docs/platform-overview/frameworks-and-standards/business-process-industry-standards/intro-to-mvel"}]},{"group":"Event-driven architecture frameworks","pages":[{"title":"Intro to Kafka concepts","href":"/4.7.x/docs/platform-overview/frameworks-and-standards/event-driven-architecture-frameworks/intro-to-kafka-concepts"},{"title":"Intro to Elasticsearch","href":"/4.7.x/docs/platform-overview/frameworks-and-standards/event-driven-architecture-frameworks/intro-to-elasticsearch"},{"title":"Intro to Kubernetes","href":"/4.7.x/docs/platform-overview/frameworks-and-standards/event-driven-architecture-frameworks/intro-to-kubernetes"},{"title":"Intro to NGINX","href":"/4.7.x/docs/platform-overview/frameworks-and-standards/event-driven-architecture-frameworks/intro-to-nginx"},{"title":"Intro to Redis","description":"Redis is a fast, open-source, in-memory key-value data store that is commonly used as a cache to store frequently accessed data in memory so that applications can be responsive to users. It delivers sub-millisecond response times enabling millions of requests per second for applications. ","href":"/4.7.x/docs/platform-overview/frameworks-and-standards/event-driven-architecture-frameworks/intro-to-redis"}]}]},{"title":"FlowX.AI architecture","icon":"diagram-project","href":"/4.7.x/docs/platform-overview/flowx-architecture"}]},{"group":"FlowX.AI Designer","pages":[{"title":"FlowX.AI Designer","icon":"pen-ruler","description":"The FlowX.AI Designer is a collaborative, no-code, web-based application development environment, designed to facilitate the creation of web and mobile applications without the need for coding expertise.","href":"/4.7.x/docs/flowx-designer/overview"},{"group":"Design Assets","icon":"pen","pages":[{"title":"Themes","href":"/4.7.x/docs/flowx-designer/design-assets/themes"},{"title":"Fonts","href":"/4.7.x/docs/flowx-designer/design-assets/font-files"},{"title":"Global Media Library","href":"/4.7.x/docs/flowx-designer/design-assets/global-media-library"}]},{"group":"Managing a project flow","icon":"arrow-progress","pages":[{"title":"Creating a new project","href":"/4.7.x/docs/flowx-designer/managing-a-project-flow/creating-a-project"},{"title":"Creating a new process definition","href":"/4.7.x/docs/flowx-designer/managing-a-project-flow/creating-a-new-process-definition"},{"title":"Adding a new node","href":"/4.7.x/docs/flowx-designer/managing-a-project-flow/adding-a-new-node"},{"title":"Adding an action to a node","href":"/4.7.x/docs/flowx-designer/managing-a-project-flow/adding-an-action-to-a-node"},{"title":"Handling decisions in the flow","href":"/4.7.x/docs/flowx-designer/managing-a-project-flow/handling-decisions-in-the-flow"},{"title":"Adding parallel flow branches","href":"/4.7.x/docs/flowx-designer/managing-a-project-flow/adding-more-flow-branches"},{"title":"Creating a User interface","href":"/4.7.x/docs/flowx-designer/managing-a-project-flow/creating-a-user-interface"},{"title":"Moving a token backwards in a process","href":"/4.7.x/docs/flowx-designer/managing-a-project-flow/moving-a-token-backwards-in-a-process"},{"title":"Exporting and importing projects","href":"/4.7.x/docs/flowx-designer/managing-a-project-flow/export-import-a-process-definition"},{"title":"Initiating processes","href":"/4.7.x/docs/flowx-designer/managing-a-project-flow/starting-a-process"}]}]},{"group":"Building projects","pages":[{"title":"Resources","icon":"building-wheat","href":"/4.7.x/docs/projects/resources"},{"group":"Configuration","icon":"box","pages":[{"title":"Projects","href":"/4.7.x/docs/projects/managing-applications/application"},{"title":"Libraries","href":"/4.7.x/docs/projects/managing-applications/libraries"},{"title":"Versioning","href":"/4.7.x/docs/projects/managing-applications/versioning"}]},{"group":"Runtime","icon":"play","pages":[{"title":"Builds","href":"/4.7.x/docs/projects/runtime/builds"},{"title":"Active policy","href":"/4.7.x/docs/projects/runtime/active-policy"},{"title":"Configuration parameters overrides","href":"/4.7.x/docs/projects/runtime/configuration-parameters-overrides"},{"group":"Active process","pages":[{"title":"Process instance","href":"/4.7.x/docs/projects/runtime/active-process/process-instance"},{"title":"Failed process start (exceptions)","href":"/4.7.x/docs/projects/runtime/active-process/failed-process-start"}]},{"title":"Scheduled processes","href":"/4.7.x/docs/projects/runtime/scheduled-processes"}]}]},{"group":"Building blocks","pages":[{"group":"Processes","icon":"network-wired","pages":[{"title":"Process Designer","href":"/4.7.x/docs/building-blocks/process/process"},{"title":"Process definition","href":"/4.7.x/docs/building-blocks/process/process-definition"},{"title":"Data model","href":"/4.7.x/docs/building-blocks/process/data-model"},{"title":"Subprocess management","href":"/4.7.x/docs/building-blocks/process/subprocess"},{"title":"Navigation areas","href":"/4.7.x/docs/building-blocks/process/navigation-areas"}]},{"group":"Nodes","icon":"circle-nodes","pages":[{"title":"BPMN nodes","href":"/4.7.x/docs/building-blocks/node/node"},{"title":"Start/end nodes","href":"/4.7.x/docs/building-blocks/node/start-end-node"},{"title":"Send message/receive message tasks","href":"/4.7.x/docs/building-blocks/node/message-send-received-task-node"},{"title":"Task node","href":"/4.7.x/docs/building-blocks/node/task-node"},{"title":"User task node","href":"/4.7.x/docs/building-blocks/node/user-task-node"},{"title":"Exclusive gateway","href":"/4.7.x/docs/building-blocks/node/exclusive-gateway-node"},{"title":"Parallel gateway","href":"/4.7.x/docs/building-blocks/node/parallel-gateway"},{"group":"Call subprocess tasks","pages":[{"title":"Call activity node","href":"/4.7.x/docs/building-blocks/node/call-subprocess-tasks/call-activity-node"},{"title":"Start embedded subprocess","href":"/4.7.x/docs/building-blocks/node/call-subprocess-tasks/start-embedded-subprocess"}]},{"group":"Message events","pages":[{"title":"Message Events","href":"/4.7.x/docs/building-blocks/node/message-events/message-events"},{"title":"Message catch start event","href":"/4.7.x/docs/building-blocks/node/message-events/message-catch-start-event"},{"group":"Message intermediate events","pages":[{"title":"Message intermediate events overview","href":"/4.7.x/docs/building-blocks/node/message-events/message-intermediate/message-intermediate"},{"title":"Message throw intermediate event","href":"/4.7.x/docs/building-blocks/node/message-events/message-intermediate/message-throw-intermediate-event"},{"title":"Message catch intermediate event","href":"/4.7.x/docs/building-blocks/node/message-events/message-intermediate/message-catch-intermediate-event"},{"title":"Intermediate message events in business processes","href":"/4.7.x/docs/building-blocks/node/message-events/message-intermediate/example-intermediate-message-events"}]},{"title":"Message catch boundary events","href":"/4.7.x/docs/building-blocks/node/message-events/message-catch-boundary-event"}]},{"group":"Timer events","pages":[{"title":"Timer events","href":"/4.7.x/docs/building-blocks/node/timer-events/timer-events"},{"title":"Timer start event (interrupting)","href":"/4.7.x/docs/building-blocks/node/timer-events/timer-start-event"},{"title":"Timer Intermediate Event (interrupting)","href":"/4.7.x/docs/building-blocks/node/timer-events/timer-intermediate-event"},{"title":"Timer boundary event","href":"/4.7.x/docs/building-blocks/node/timer-events/timer-boundary-event"},{"title":"Timer expressions","href":"/4.7.x/docs/building-blocks/node/timer-events/timer-expressions"}]},{"title":"Error events","href":"/4.7.x/docs/building-blocks/node/error-events"}]},{"group":"Actions","icon":"bolt","pages":[{"title":"Node actions","href":"/4.7.x/docs/building-blocks/actions/actions"},{"group":"Business rule actions","pages":[{"title":"Business rules types","href":"/4.7.x/docs/building-blocks/actions/business-rule-action/business-rule-action"},{"title":"Configuring a DMN business rule action","href":"/4.7.x/docs/building-blocks/actions/business-rule-action/dmn-business-rule-action"},{"title":"Extracting additional data in business rules","href":"/4.7.x/docs/building-blocks/actions/business-rule-action/extracting-additional-data"}]},{"title":"Send data to user interface","href":"/4.7.x/docs/building-blocks/actions/send-data-to-user-interface"},{"title":"Upload file action","href":"/4.7.x/docs/building-blocks/actions/upload-file-action"},{"title":"Start subprocess action","href":"/4.7.x/docs/building-blocks/actions/start-subprocess-action"},{"title":"Append params to parent process","href":"/4.7.x/docs/building-blocks/actions/append-params-to-parent-process"},{"title":"Kafka send action","href":"/4.7.x/docs/building-blocks/actions/kafka-send-action"},{"title":"Start integration workflow action","href":"/4.7.x/docs/building-blocks/actions/start-integration-workflow"},{"title":"Start new project instance","href":"/4.7.x/docs/building-blocks/actions/start-new-project-instance"}]},{"group":"UI Designer","icon":"paintbrush","pages":[{"title":"UI Designer","href":"/4.7.x/docs/building-blocks/ui-designer/ui-designer"},{"group":"Root components","pages":[{"title":"Root Components in UI Design","href":"/4.7.x/docs/building-blocks/ui-designer/ui-component-types/root-components/root-components"},{"title":"Container","href":"/4.7.x/docs/building-blocks/ui-designer/ui-component-types/root-components/container"},{"title":"Card","href":"/4.7.x/docs/building-blocks/ui-designer/ui-component-types/root-components/card"},{"title":"Custom component","href":"/4.7.x/docs/building-blocks/ui-designer/ui-component-types/root-components/custom"}]},{"group":"Collections UI elements","pages":[{"title":"Collection component","href":"/4.7.x/docs/building-blocks/ui-designer/ui-component-types/collection/collection"},{"title":"Collection Prototype","href":"/4.7.x/docs/building-blocks/ui-designer/ui-component-types/collection/collection-prototype"}]},{"group":"Form elements","pages":[{"title":"Input","href":"/4.7.x/docs/building-blocks/ui-designer/ui-component-types/form-elements/input-form-field"},{"title":"Text area","href":"/4.7.x/docs/building-blocks/ui-designer/ui-component-types/form-elements/text-area"},{"title":"Select","href":"/4.7.x/docs/building-blocks/ui-designer/ui-component-types/form-elements/select-form-field"},{"title":"Checkbox","href":"/4.7.x/docs/building-blocks/ui-designer/ui-component-types/form-elements/checkbox-form-field"},{"title":"Radio","href":"/4.7.x/docs/building-blocks/ui-designer/ui-component-types/form-elements/radio-form-field"},{"title":"Switch","href":"/4.7.x/docs/building-blocks/ui-designer/ui-component-types/form-elements/switch-form-field"},{"title":"Datepicker","href":"/4.7.x/docs/building-blocks/ui-designer/ui-component-types/form-elements/datepicker-form-field"},{"title":"Slider","href":"/4.7.x/docs/building-blocks/ui-designer/ui-component-types/form-elements/slider"},{"title":"Segmented button","href":"/4.7.x/docs/building-blocks/ui-designer/ui-component-types/form-elements/segmented-button"}]},{"title":"Buttons","href":"/4.7.x/docs/building-blocks/ui-designer/ui-component-types/buttons"},{"title":"File preview","href":"/4.7.x/docs/building-blocks/ui-designer/ui-component-types/file-preview"},{"title":"Table","href":"/4.7.x/docs/building-blocks/ui-designer/ui-component-types/table"},{"title":"Image","href":"/4.7.x/docs/building-blocks/ui-designer/ui-component-types/image"},{"title":"Indicators","href":"/4.7.x/docs/building-blocks/ui-designer/ui-component-types/indicators"},{"title":"Typography","href":"/4.7.x/docs/building-blocks/ui-designer/ui-component-types/typography"},{"title":"UI actions","href":"/4.7.x/docs/building-blocks/ui-designer/ui-actions"},{"title":"Validators","href":"/4.7.x/docs/building-blocks/ui-designer/validators"},{"title":"Dynamic \u0026 computed values","href":"/4.7.x/docs/building-blocks/ui-designer/dynamic-and-computed-values"},{"title":"Localization and internationalization","href":"/4.7.x/docs/building-blocks/ui-designer/localization-and-i18n"},{"title":"Layout configuration","href":"/4.7.x/docs/building-blocks/ui-designer/layout-configuration"},{"title":"Conditional styling","href":"/4.7.x/docs/building-blocks/ui-designer/conditional-styling"}]},{"title":"Token","icon":"coins","href":"/4.7.x/docs/building-blocks/token"},{"title":"Supported scripts","icon":"file-code","href":"/4.7.x/docs/building-blocks/supported-scripts"}]},{"group":"Platform deep dive","pages":[{"group":"Core components","icon":"puzzle","pages":[{"title":"FlowX.AI Engine","href":"/4.7.x/docs/platform-deep-dive/core-components/flowx-engine"},{"title":"FlowX.AI Advancing Controller","href":"/4.7.x/docs/platform-deep-dive/core-components/advancing-controller"},{"title":"FlowX.AI Events Gateway","href":"/4.7.x/docs/platform-deep-dive/core-components/events-gateway"}]},{"group":"Core extensions","icon":"puzzle-piece","pages":[{"group":"Content management","pages":[{"title":"FlowX.AI CMS","href":"/4.7.x/docs/platform-deep-dive/core-extensions/content-management/content-management"},{"title":"Enumerations","href":"/4.7.x/docs/platform-deep-dive/core-extensions/content-management/enumerations"},{"title":"Substitution tags","href":"/4.7.x/docs/platform-deep-dive/core-extensions/content-management/substitution-tags"},{"title":"Media library","href":"/4.7.x/docs/platform-deep-dive/core-extensions/content-management/media-library"}]},{"group":"Task management","pages":[{"title":"Task management","href":"/4.7.x/docs/platform-deep-dive/core-extensions/task-management/task-management-overview"},{"title":"Using allocation rules","href":"/4.7.x/docs/platform-deep-dive/core-extensions/task-management/using-allocation-rules"},{"title":"Using out of office records","href":"/4.7.x/docs/platform-deep-dive/core-extensions/task-management/using-out-of-office-records"},{"title":"Using stages","href":"/4.7.x/docs/platform-deep-dive/core-extensions/task-management/using-stages"}]},{"title":"Configuration parameters","href":"/4.7.x/docs/platform-deep-dive/core-extensions/configuration-parameters"},{"title":"FlowX.AI Audit","href":"/4.7.x/docs/platform-deep-dive/core-extensions/audit"},{"title":"FlowX.AI Scheduler","href":"/4.7.x/docs/platform-deep-dive/core-extensions/scheduler"},{"title":"FlowX.AI Data Search","href":"/4.7.x/docs/platform-deep-dive/core-extensions/search-data-service"}]},{"group":"AI Core","icon":"microchip","pages":[{"title":"Overview","icon":"microchip","href":"/4.7.x/docs/platform-deep-dive/ai-core/ai-core-overview"},{"title":"AI Developer","icon":"robot","href":"/4.7.x/docs/platform-deep-dive/ai-core/ai-developer"},{"title":"AI Designer","icon":"robot","href":"/4.7.x/docs/platform-deep-dive/ai-core/ai-designer"},{"title":"AI Assistant","icon":"robot","href":"/4.7.x/docs/platform-deep-dive/ai-core/ai-assistant"},{"title":"AI Analyst","icon":"robot","href":"/4.7.x/docs/platform-deep-dive/ai-core/ai-analyst"}]},{"group":"Plugins","icon":"puzzle-piece-simple","pages":[{"title":"FlowX custom plugins","href":"/4.7.x/docs/platform-deep-dive/plugins/custom-plugins"},{"group":"Documents plugin","pages":[{"title":"Documents plugin","href":"/4.7.x/docs/platform-deep-dive/plugins/custom-plugins/documents-plugin/documents-plugin-overview"},{"title":"Generating documents","href":"/4.7.x/docs/platform-deep-dive/plugins/custom-plugins/documents-plugin/generating-from-html-templates"},{"title":"Managing templates","href":"/4.7.x/docs/platform-deep-dive/plugins/custom-plugins/documents-plugin/managing-html-templates"},{"title":"Creating and uploading a new document","href":"/4.7.x/docs/platform-deep-dive/plugins/custom-plugins/documents-plugin/uploading-a-new-document"},{"title":"Converting files","href":"/4.7.x/docs/platform-deep-dive/plugins/custom-plugins/documents-plugin/converting-documents-to-different-formats"},{"title":"Splitting documents","href":"/4.7.x/docs/platform-deep-dive/plugins/custom-plugins/documents-plugin/splitting-a-document"},{"title":"Deleting files","href":"/4.7.x/docs/platform-deep-dive/plugins/custom-plugins/documents-plugin/deleting-a-file"},{"title":"Getting URLs","href":"/4.7.x/docs/platform-deep-dive/plugins/custom-plugins/documents-plugin/getting-urls-to-documents"},{"title":"Listing stored files","href":"/4.7.x/docs/platform-deep-dive/plugins/custom-plugins/documents-plugin/listing-stored-files"}]},{"group":"Notifications plugin","pages":[{"title":"Notifications plugin","href":"/4.7.x/docs/platform-deep-dive/plugins/custom-plugins/notifications-plugin/notifications-plugin-overview"},{"title":"Managing notification templates","href":"/4.7.x/docs/platform-deep-dive/plugins/custom-plugins/notifications-plugin/managing-notification-templates"},{"title":"Sending a notification","href":"/4.7.x/docs/platform-deep-dive/plugins/custom-plugins/notifications-plugin/sending-a-notification"},{"title":"Sending an email","href":"/4.7.x/docs/platform-deep-dive/plugins/custom-plugins/notifications-plugin/sending-an-email-with-attachments"},{"title":"Forwarding notifications","href":"/4.7.x/docs/platform-deep-dive/plugins/custom-plugins/notifications-plugin/forwarding-notifications-to-an-external-system"},{"group":"OTP flow","pages":[{"title":"Handling OTP","href":"/4.7.x/docs/platform-deep-dive/plugins/custom-plugins/notifications-plugin/otp-flow/otp-flow"},{"title":"Generate OTP","href":"/4.7.x/docs/platform-deep-dive/plugins/custom-plugins/notifications-plugin/otp-flow/generate-otp"},{"title":"Validate OTP","href":"/4.7.x/docs/platform-deep-dive/plugins/custom-plugins/notifications-plugin/otp-flow/validate-otp"}]}]},{"title":"Languages","href":"/4.7.x/docs/platform-deep-dive/plugins/languages"},{"title":"OCR plugin","href":"/4.7.x/docs/platform-deep-dive/plugins/custom-plugins/ocr-plugin"},{"group":"Reporting plugin","pages":[{"title":"Reporting plugin","href":"/4.7.x/docs/platform-deep-dive/plugins/custom-plugins/reporting/reporting-overview"},{"title":"Authorization \u0026 access roles","href":"/4.7.x/docs/platform-deep-dive/plugins/custom-plugins/reporting/access-and-authorization"}]},{"title":"WYSIWYG editor","href":"/4.7.x/docs/platform-deep-dive/plugins/wysiwyg"}]},{"group":"Integrations","icon":"link","pages":[{"title":"Overview","href":"/4.7.x/docs/platform-deep-dive/integrations/integrations-overview"},{"title":"Integration Designer","href":"/4.7.x/docs/platform-deep-dive/integrations/integration-designer"},{"title":null,"href":"/4.7.x/docs/platform-deep-dive/integrations/building-a-connector"},{"title":"Creating a Kafka consumer","href":"/4.7.x/docs/platform-deep-dive/integrations/creating-a-kafka-consumer"},{"title":"Creating a Kafka producer","href":"/4.7.x/docs/platform-deep-dive/integrations/creating-a-kafka-producer"},{"title":"Mock integrations","href":"/4.7.x/docs/platform-deep-dive/integrations/mock-integrations"},{"title":"Observability with OpenTelemetry","href":"/4.7.x/docs/platform-deep-dive/integrations/open-telemetry"}]},{"title":"Third-party components","icon":"cube","href":"/4.7.x/docs/platform-deep-dive/third-party-components"},{"group":"User roles management","icon":"user","pages":[{"title":"Swimlanes","href":"/4.7.x/docs/platform-deep-dive/user-roles-management/swimlanes"},{"title":"Business filters","href":"/4.7.x/docs/platform-deep-dive/user-roles-management/business-filters"}]}]},{"group":"API reference","pages":[{"group":"Start processes","pages":[{"title":"Get Build Info","api":"GET https://admin.devmain.flowxai.dev/rtm/api/runtime/app/{appId}/build/info","href":"/4.7.x/docs/api/start-process/get-build-info"},{"title":"Start process by build id and process name","api":"POST https://admin.devmain.flowxai.dev/rtm/api/runtime/app/{appId}/build/{buildId}/process-name/{processDefinitionName}/start","href":"/4.7.x/docs/api/start-process/rest2"},{"title":"Start process with name and inherit values","api":"POST {ENGINE_URL}/api/process/{PROCESS_DEFINITION_NAME}/start/inheritFrom/{RELATED_PROCESS_INSTANCE_UUID}","href":"/4.7.x/docs/api/start-process/rest3"}]},{"title":"Execute action","api":"POST https://admin.devmain.flowxai.dev/onboarding/api/runtime/process/{processUuid}/token/{tokenUuid}/ui-action/{uiActionFlowxUuid}/context/main/execute","href":"/4.7.x/docs/api/rest4"},{"title":"Enable misconfigurations","api":"GET {{baseUrlAdmin}}/api/process-versions/compute","href":"/4.7.x/docs/api/add-misconfigurations"},{"title":"List buckets","api":"GET {{documentUrl}}/internal/storage/buckets","href":"/4.7.x/docs/api/list-buckets"},{"title":"List objects in a bucket","api":"GET {{documentURL}}/internal/storage/buckets/{BUCKET_NAME}","href":"/4.7.x/docs/api/list-objects-in-buckets"},{"title":"Download a file","api":"GET documentURL/internal/storage/download","href":"/4.7.x/docs/api/download-file"},{"title":"Add new Kafka exchange mock","api":"POST {MOCK_ADAPTER_URL}/api/kafka-exchanges/","href":"/4.7.x/docs/api/add-kafka-mock"},{"title":"View Kafka exchanges","api":"GET {MOCK_ADAPTER_URL}/api/kafka-exchanges/","href":"/4.7.x/docs/api/view-kafka-exchanges"}]}]},{"tab":"Release notes","pages":[{"title":"Release notes","href":"/release-notes/overview"}]},{"tab":"SDKs","pages":[{"title":"SDKs","href":"/4.7.x/sdks/sdks-overview"}]},{"tab":"Setup guides","pages":[{"title":"Setup guides","href":"/4.7.x/setup-guides/setup-guides-overview"}]}]},{"version":"v4.1.x","tag":"Legacy","pages":[{"title":"v4.1.x","href":"/4.1.x/docs/platform-overview/flowx-architecture"}]},{"version":"v3.x","tag":"Legacy","pages":[{"title":"v3.x","href":"/3.x/docs/platform-overview/flowx-architecture"}]}]},"basePath":"","title":"FlowX.AI architecture - FlowX.AI","buildId":"dpl_DqYu5MPb49gWBBbUGgpHQUmCHY3P","deploymentId":"dpl_DqYu5MPb49gWBBbUGgpHQUmCHY3P","dynamics":["10e4515597","a74be98ba7","07c022d89b"],"chunks":["BannerMarkdown-DV3Oq1fY.js","dist-C-XZBk9h.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","clsx-D3Isdib3.js","html-void-elements-mCSPHezU.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","zoom-image-lightbox-DTFzvaXJ.js","lightbox-handle-r17bVUz3.js","Frame-u3J1-UOn.js","DynamicMarkdown-B-f2cqXQ.js"]}