garlic/event-source
garlic/event-source is a Laravel/PHP event sourcing package for persisting domain changes as immutable events, rebuilding aggregates, and projecting read models. It helps teams add auditability and decoupled workflows to their applications.
-bundle repo name that signals Symfony-first packaging rather than Laravel-native. A PM uses this as the canonical example of "abandoned dependency," feeding a standing rule: no new production dependency without a maintainer, a release in the last 18 months, and a real dependent count.Content-Type: text/event-stream, data:/event:/id:/retry: framing, the double-newline terminator) and then write it yourself. It answers "what does SSE actually require on the server?" for free.Consider it only in these narrow cases:
Look elsewhere — specifically, write it yourself or use the framework — in every other case:
-bundle (Symfony convention), not a Laravel package with a service provider and facade. Expect manual wiring, no config publishing, no Laravel-native response helpers.StreamedResponse. You get a maintained, framework-native implementation with zero new dependencies for free.EventSource API cannot send custom headers, so you're in cookie/query-token territory), and reconnection, last-event-ID resume, and multi-worker fan-out all need application logic this library does not provide.Executives: We evaluated an open-source library for adding live, push-style updates — progress bars on long jobs, notification badges, live dashboards — without building a WebSocket service. The library itself is not adoptable: last shipped in 2017, no maintainers, no users, and built for a different framework. The good news is that the capability is cheap and the framework already provides it. Recommendation: build live updates on the framework's native streaming support, scope the first release to progress indicators and notifications, and budget explicitly for the load-balancer and worker-capacity work that long-lived connections require. Do not add a dependency here; the cost of adopting this one exceeds the cost of writing the ~50 lines it contains.
Engineering: Treat garlic/event-source as a reference document, not a dependency. It confirms SSE is just a text/event-stream response with data: frames and a double newline — which means the real work isn't the protocol, it's the operational envelope: holding PHP workers open, fanning events out across nodes via Redis, handling EventSource's inability to send auth headers, and disabling proxy buffering. Use the framework's streamed-response helper, put the endpoint behind its own route group with a short idle timeout, and load-test with realistic concurrent-connection counts before we ship. If we do a time-boxed spike, vendor nothing — copy the framing logic into a local helper so we own it outright.
How can I help you explore Laravel packages today?