Getting Started
Introduction
What the Pogo FrankenPHP plugins provide and when to use each one.
Pogo is a small set of FrankenPHP plugins that move common application runtime services into the FrankenPHP binary:
- Queue runs Laravel and Symfony jobs through a FrankenPHP-native worker loop backed by Redis Streams.
- Scheduler triggers one configured command, such as
php artisan schedule:run, on each wall-clock minute. - Pogo runs request-scoped parallel PHP tasks in dedicated FrankenPHP worker pools.
- Upload lets PHP create signed single-file upload intents while a Caddy handler streams the body to storage.
- WebSocket embeds a Reverb/Pusher-compatible WebSocket runtime and Laravel broadcasting driver.
The goal is a simpler PHP deployment for small platforms, demos, single-binary applications, and controlled production workloads where the tradeoffs are understood.
What these plugins replace
| Plugin | Common external service | Pogo replacement |
|---|---|---|
| Queue | Supervisor plus Redis queue workers | FrankenPHP queue worker loop |
| Scheduler | Cron, systemd timer, scheduler sidecar | Embedded Caddy app with Go ticker |
| Pogo | Ad hoc synchronous fan-out | Request-scoped worker pools |
| Upload | PHP request moving large file bodies | Signed upload ingress handled by Caddy/Go |
| WebSocket | Pusher, Reverb, or Node.js WebSocket server | Embedded WebSocket handler |
Production posture
Each plugin has a different maturity and reliability model.
| Plugin | Current status | Main reliability note |
|---|---|---|
| Queue | Production-oriented | Redis Streams, at-least-once delivery, idempotent handlers required. |
| Scheduler | Experimental | Local ticker only; use a singleton service or shared app locks when scaled. |
| Pogo | Experimental | Tasks are tied to the active HTTP request and are not persisted. |
| Upload | Experimental | Single-file raw body uploads; progress and cancellation are process-local. |
| WebSocket | Experimental | Reverb/Pusher-compatible subset with at-most-once delivery. |
Recommended reading order
- Read Installation for prerequisites.
- Read Building FrankenPHP for the shared
xcaddypattern. - Open the extension page you need under Extensions.
- Use Caddy reference and PHP API reference once you are wiring a real application.