Skip to content

Architecture

Flowgentic provides a thin, opinionated layer that standardizes agent components and lets you run the same logic on multi-agent orchestration frameworks (e.g. LangGraph) on HPC workflow engines (e.g. Radical AsyncFlow).

Architecture: Execution Bridge Pattern

flowchart TD
    subgraph HighLevel["High-Level: Agent Framework"]
        A[Agent Graph Definition]
        B[Agent Nodes & Tools]
        C[Conditional Routing]
    end

    subgraph MiddleLayer["Middle Layer: FlowGentic Abstraction"]
        D[Graph Compiler]
        E[Node to Task Translation]
        F[State Serialization]
        G[Dependency Resolution]
    end

    subgraph LowLevel["Low-Level: HPC Execution Backend"]
        H[HPC Task Scheduler]
        I[Parallel Execution Units]
        J[Distributed Memory/State]
        K[Resource Manager]
    end

    A --> D
    B --> E
    C --> G

    D --> E
    E --> F
    F --> G

    G --> H
    H --> I
    I --> J
    J --> K

    K -.->|Results| G
    G -.->|State Updates| F
    F -.->|Checkpoints| A

Wrappers

If you have multiple wrappers inside a node we recommend to adhere to the following pattern in order to stick dependency resolution best practices:

flowchart TD
    subgraph "ASYNCFLOW WRAPPERS"
        A[EXECUTION_BLOCK]
        subgraph SERVICES["SERVICE PATTERNS"]
            direction LR
            B[SERVICE_TASK<br/>Persistent Internal Services]
            C[TOOL_AS_SERVICE<br/>LLM-Callable Services]
        end

        subgraph TOOLS["AGENT TOOLS"]
            direction LR
            D[AGENT_TOOL_AS_FUNCTION<br/>Simple Tools]
            E[AGENT_TOOL_AS_MCP<br/>MCP Integration]
        end

        subgraph TASKS["FUNCTION TASKS"]
            direction LR
            F[FUNCTION_TASK<br/>Deterministic Operations]
        end

        A -- ORCHESTRATES --> SERVICES
        A -- ORCHESTRATES --> TOOLS
        A -- ORCHESTRATES --> TASKS
    end

    SERVICES -.->|Caching| B
    SERVICES -.->|LLM Calls| C
    TOOLS -.->|Direct Call| D
    TOOLS -.->|External Server| E
    TASKS -.->|Pure Functions| F

However, if you don't have multiple dependencies in a given node, you can define the node with the function_task execution wrapper. More information here

Flow Type Categories

Service Patterns (Persistent, Stateful) - SERVICE_TASK: Internal services with continual uptime (database pools, Redis clients) - TOOL_AS_SERVICE: LLM-callable services with continual uptime (Weather APIs, search tools)

Agent Tools (LLM-Callable) - AGENT_TOOL_AS_FUNCTION: Simple synchronous tools for LLMs - AGENT_TOOL_AS_MCP: External MCP server integration

Function Tasks - FUNCTION_TASK: Non-LLM operations (validation, formatting)

Execution Block - EXECUTION_BLOCK: LangGraph nodes (orchestration layer, optional)