appkeep/laravel-appkeep
appkeep/laravel-appkeep helps you keep your Laravel application healthy and running smoothly. It offers lightweight tools for monitoring, maintenance, and routine upkeep, with easy configuration that fits cleanly into your existing workflow and keeps your project reliably on track.
Architecture fit: The published description positions appkeep/laravel-appkeep as a runtime, production-facing monitoring toolkit — uptime, application health, queue depth, scheduled-command execution — with the explicit differentiator that it "works without SSH access." That is a materially different evaluation than the v0.6.2 changelog implies: the only released artifact we can inspect is a patch fixing SpecContext memory-size detection on PHP 7.4. This gap is the headline finding. The marketing surface (full monitoring suite, private beta) and the shipped surface (a spec/environment context helper) do not reconcile, which means we cannot yet determine whether the package today delivers queue and scheduler monitoring or whether that is roadmap. For a TPM that changes the decision from "adopt a monitoring toolkit" to "evaluate a pre-release beta with an unverified feature set."
Architecturally, any Laravel monitoring package implies a service provider, publishable config, scheduled heartbeat tasks, and an outbound reporting path. The outbound path is the architectural fact that matters: "works without SSH" means the application phones home (or to a configurable endpoint). That is a production egress dependency, and it sits in the request/cron path of the app it is supposed to be watching.
Competitive framing is unavoidable. Laravel 11 shipped about and queue:monitor; schedule:list plus a heartbeat covers scheduler liveness; Spatie's laravel-health covers most of the same checks under a mature, widely-adopted package; Oh Dear, Envoyer, Sentry Crons, and Healthchecks.io cover the hosted-uptime slice. The "no SSH" advantage is real for Forge/Vapor/shared-hosting/containerized fleets, but it is not unique.
Integration feasibility: Mechanically trivial — one Composer dependency, package discovery, vendor:publish config. The binding constraint is not engineering effort, it is access: this is a private beta. Onboarding requires vendor engagement, credentials, and acceptance of beta terms. Apache-2.0 covers the repository code, not the hosted service, so the license gives us no rights over the reporting backend, no data-processing terms, and no exit guarantee. Feasibility is gated on a vendor conversation, not a sprint ticket.
Technical risk: High, in aggregate.
Key questions:
require-dev diagnostic helper, or both? Does it register middleware, schedules, or migrations?Stack fit: Composer-native Laravel package; no infrastructure change to install, but a new outbound network dependency and a new scheduled task to operate. Assume it needs a queue worker and the scheduler to be healthy for its own reporting to function — confirm whether heartbeat checks can be made dependent on an external receiver instead.
Migration path: Greenfield adoption, no legacy reconciliation. Because the decision is reversible, the correct path is a bounded pilot behind a feature flag rather than a fleet-wide rollout. Retain the existing uptime check and alerting as the primary signal throughout; AppKeep runs in shadow mode until it demonstrates parity.
Compatibility: Treat 0.6.2 as untested against our target matrix until proven. The PHP 7.4 fix should not be read as covering 8.2/8.3. Explicitly verify Laravel 11/12 support — if the package predates Laravel 11's scheduler/queue changes, its instrumentation assumptions may already be stale.
Alternatives to weigh before building anything:
| Option | Coverage | Maturity | Cost | Verdict |
|---|---|---|---|---|
| AppKeep (beta) | Uptime, health, queues, scheduler | Pre-1.0, stalled, private beta | Unknown beta terms + egress review | Pilot only if no-SSH constraint is binding |
Spatie laravel-health |
Health checks, scheduler, queues | Mature, OSS, active | Engineering time | Default candidate |
| Oh Dear / Healthchecks.io | Uptime, cron heartbeats | Commercial SLA | Per-seat | Covered if budget exists |
In-house /health + dead-man's-switch |
Health, scheduler liveness | Fully ours | 2–5 eng days | Cheapest durable option |
Sequencing:
appkeep/laravel-appkeep:0.6.2 exactly (no ^0.6), on one internal, non-customer-facing Laravel service.memory_limit edge cases (-1, 0, suffixed values) since that is the one known defect class.Maintenance: Ongoing engineering cost is low; ongoing attention cost is not. Pre-1.0 semver means every 0.7, 0.8, 0.9 bump requires a changelog read, a CI run, and a risk call. Budget a recurring half-day per release cadence. The larger cost is the dormant-vendor problem: a beta dependency that stops receiving releases becomes an unsupported component we must fork, wrap, or remove.
Support: Community-grade only. No LTS, no SLA, no published security process, no indicated commercial entity. We would be the support path for our own engineers, with a single external maintainer as escalation of last resort. That is acceptable for internal tooling and not acceptable for anything tied to a customer SLA.
Scaling: Negligible compute — periodic heartbeat jobs and occasional memory introspection. The scaling risk is structural, not volumetric: every monitored app becomes a reporter to a beta endpoint, so growth increases dependence on a vendor whose capacity and longevity are unknown. Cost scales with app count, not request volume; the beta pricing model is unstated, which is itself a planning risk.
Failure modes:
Ramp-up: Low technically — a Laravel developer can install and configure it in well under a day. The real ramp-up is organizational: security review, vendor onboarding, and writing internal usage notes, roughly 3–5 days including diligence. Documentation quality is unverified and the description-to-changelog mismatch suggests it should not be relied upon. Plan for one engineer to own the evaluation end to end, produce a short written findings memo, and make a go/no-go recommendation at the end of the pilot window rather than letting the decision drift by default.
How can I help you explore Laravel packages today?