Download the PHP package devifyo/watchtower without Composer

On this page you can find all versions of the php package devifyo/watchtower. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package watchtower

Watchtower

One production-safe dashboard for everything happening in the background of your Laravel app — scheduled tasks, queues & jobs, and errors — that also lets you fix them. Works with any queue driver (database, Redis, SQS) and any database setup — single-database, multi-database, or multi-tenant. No Redis required.

Packagist Version Total Downloads Tests PHP Laravel

📦 View on Packagist


🤔 Why Watchtower?

Laravel already ships excellent observability tools — so why another one? Because most of them either can't be left on in production, are locked to a single queue driver, or only let you look at problems instead of fixing them. Watchtower is built to live in production permanently, work no matter how your queues are configured, and turn the dashboard into a control panel.

It also adapts to any database layout: keep its tables in your main database (single-database), isolate them on a dedicated connection (multi-database) via WATCHTOWER_DB_CONNECTION, or run it in a multi-tenant app by pointing it at a stable central connection so you get one dashboard across all tenants. See Installation.

Why not Telescope / Horizon / Pulse?

Capability Watchtower Horizon Telescope Pulse
Production-safe (leave it on)
Works without Redis / any driver ✗ (Redis-only)
Scheduled-task + missed-run monitoring
Bulk failed-job retry (by type / time window)
Built-in error tracker with resolve
Single-DB, multi-DB & multi-tenant aware
Compiled dashboard (no host frontend deps)

These tools are complementary, not strictly competitors. Horizon is unmatched for deep Redis queue throughput, Telescope is a fantastic local debugger, and Pulse gives you a great application health overview. Watchtower fills the gap in between: a single, always-on, driver-agnostic place to watch crons, queues and errors — and act on them.


✅ Requirements


📦 Installation in 2 commands

watchtower:install publishes the config file, publishes the dashboard assets, and runs the migrations for you. The compiled dashboard assets ship inside the package (served straight from its dist/ directory), so there is no npm install or build step in your host application.

Zero-config first run: once installed, just visit:

Out of the box the dashboard is accessible in your local environment with no extra setup. (See Security before exposing it in production.)

First run / multi-tenant apps: if the tables haven't been created on the connection Watchtower is using, the dashboard shows a "Set up database" screen with a one-click button to run its migrations. In a multi-tenant app whose default connection changes per request, point Watchtower at a stable central connection so its data lives in one place:

then php artisan config:clear and click the setup button (or php artisan migrate).


🚀 Usage

Open /watchtower and you get a single-page dashboard with a summary bar across the top and three tabs:

The summary bar keeps the headline numbers — recent failures, missed schedules, open errors — in view at all times, and the dashboard polls for fresh data automatically (interval is configurable).


🖼️ Screenshots

Previews below are illustrative; replace with real screenshots of your running dashboard at /watchtower.

📅 Schedule — scheduled tasks with missed-run detection and run-now

⚙️ Queues & Jobs — queue metrics and bulk failed-job retry

🐛 Errors — exception tracker with resolve / reopen


⚙️ Configuration

After installing, the config file lives at config/watchtower.php. Every option is environment-overridable.

