Skip to content

Node Types

FlowDrop ships with 8 built-in node types, each designed for specific workflow patterns.

TypePurposeDescription
defaultFull-featured nodesInput/output port lists, icon, label, description
simpleCompact layoutHeader with icon and description, space-efficient
squareIcon-onlyMinimal design for simple operations
toolAI agent toolsTool metadata with badge label
gatewayBranching logicConditional output paths with multiple branches
terminalStart/end pointsCircular nodes for workflow entry and exit
ideaConceptual flowBPMN-like flow nodes for conceptual diagrams
noteDocumentationMarkdown-enabled sticky notes (no execution)

For the complete JSON structure, see Node Structure. For port definitions and data types, see Port System & Data Types.

Full-featured node with input/output port lists, icon, label, and description. Suitable for most workflow steps.

Compact layout with header icon and description. Space-efficient for nodes that don’t need visible ports.

Icon-only minimal design. Ideal for simple operations where the icon alone conveys the purpose.

Designed for AI agent tools. Displays tool metadata including version, badge label, and description.

Branching logic node with conditional output paths. Supports multiple branches for routing workflow execution.

Circular start/end point nodes. Used to mark workflow entry and exit points.

Conceptual idea node for BPMN-like flow diagrams. Lightweight node with a colored top border accent.

Markdown-enabled sticky notes for documentation. These are non-executing nodes meant for annotations.

FlowDrop validates connections automatically:

  • Type compatibility — only compatible port data types can connect
  • Cycle detection — prevents circular dependencies (O(V+E) algorithm)
  • Loopback prevention — nodes cannot connect to themselves

When dragging a node near compatible ports, FlowDrop can auto-connect them. This is configurable via editor settings:

const app = await mountFlowDropApp(container, {
features: {
proximityConnect: true,
proximityConnectDistance: 50 // pixels
}
});

Nodes can define user-configurable ports through special config properties:

{
"dynamicInputs": {
"type": "array",
"title": "Input Ports",
"items": {
"type": "object",
"properties": {
"id": { "type": "string", "title": "Port ID" },
"name": { "type": "string", "title": "Port Name" },
"dataType": { "type": "string", "title": "Data Type", "default": "any" }
}
}
}
}

Beyond the built-in types, you can register custom Svelte components as node types. See the Custom Nodes guide for details.