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 jobs in dedicated FrankenPHP worker pools.
- WebSocket embeds a Pusher-compatible WebSocket server 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 |
| 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 | Jobs are tied to the active HTTP request and are not persisted. |
| WebSocket | Experimental | 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.