Key Description Default Env var
enabled Master switch. When off, nothing is recorded (repository becomes a no-op) but the dashboard still renders historical data. true WATCHTOWER_ENABLED
path URI prefix the dashboard + JSON API are served from. watchtower WATCHTOWER_PATH
domain Optionally scope all routes to a subdomain. null WATCHTOWER_DOMAIN
middleware Middleware stack every route runs through (the Authorize middleware is appended automatically). ['web']
connection Dedicated DB connection for Watchtower's tables so its writes never contend with app traffic. null = default connection. null WATCHTOWER_DB_CONNECTION
table_prefix Namespaces every table Watchtower creates. watchtower_ WATCHTOWER_TABLE_PREFIX
recording.schedule Record scheduled-task runs. true WATCHTOWER_RECORD_SCHEDULE
recording.queue Record queue/job activity. true WATCHTOWER_RECORD_QUEUE
recording.exceptions Record exceptions. true WATCHTOWER_RECORD_EXCEPTIONS
writes.after_response Defer writes to the framework's terminating() callback so request/job latency is untouched. false writes inline. true WATCHTOWER_AFTER_RESPONSE
sampling.rate Fraction of records stored (1.0 = everything, 0.1 = ~10%). Failures and schedule runs are always recorded regardless. 1.0 WATCHTOWER_SAMPLING_RATE
retention.schedule Days to keep schedule runs before watchtower:prune deletes them. 30 WATCHTOWER_RETAIN_SCHEDULE
retention.queue Days to keep queue/job records. 7 WATCHTOWER_RETAIN_QUEUE
retention.exceptions Days to keep exception records. 30 WATCHTOWER_RETAIN_EXCEPTIONS
limits.trace Max bytes stored for a stack trace. 16384 WATCHTOWER_LIMIT_TRACE
limits.payload Max bytes stored for a job payload. 8192 WATCHTOWER_LIMIT_PAYLOAD
limits.output Max bytes stored for command/task output. 8192 WATCHTOWER_LIMIT_OUTPUT
limits.message Max bytes stored for an exception message. 2048 WATCHTOWER_LIMIT_MESSAGE
limits.store_payload Set to false to never persist job payloads (for apps with sensitive job data). true WATCHTOWER_STORE_PAYLOAD
ignore.jobs Fully-qualified job class names to skip entirely. []
ignore.commands Command signatures to skip entirely. []
ignore.exceptions Fully-qualified exception class names to skip entirely. []
dashboard.polling_interval Dashboard auto-refresh interval, in milliseconds. 5000 WATCHTOWER_POLL_INTERVAL
dashboard.per_page Rows per page in the dashboard tables. 25 WATCHTOWER_PER_PAGE
alerts.enabled Master switch for alert notifications (off by default). false WATCHTOWER_ALERTS_ENABLED
alerts.channels.slack Slack incoming-webhook URL. null WATCHTOWER_SLACK_WEBHOOK
alerts.channels.webhook Generic webhook URL to POST alerts to. null WATCHTOWER_WEBHOOK_URL
alerts.channels.mail Comma-separated list of email recipients. [] WATCHTOWER_ALERT_MAIL
alerts.on.schedule_failed Alert when a scheduled task fails. true
alerts.on.schedule_missed Alert when an expected scheduled run is missed. true
alerts.on.failed_jobs_threshold Alert when failed jobs cross the threshold. true
alerts.failed_jobs.threshold Number of failed jobs that triggers an alert. 25 WATCHTOWER_FAILED_THRESHOLD
alerts.failed_jobs.window_minutes Time window the threshold is measured over. 60 WATCHTOWER_FAILED_WINDOW

🛡️ Production safety

Watchtower is designed to be left on in production. Here's how it stays out of your hot path and keeps your database bounded:


🔒 Security

The dashboard and the JSON API run behind the middleware stack you configure (default ['web']) plus an Authorize middleware that checks a viewWatchtower gate. The gate defaults to allowing only the local environment — the same pattern Horizon and Telescope use — so the dashboard is never accidentally public in production.

To grant access in production, define the gate in a service provider (e.g. app/Providers/AppServiceProvider.php):

Or use the fluent Watchtower::auth() callback, which takes precedence over the gate:

Either way, any request that fails authorization gets a 403 — there is no path to the dashboard or API without passing the gate.


🔔 Alerts (optional)

Alerts are off by default. When enabled, Watchtower sends notifications when something needs your attention. They're implemented as standard Laravel notifications, so they slot into your existing setup.

Channels (each independent — configure any combination):

Triggers:

Enable alerts and run the monitor on a schedule:


🛠️ Artisan commands

Command Description
watchtower:install Publish config & assets and run migrations. --force overwrites existing published files.
watchtower:prune Delete records older than the configured retention windows. --hours= overrides every retention window with the given number of hours.
watchtower:monitor Evaluate alert conditions and dispatch notifications. Schedule it (e.g. every five minutes).

🧪 Testing

The suite runs on Pest with Orchestra Testbench.


🤝 Contributing

Contributions are welcome! Please open an issue to discuss substantial changes first, then send a PR. See CONTRIBUTING.md for guidelines. Bug reports, docs improvements, and pull requests are all appreciated.


📄 License

Watchtower is open-source software licensed under the MIT license.


All versions of watchtower with dependencies

PHP Build Version
Package Version
Requires php Version ^8.2
illuminate/console Version ^11.0|^12.0
illuminate/contracts Version ^11.0|^12.0
illuminate/database Version ^11.0|^12.0
illuminate/queue Version ^11.0|^12.0
illuminate/support Version ^11.0|^12.0
nesbot/carbon Version ^2.0|^3.0
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package devifyo/watchtower contains the following files

Loading the files please wait ...