Configuration

Configuration Reference

config/voodflow.php

The file is created at config/voodflow.php when you run php artisan voodflow:install (recommended) or:

BASH
php artisan vendor:publish --tag="voodflow-config"

See Installation for the full setup flow.

PHP
return [

    /*
    |--------------------------------------------------------------------------
    | Auto-discover Laravel Events
    |--------------------------------------------------------------------------
    | When true, Voodflow scans the application for dispatchable event classes
    | and makes them selectable in the Event Trigger node.
    */
    'auto_discover_events' => env('VOODFLOW_AUTO_DISCOVER_EVENTS', false),

    /*
    |--------------------------------------------------------------------------
    | Queue Connection
    |--------------------------------------------------------------------------
    | The queue connection to use for async workflow execution.
    | Set to null to use the default Laravel queue connection.
    */
    'queue_connection' => env('VOODFLOW_QUEUE', null),

    /*
    |--------------------------------------------------------------------------
    | Synchronous Execution
    |--------------------------------------------------------------------------
    | When true, workflows execute immediately in the current process.
    | Use this only for development or environments without a queue worker.
    | In production, set to false and run a queue worker.
    */
    'execute_sync' => env('VOODFLOW_EXECUTE_SYNC', false),

    /*
    |--------------------------------------------------------------------------
    | Maximum Retry Attempts
    |--------------------------------------------------------------------------
    | How many times Voodflow will automatically retry a failed execution.
    | Set to 0 to disable retries.
    */
    'max_retry_attempts' => env('VOODFLOW_MAX_RETRY_ATTEMPTS', 3),

    /*
    |--------------------------------------------------------------------------
    | Redis Context Cache
    |--------------------------------------------------------------------------
    | When true, active execution contexts are cached in Redis for improved
    | performance on large or complex workflows.
    */
    'use_redis_cache' => env('VOODFLOW_USE_REDIS_CACHE', false),

    /*
    |--------------------------------------------------------------------------
    | Context Size Warning Threshold
    |--------------------------------------------------------------------------
    | Emit a log warning when an execution context exceeds this size (in KB).
    | Large contexts indicate data being accumulated in memory inefficiently.
    */
    'context_size_warning_threshold' => env('VOODFLOW_CONTEXT_SIZE_WARNING_KB', 500),

    /*
    |--------------------------------------------------------------------------
    | Date Format
    |--------------------------------------------------------------------------
    | The PHP date() format string used when resolving {{now}} and date-related
    | tags in node configurations (SendMail, SendWebhook, etc.).
    */
    'date_format' => env('VOODFLOW_DATE_FORMAT', 'd/m/Y H:i'),

    /*
    |--------------------------------------------------------------------------
    | Model Bindings
    |--------------------------------------------------------------------------
    | Override the default Eloquent models used by Voodflow.
    | Useful when you need to extend models with custom behaviour.
    */
    'models' => [
        'workflow'       => \Voodflow\Voodflow\Models\Workflow::class,
        'node'           => \Voodflow\Voodflow\Models\Node::class,
        'edge'           => \Voodflow\Voodflow\Models\Edge::class,
        'execution'      => \Voodflow\Voodflow\Models\Execution::class,
        'execution_node' => \Voodflow\Voodflow\Models\ExecutionNode::class,
    ],

    /*
    |--------------------------------------------------------------------------
    | Table Names
    |--------------------------------------------------------------------------
    | Override if you have a table prefix or need to avoid conflicts.
    */
    'table_names' => [
        'workflows'          => 'voodflow_workflows',
        'nodes'              => 'voodflow_nodes',
        'edges'              => 'voodflow_edges',
        'executions'         => 'voodflow_executions',
        'execution_nodes'    => 'voodflow_execution_nodes',
        'model_integrations' => 'voodflow_model_integrations',
    ],

];

Environment Variables

Variable Default Description
VOODFLOW_AUTO_DISCOVER_EVENTS false Scan app for event classes automatically
VOODFLOW_QUEUE null Queue connection name (e.g. redis, database)
VOODFLOW_EXECUTE_SYNC false true = inline execution, false = queued
VOODFLOW_MAX_RETRY_ATTEMPTS 3 Auto-retry failed executions
VOODFLOW_USE_REDIS_CACHE false Cache execution context in Redis
VOODFLOW_CONTEXT_SIZE_WARNING_KB 500 Log warning above this context size
VOODFLOW_DATE_FORMAT d/m/Y H:i PHP date format for {{now}}
VOODFLOW_WAITS_ENABLED true Enable wait / resume (approvals, signals, dates)
VOODFLOW_VERSIONING_ENABLED true Workflow version snapshots
VOODFLOW_APPROVALS_MAIL true Send approval emails
VOODFLOW_APPROVALS_SIGNED_URL_MINUTES 10080 Signed link lifetime when wait has no expiry
VOODFLOW_APPROVALS_REQUIRE_AUTH true Decide links require login
VOODFLOW_APPROVALS_REQUIRE_RECIPIENT_MATCH true Logged-in user must match recipient
VOODFLOW_CHAT_WEBHOOK_TEMPLATES true Register Slack/Discord/Teams/Telegram templates
VOODFLOW_MAX_WORKFLOWS (empty) Soft cap on workflow count (null = unlimited)
VOODFLOW_SSRF_PROTECTION false Harden outbound HTTP against SSRF
VOODFLOW_AUTHORIZATION auto auto, permissions, or panel (see below)
VOODFLOW_VOODBUILDER_BLOCKS false Master switch for VoodBuilder companion blocks

