Skip to main content
The Pipeline struct represents a complete automation config with blocks, data sources, proxy settings, and browser configuration.

Pipeline struct

Defined in src/pipeline/mod.rs:28-45
id
Uuid
required
Unique identifier for the pipeline
name
string
required
Human-readable config name
author
string
Author name or identifier
created
DateTime<Utc>
required
Timestamp when the pipeline was created (ISO 8601)
modified
DateTime<Utc>
required
Timestamp of last modification (ISO 8601)
blocks
Vec<Block>
required
Main execution blocks run for each data line
startup_blocks
Vec<Block>
Blocks run once at job start (before processing data)
data_settings
DataSettings
required
Wordlist format and parsing configuration
proxy_settings
ProxySettings
required
Proxy rotation and ban detection settings
browser_settings
BrowserSettings
required
Browser and TLS fingerprinting configuration
runner_settings
RunnerSettings
Job execution parameters (max CPM, timeout, retries)
output_settings
OutputSettings
Result output configuration

DataSettings

Defines how to parse input data (wordlist).
wordlist_type
string
required
Preset format name: "Credentials", "Url", "Custom", etc.
separator
char
required
Character to split each line on (typically : for credentials)Default: ':'
slices
Vec<string>
required
Ordered variable names for split partsExample: ["USER", "PASS"] for credentials

ProxySettings

Proxy rotation and health checking configuration.
proxy_mode
ProxyMode
required
Rotation mode: None, Rotate, Sticky, CpmLimited
proxy_sources
Vec<ProxySource>
required
Proxy sources (file, URL, inline list)
ban_duration_secs
u64
required
How long to ban a proxy after detection (seconds)Default: 300
max_retries_before_ban
u32
required
Failed attempts before banning a proxyDefault: 3
cpm_per_proxy
u32
Max checks per minute per proxy (for CpmLimited mode)
proxy_groups
Vec<ProxyGroup>
Named proxy groups for different pools
active_group
string
Active proxy group name (empty = use default sources)

BrowserSettings

Browser and TLS emulation configuration.
browser
string
required
Browser type: "chrome", "firefox", "edge"Default: "chrome"
ja3
string?
JA3 TLS fingerprint override (hex string)
http2_fingerprint
string?
HTTP/2 SETTINGS frame fingerprint
user_agent
string?
Custom User-Agent override

RunnerSettings

Job execution limits and timeout configuration.
threads
u32
Number of concurrent worker threadsDefault: 1
skip
u32
Skip the first N data linesDefault: 0
take
u32
Maximum data lines to process (0 = all)Default: 0
continue_statuses
Vec<BotStatus>
Statuses that re-queue the data line (e.g., ["Retry"])Default: []
custom_status_name
string
Custom label for Custom result statusDefault: ""
max_retries
u32
Max retry attempts per data line before marking as errorDefault: 0
concurrent_per_proxy
u32
Maximum concurrent uses per proxy (0 = unlimited)Default: 0
start_threads_gradually
bool
Start threads gradually instead of all at onceDefault: false
gradual_delay_ms
u32
Delay between starting each thread (milliseconds)Default: 1000

OutputSettings

Result output configuration.
save_to_file
bool
Save hits to text filesDefault: true
save_to_database
bool
Save hits to SQLite databaseDefault: false
include_response
bool
Include full response body in output (debug mode)Default: false
output_directory
string
Output directory for result filesDefault: "results"
output_format
string
Custom output format templateDefault: "{data} | {captures}"
database_path
string
SQLite database file pathDefault: ""
output_format_type
OutputFormat
Output file format: Txt, Csv, JsonDefault: Txt
capture_filters
Vec<CaptureFilter>
Filters applied before writing outputDefault: []

Example pipeline

From configs/example.rfx:
{
  "id": "00000000-0000-0000-0000-000000000001",
  "name": "Example Login Config",
  "author": "reqflow",
  "created": "2026-02-15T00:00:00Z",
  "modified": "2026-02-15T00:00:00Z",
  "blocks": [
    {
      "id": "10000000-0000-0000-0000-000000000001",
      "block_type": "HttpRequest",
      "label": "Login Request",
      "disabled": false,
      "safe_mode": false,
      "settings": {
        "type": "HttpRequest",
        "method": "POST",
        "url": "https://httpbin.org/post",
        "headers": [
          ["Content-Type", "application/json"]
        ],
        "body": "{\"email\":\"<input.USER>\",\"password\":\"<input.PASS>\"}"
      }
    }
  ],
  "startup_blocks": [],
  "data_settings": {
    "wordlist_type": "Credentials",
    "separator": ":",
    "slices": ["USER", "PASS"]
  },
  "proxy_settings": {
    "proxy_mode": "None",
    "proxy_sources": [],
    "ban_duration_secs": 300,
    "max_retries_before_ban": 3
  },
  "browser_settings": {
    "browser": "chrome",
    "ja3": null,
    "http2_fingerprint": null,
    "user_agent": null
  }
}

Default values

From src/pipeline/mod.rs:47-64:
impl Default for Pipeline {
    fn default() -> Self {
        Self {
            id: Uuid::new_v4(),
            name: "New Config".into(),
            author: String::new(),
            created: Utc::now(),
            modified: Utc::now(),
            blocks: Vec::new(),
            startup_blocks: Vec::new(),
            data_settings: DataSettings::default(),
            proxy_settings: ProxySettings::default(),
            browser_settings: BrowserSettings::default(),
            runner_settings: RunnerSettings::default(),
            output_settings: OutputSettings::default(),
        }
    }
}

See also