> ## Documentation Index
> Fetch the complete documentation index at: https://docs.flowra.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Workflows and agents

> Canonical explanation of static workflows vs agents in Flowra — when to use each and how they run.

This is the canonical developer explanation of **workflow** vs **agent**. Product-level summary: [How Flowra works](/product/how-flowra-works). Native tool slugs: [Native tools: Workflow](/guides/native-tools/workflow). API CRUD and execute: [Workflows](/guides/workflows).

## Same record, two behaviors

In Flowra both are stored as a **workflow** with `workflowType`:

|                | **Workflow** (`static`)                                                               | **Agent** (`agent`)                                                                                                  |
| -------------- | ------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- |
| Behavior       | Fixed **graph** of steps (nodes and edges): actions, code, optional `llm_agent` nodes | Conversational AI: system prompt + tools; the model chooses tools each turn                                          |
| Best for       | Scheduled jobs, ETL, “always A → B → C”, approvals (`human_wait`)                     | Chat UIs, support bots, open-ended tasks                                                                             |
| How you run it | `POST /workflow/manager/execute/{id}`, cron, or trigger tools                         | Dashboard chat, embeds, or [Threads](/guides/threads) / Graphify stream — not the static execute path for chat turns |
| Triggers       | `manual`, `cron`, or `trigger_tool`                                                   | `manual` (chat) or `trigger_tool` for inbound events                                                                 |

```mermaid theme={null}
flowchart TB
  subgraph staticWf ["Workflow static"]
    T1[Trigger]
    S[start]
    A[action or code]
    L[optional llm_agent node]
    E[end]
    T1 --> S --> A --> L --> E
  end

  subgraph agentWf [Agent]
    U[User message or webhook]
    AI[LLM plus system prompt]
    Tools[Tools chosen each turn]
    U --> AI --> Tools
    AI --> U
  end
```

<Note>
  A **static** workflow can still contain **`llm_agent` nodes** — AI runs only inside that step, while the overall path is your graph. An **agent** has no fixed top-level graph.
</Note>

## Which path should you use?

```mermaid theme={null}
flowchart TD
  Q{What do you need?}
  Q -->|Fixed multi-step automation| W[Create static workflow]
  Q -->|Chat or AI picks tools| A[Create agent]
  Q -->|Schedule or webhook| TR[Attach trigger]
  Q -->|Pause for approval| H[human_wait plus resume]
  W --> TR
  A --> TR
```

* Need a human to approve a step? See [Human in the loop](/guides/human-in-the-loop).
* Building a chat UI? See [Threads](/guides/threads).
* Exposing tools to Cursor? See [MCP](/guides/mcp).

## Related

* [Workflows](/guides/workflows) — List, create, execute, executions
* [Triggers](/guides/triggers)
* [Skills](/guides/skills) — Attach skill packs to agents
* [Native tools: Workflow](/guides/native-tools/workflow)
