How LaraOwl architecture and data flow works
mainLaraOwl operates as a client-server system to provide full-stack observability for Laravel applications.
- Capture: The
laraowl/clientpackage hooks into the Laravel service container to capture requests, exceptions, queries, and jobs. - Ingestion: Captured data is sent via an authenticated HTTP POST to the server's
/api/ingestendpoint. - Queuing: The server responds immediately with
200 OKafter queuing the payload to ensure zero processing delay for the application. - Processing: A queue worker processes the records (storing data, grouping issues via fingerprints, running security analysis, and checking alert thresholds).
- Real-time Updates: A WebSocket event (
ProjectDataIngested) is broadcast via Reverb to update the React dashboard in real-time.
┌──────────────────┐ HTTPS POST ┌──────────────────────┐
│ Your Laravel │ ──────────────────────────▶ │ LaraOwl Server │
│ Application │ /api/ingest │ │
│ │ (API Token Auth) │ ┌────────────────┐ │
│ laraowl/client │ │ │ IngestController│ │
│ package │ │ └───────┬────────┘ │
└──────────────────┘ │ │ │
│ Queue Dispatch │
│ │ │
│ ┌───────▼────────┐ │
│ │ ProcessIngested │ │
│ │ Records (Job) │ │
│ └───────┬────────┘ │
│ │ │
│ ┌───────▼────────┐ │
│ │ IngestService │ │
│ │ • Store records│ │
│ │ • Group issues │ │
│ │ • Check threats│ │
│ │ • Fire alerts │ │
│ └───────┬────────┘ │
│ │ │
│ WebSocket Push │
│ (Reverb) │
│ │ │
│ ┌───────▼────────┐ │
│ │ React Dashboard │ │
│ │ (Inertia + SSR) │ │
│ └────────────────┘ │
└──────────────────────┘