Pogo FrankenPHP Plugins

Queue, scheduler, request-scoped parallel tasks, uploads, and WebSockets compiled directly into a FrankenPHP binary.

Caddyfile
{
  frankenphp

  pogo_queue {
    backend redis {
      url {$POGO_REDIS_URL}
    }
    worker public/queue-worker.php
  }

  pogo_scheduler {
    command php artisan schedule:run
  }

  pogo_upload {
    store default {
      worker public/upload-worker.php
      signing_secret {$POGO_UPLOAD_SECRET}
      backend local {
        root storage/app/pogo-uploads
      }
    }
  }
}

The extension set

    Queue

    Redis Streams backed queue workers with Laravel and Symfony Messenger drivers.

    Scheduler

    Embedded minute-aligned command runner for single-node and singleton deployments.

    Pogo

    Request-scoped parallel PHP tasks for fan-out and fan-in work.

    Upload

    Signed single-file upload ingress with Go streaming and PHP completion events.

    WebSocket

    Reverb/Pusher-compatible WebSocket handler and Laravel broadcaster.

Choose the right tool

    Durable work

    Use Queue when work must survive the request and can be retried safely.

    Scheduled work

    Use Scheduler for simple cron-style triggering in single-node or singleton services.

    Parallel request work

    Use Pogo when independent work must finish before the response returns.

    Large uploads

    Use Upload when PHP should authorize uploads but Caddy should move the bytes.

    Realtime events

    Use WebSocket for Reverb/Pusher-style channels and Laravel broadcasting.

Start with the shared build pattern

Compile the modules you need into FrankenPHP, then configure each extension with a small Caddy block.