OpenFlow Protocol

Node Core

Node Base Schema

All nodes extend the base node interface:

{
  id: "alphanumeric_underscore, 1-50 chars (required, unique within flow)",
  type: "'LLM' | 'TEXT_EMBEDDING' | 'DOCUMENT_SPLITTER' | 'VECTOR_INSERT' | 'VECTOR_SEARCH' | 'VECTOR_UPDATE' | 'VECTOR_DELETE' | 'FOR_EACH' | 'UPDATE_VARIABLE' | 'CONDITION' (required)",
  name: "string, 1-100 chars (required, display name)",
  description: "markdown_text, max 500 chars (optional, node purpose)",
  tags: "string_array, alphanumeric labels (optional, ['data', 'ai', 'processing'])",
  conditional: "ConditionalExecution object (optional, execution conditions)",
  timeout: "integer_milliseconds, 1000-300000, default: 30000 (optional, execution timeout)",
  retry: "RetryPolicy object (optional, failure handling)"
}

Data Types

{
  STRING: "'string' (textual data)",
  NUMBER: "'number' (numeric data)",
  BOOLEAN: "'boolean' (true/false values)",
  ARRAY: "'array' (list of items)",
  OBJECT: "'object' (key-value pairs)"
}

Retry Policy

Define retry behavior for failed node executions:

{
  max_attempts: "integer, 1-10, default: 1 (maximum retry attempts)",
  backoff: "'linear' | 'exponential' | 'fixed' (delay calculation strategy)",
  base_delay: "integer_milliseconds, 100-60000, default: 1000 (initial delay between retries)",
  max_delay: "integer_milliseconds, 1000-300000, default: 30000 (maximum delay cap)",
  retry_on: "string_array, error_types (['timeout', 'network_error', 'rate_limit', 'server_error'])"
}

Metadata Object

Optional metadata for flows and nodes:

{
  created: "iso8601_timestamp, format: '2024-01-15T10:30:00Z' (creation date)",
  modified: "iso8601_timestamp, format: '2024-01-15T10:30:00Z' (last modification date)",
  version_history: "version_object_array, [{version: '1.0.0', changes: 'Initial creation', date: '2024-01-15T10:30:00Z'}]",
  documentation: "markdown_string, detailed node documentation and usage examples",
  examples: "example_object_array, [{name: 'Basic Usage', description: 'Simple example', config: {...}}]",
  custom: "key_value_object, user-defined metadata properties {author: 'John Doe', category: 'data-processing'}"
}

Node Specification

The OpenFlow Protocol defines the following core node types:

Core Node Types

  1. LLM Node - Large Language Model operations
  2. Document Splitter Node - Document processing and page extraction
  3. Text Embedding Node - Text-to-vector conversion
  4. Vector Insert Node - Vector database storage operations
  5. Vector Search Node - Semantic similarity search
  6. Vector Update Node - Vector database modification
  7. Vector Delete Node - Vector database deletion
  8. For Each Node - Iterative processing of arrays
  9. Update Variable Node - Variable manipulation operations
  10. Condition Node - Conditional branching logic

Node Type Registry

Implementations MAY support additional node types through extensions. Custom node types MUST:

  1. Follow the base node schema
  2. Use a namespaced type identifier (e.g., custom:my_node)
  3. Provide complete input/output schema definitions
  4. Include validation and error handling

On this page