Authorization without Filament Shield

Resource policies check Shield-style abilities such as ViewAny:Workflow. On a stock Filament install those abilities do not exist, so the Voodflow navigation would be empty. VOODFLOW_AUTHORIZATION selects the driver:

Driver Behavior
auto (default) If Filament Shield is installed, require named abilities. Otherwise any user who can access the Filament panel may use Voodflow.
permissions Always require named abilities (Shield or your own Gate).
panel Allow any Filament panel user and ignore named abilities.
PHP
'authorization' => [
    'driver' => env('VOODFLOW_AUTHORIZATION', 'auto'),
],

VoodBuilder companion blocks

When voodflow/voodbuilder is installed, Voodflow can register two Editor blocks: a read-only workflow demo canvas and a core-nodes marketing grid. They are off by default so customer apps do not see them in the block library.

PHP
'voodbuilder' => [
    'enabled' => filter_var(env('VOODFLOW_VOODBUILDER_BLOCKS', false), FILTER_VALIDATE_BOOLEAN),
    'workflow_demo_block' => filter_var(env('VOODFLOW_VOODBUILDER_WORKFLOW_DEMO_BLOCK', true), FILTER_VALIDATE_BOOLEAN),
    'core_nodes_grid_block' => filter_var(env('VOODFLOW_VOODBUILDER_CORE_NODES_GRID_BLOCK', true), FILTER_VALIDATE_BOOLEAN),
],

enabled is the master switch. The per-block flags apply only when it is on. The demo canvas needs the host Vite entry from VoodbuilderWorkflowDemoAssets::viteEntry() and the npm peers react, react-dom, and @xyflow/react.


0.2 — Approvals, ops & secrets

Additional keys published with Voodflow 0.2 (see also Human approvals and Ops):

PHP
'table_names' => [
    // …
    'workflow_versions' => 'voodflow_workflow_versions',
    'workflow_waits' => 'voodflow_workflow_waits',
    'secrets' => 'voodflow_secrets',
],

'ops' => [
    'waits_enabled' => env('VOODFLOW_WAITS_ENABLED', true),
    'versioning_enabled' => env('VOODFLOW_VERSIONING_ENABLED', true),
],

'approvals' => [
    'mail_enabled' => env('VOODFLOW_APPROVALS_MAIL', true),
    'signed_url_minutes' => (int) env('VOODFLOW_APPROVALS_SIGNED_URL_MINUTES', 10080),
    'signed_url_grace_days' => (int) env('VOODFLOW_APPROVALS_SIGNED_URL_GRACE_DAYS', 7),
    'note_max_length' => (int) env('VOODFLOW_APPROVALS_NOTE_MAX_LENGTH', 2000),
    'require_authentication' => env('VOODFLOW_APPROVALS_REQUIRE_AUTH', true),
    'require_recipient_match' => env('VOODFLOW_APPROVALS_REQUIRE_RECIPIENT_MATCH', true),
    'login_route' => env('VOODFLOW_APPROVALS_LOGIN_ROUTE', 'filament.admin.auth.login'),
],

'chat_webhook_templates' => env('VOODFLOW_CHAT_WEBHOOK_TEMPLATES', true),

'limits' => [
    'max_workflows' => env('VOODFLOW_MAX_WORKFLOWS'),
],

INI
VOODFLOW_EXECUTE_SYNC=false
VOODFLOW_QUEUE=redis
VOODFLOW_MAX_RETRY_ATTEMPTS=3
VOODFLOW_USE_REDIS_CACHE=true
VOODFLOW_DATE_FORMAT="d/m/Y H:i"
VOODFLOW_WAITS_ENABLED=true
VOODFLOW_VERSIONING_ENABLED=true
VOODFLOW_APPROVALS_MAIL=true

Plugin Registration Options

The VoodflowPlugin class accepts no configuration options at registration time. All configuration is done via config/voodflow.php and the Filament Settings page.

PHP
->plugin(VoodflowPlugin::make())