PHPackages                             qwentry/qwentry - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. qwentry/qwentry

ActiveLibrary

qwentry/qwentry
===============

Real-time monitoring for Laravel queue workers — event listeners, storage, CLI, and a Livewire dashboard.

v1.1.0(1mo ago)05↓75%MITPHPPHP ^8.1

Since Jul 14Pushed 1mo agoCompare

[ Source](https://github.com/hisyamfausta/qwentry)[ Packagist](https://packagist.org/packages/qwentry/qwentry)[ RSS](/packages/qwentry-qwentry/feed)WikiDiscussions master Synced 1w ago

READMEChangelogDependencies (10)Versions (3)Used By (0)

Qwentry
=======

[](#qwentry)

(Queue Worker Sentry)

A minimal, real-time monitoring tool for Laravel queue workers. Install one package, optionally run a migration, and see what your workers are doing — via CLI, a JSON API, or a Livewire dashboard.

Qwentry listens to Laravel's native queue events — no changes to your job classes, no separate daemon to run. Works with any queue driver (database, Redis, SQS, Beanstalkd, etc.).

Installation
------------

[](#installation)

```
composer require qwentry/qwentry
```

Choose a storage driver in `.env`:

```
# Durable, queryable, needs a migration:
QWENTRY_DRIVER=database

# OR: zero migrations, rolling window of recent activity:
QWENTRY_DRIVER=cache
```

If you chose `database`:

```
php artisan vendor:publish --tag=qwentry-migrations
php artisan migrate
```

### Dashboard (optional)

[](#dashboard-optional)

The dashboard requires Livewire:

```
composer require livewire/livewire
```

Then visit `/qwentry`. Remember to add auth middleware before deploying.

Quick Start
-----------

[](#quick-start)

```
composer require qwentry/qwentry
php artisan vendor:publish --tag=qwentry-migrations
php artisan migrate
php artisan qwentry:watch
```

CLI Commands
------------

[](#cli-commands)

CommandDescriptionKey options`qwentry:watch`Live, auto-refreshing terminal dashboard`--interval=2`, `--once``qwentry:status`One-shot snapshot`--json`, `--alert``qwentry:prune`Delete old job logs`--hours=`### Scheduling

[](#scheduling)

```
// app/Console/Kernel.php
$schedule->command('qwentry:status --alert')
    ->everyFiveMinutes()
    ->emailOutputOnFailure('ops@example.com');

$schedule->command('qwentry:prune')->hourly();
```

JSON API
--------

[](#json-api)

A JSON endpoint is available by default:

```
GET /qwentry/snapshot

```

Response:

```
{
    "pending": 3,
    "processing": 1,
    "failed": 0,
    "throughput": 42,
    "workers": [
        {
            "worker_id": "app-server:12345",
            "hostname": "app-server",
            "pid": 12345,
            "status": "idle",
            "memory_kb": 65536,
            "jobs_processed": 1024,
            "jobs_failed": 2,
            "online": true,
            "last_heartbeat": "2025-01-14T12:00:00.000000Z"
        }
    ],
    "recent_jobs": [
        {
            "id": 1,
            "connection": "redis",
            "queue": "default",
            "job": "App\\Jobs\\SendEmail",
            "status": "processed",
            "runtime_ms": 142,
            "exception": null,
            "started_at": "2025-01-14T12:00:00.000000Z",
            "completed_at": "2025-01-14T12:00:00.142000Z",
            "created_at": "2025-01-14T12:00:00.000000Z"
        }
    ]
}
```

### Building a Custom Dashboard

[](#building-a-custom-dashboard)

Poll the JSON endpoint from any frontend:

```
async function fetchSnapshot() {
    const res = await fetch('/qwentry/snapshot');
    return await res.json();
}

setInterval(fetchSnapshot, 3000);
```

Or use `SnapshotStore` directly in PHP:

```
use Qwentry\Qwentry\Support\Contracts\SnapshotStore;

$snapshot = app(SnapshotStore::class)->getSnapshot();

echo $snapshot->pending;      // int
echo $snapshot->processing;   // int
echo $snapshot->failed;       // int
echo $snapshot->throughput;   // int (jobs/min)
print_r($snapshot->workers);  // array
print_r($snapshot->recentJobs); // array
```

Configuration
-------------

[](#configuration)

KeyEnv varDefaultDescription`watch.connections``QWENTRY_CONNECTIONS``QUEUE_CONNECTION` valueComma-separated connections to watch`driver``QWENTRY_DRIVER``database``database` or `cache``database.connection``QWENTRY_DB_CONNECTION``null`DB connection for qwentry tables`cache.store``QWENTRY_CACHE_STORE``null`Cache store for cache driver`cache.ttl``QWENTRY_CACHE_TTL``3600`Cache TTL in seconds`heartbeat.interval``QWENTRY_HEARTBEAT_INTERVAL``5`Seconds between idle heartbeats`heartbeat.offline_after``QWENTRY_OFFLINE_AFTER``30`Seconds before a worker is considered offline`retention_hours``QWENTRY_RETENTION_HOURS``24`Hours before prune deletes logs`alerts.max_pending``QWENTRY_ALERT_MAX_PENDING``null`Alert threshold for pending jobs`alerts.max_failed``QWENTRY_ALERT_MAX_FAILED``null`Alert threshold for failed jobs`alerts.min_workers``QWENTRY_ALERT_MIN_WORKERS``null`Alert threshold for online workers`api.path``QWENTRY_API_PATH``qwentry/snapshot`JSON API endpoint path (set to `false` to disable)`api.middleware`—`['api']`Middleware for the JSON API endpoint### Dashboard config (`config/qwentry-ui.php`)

[](#dashboard-config-configqwentry-uiphp)

Publish with:

```
php artisan vendor:publish --tag=qwentry-ui-config
```

KeyEnv varDefaultDescription`path``QWENTRY_UI_PATH``qwentry`URL prefix for the dashboard`middleware`—`['web']`Route middleware`poll_interval_ms``QWENTRY_UI_POLL_MS``3000`Polling interval in msSecuring the Dashboard
----------------------

[](#securing-the-dashboard)

The dashboard ships with only the `web` middleware. Before deploying, publish the config and lock it down:

```
php artisan vendor:publish --tag=qwentry-ui-config
```

```
// config/qwentry-ui.php
'middleware' => ['web', 'auth', 'can:view-qwentry-dashboard'],
```

The JSON API uses `['api']` middleware by default. Add your own auth:

```
// config/qwentry.php
'api' => [
    'path' => 'qwentry/snapshot',
    'middleware' => ['api', 'auth:sanctum'],
],
```

Storage Drivers
---------------

[](#storage-drivers)

`database``cache`SetupRequires migrationNoneHistoryEverything until prunedRolling window (200 events)Best forHistorical data, queryableMinimal installs, ephemeral filesystemsTesting
-------

[](#testing)

```
vendor/bin/phpunit --testsuite Qwentry

vendor/bin/phpunit --testsuite QwentryUI
```

License
-------

[](#license)

MIT

###  Health Score

38

—

LowBetter than 83% of packages

Maintenance90

Actively maintained with recent releases

Popularity4

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity43

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~0 days

Total

2

Last Release

48d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/c0f667456c07ecc24b50549d23a4ec17e1c93ea1716b61cabee3a93f93ad2f13?d=identicon)[hisyamfausta](/maintainers/hisyamfausta)

---

Top Contributors

[![hisyamfausta](https://avatars.githubusercontent.com/u/63483297?v=4)](https://github.com/hisyamfausta "hisyamfausta (3 commits)")

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan

Type Coverage Yes

### Embed Badge

![Health badge](/badges/qwentry-qwentry/health.svg)

```
[![Health](https://phpackages.com/badges/qwentry-qwentry/health.svg)](https://phpackages.com/packages/qwentry-qwentry)
```

###  Alternatives

[psalm/plugin-laravel

Psalm plugin for Laravel

3365.5M359](/packages/psalm-plugin-laravel)[laravel/pulse

Laravel Pulse is a real-time application performance monitoring tool and dashboard for your Laravel application.

1.7k17.6M165](/packages/laravel-pulse)[laravel/scout

Laravel Scout provides a driver based solution to searching your Eloquent models.

1.7k59.5M714](/packages/laravel-scout)[pressbooks/pressbooks

Pressbooks is an open source book publishing tool built on a WordPress multisite platform. Pressbooks outputs books in multiple formats, including PDF, EPUB, web, and a variety of XML flavours, using a theming/templating system, driven by CSS.

45945.2k1](/packages/pressbooks-pressbooks)[roots/acorn

Framework for Roots WordPress projects built with Laravel components.

1.0k2.5M152](/packages/roots-acorn)[api-platform/laravel

API Platform support for Laravel

58190.1k22](/packages/api-platform-laravel)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
