stackmonitor / agent-laravel
Read-only StackMonitor agent for Laravel applications
Package info
github.com/tommy-hasert-dev/stackmonitor-agent-laravel
pkg:composer/stackmonitor/agent-laravel
v1.0.0
2026-09-26 18:38 UTC
Requires
- php: ^8.1
- illuminate/cache: ^10.0|^11.0|^12.0|^13.0
- illuminate/contracts: ^10.0|^11.0|^12.0|^13.0
- illuminate/http: ^10.0|^11.0|^12.0|^13.0
- illuminate/routing: ^10.0|^11.0|^12.0|^13.0
- illuminate/support: ^10.0|^11.0|^12.0|^13.0
Requires (Dev)
- laravel/pint: ^1.32.1
- opis/json-schema: ^2.6
- orchestra/testbench: ^11.3
- pestphp/pest: ^5.2.1
Suggests
None
Provides
None
Conflicts
None
Replaces
None
README
Nur lesender Agent. Er liefert dem StackMonitor-Dashboard Laravel-, PHP- und Paketversionen. Unterstützt Laravel 10–13 und PHP ≥ 8.1.
Installation
composer require stackmonitor/agent-laravel- Im StackMonitor-Dashboard die Site öffnen, dann Bearbeiten → Agent → Secret erzeugen.
- Die angezeigte Zeile in die
.envder Site eintragen:STACKMONITOR_AGENT_SECRET=… php artisan config:cacheausführen, falls die Config gecacht wird. Wird die.envspäter erneut geändert (z. B. neues Secret, anderer Pfad), müssenphp artisan config:cacheund, falls Routen gecacht sind,php artisan route:cacheerneut ausgeführt werden — sonst greift weiterhin die alte, gecachte Konfiguration.
Der Endpunkt ist GET /stackmonitor/status. Der Pfad lässt sich mit STACKMONITOR_AGENT_PATH ändern, dann muss die Agent-URL im Dashboard angepasst werden.
Sicherheit
- Jede Anfrage muss per HMAC-SHA256 signiert sein. Timestamp (±300 s) und Nonce werden geprüft, eine Nonce ist nur einmal gültig.
- Ungültige Anfragen beantwortet der Endpunkt mit
404— demselben generischen 404, das Laravel auch für unbekannte Routen liefert, damit der Endpunkt nach außen nicht auffällt. Die Antwort auf eine gültige Anfrage ist ebenfalls signiert. - Der Agent ist nur lesend: keine schreibenden Aktionen, keine Session, keine Cookies.
- Für den Replay-Schutz nutzt er den Standard-Cache der Anwendung (
cache.default). Dieser Cache muss persistent und, bei mehreren Anwendungs-Knoten, geteilt sein (z. B. Redis oder der Datenbank-Treiber) — die Treiberarrayundnullschützen nicht vor Replays:arrayvergisst genutzte Nonces beim nächsten Request-Prozess,nullspeichert gar nichts, und bei mehreren Knoten ohne geteilten Cache sieht jeder Knoten nur seine eigenen bereits genutzten Nonces.
Entwicklung
Läuft wie alles lokal im tools-Container (siehe README im Wurzelverzeichnis), aus dem Wurzelverzeichnis:
docker compose run --rm -w /app/agents/laravel tools composer install docker compose run --rm -w /app/agents/laravel tools composer test # Pint und Pest
Lizenz
MIT, siehe LICENSE.