Excubia
Health-Checks für Laravel-Apps.
Ein Befehl liest Ihre Lockfiles und zeigt, was keinen Support mehr hat, verwundbar oder verwaist ist oder das nächste Laravel-Major blockiert, und in welcher Reihenfolge Sie es beheben. Über Artisan prüft Excubia auch die laufende App und ihre Infrastruktur. Open Source unter MIT, in der CI und in Produktion.
$ vendor/bin/excubia check
Excubia
Health checks for Laravel apps.
3 critical · 2 high · 3 medium · 2 low
Critical
php
Security support ended on 2025-12-31.
Upgrade PHP to 8.5 (supported until 2029-12-31).
laravel/framework
Security fixes ended on 2025-02-04.
Upgrade to Laravel 11; security fixes for your version end 2025-02-04.
High
laravel/framework
Known vulnerability PKSA-3r5d-mb8f-1qw9.
Update laravel/framework to ≥ fixed version (PKSA-3r5d-mb8f-1qw9).
…
Upgrade plan
1. Update laravel/framework to ≥ fixed version (fixes 7 advisories).
2. Upgrade PHP to 8.5 (supported until 2029-12-31).
3. Upgrade to Laravel 11; security fixes for your version end 2025-02-04.Über 40 Checks, ein Report
Alles in Ihrer App, das veraltet oder ausfällt
Die Lockfile-Checks laufen überall mit vendor/bin/excubia, ohne Ihre App zu starten. Über php artisan excubia:check prüft Excubia zusätzlich die gestartete App und die Dienste, von denen sie abhängt. Jeder Report endet mit einem geordneten Upgrade-Plan.
- Support-Ende
- PHP, Laravel und Node: eine Warnung, bevor der Sicherheitssupport endet, ein Fehler, sobald er beendet ist.
- Bekannte Sicherheitslücken
- Composer-Pakete gegen die Sicherheitshinweise von Packagist; npm-, Yarn- und pnpm-Pakete gegen OSV.dev.
- Zustand der Pakete
- Verwaiste, veraltete und nicht aktualisierte Pakete, Lizenzen der Abhängigkeiten und die PHP-Erweiterungen, die Ihre Pakete brauchen.
- Nächstes Laravel-Major
- Direkte Abhängigkeiten, deren neuestes Release das nächste Laravel-Major noch nicht erlaubt.
- App-Konfiguration
- Debug-Modus, App-Key, Caches, offene Migrationen, Session-Cookies, CORS, Treiber in Produktion, Log-Level, Dev-Pakete und
.env.example. - Infrastruktur
- Datenbank, Cache, Speicher, Festplattenplatz, Queues und Worker (inklusive Horizon), Scheduler, Redis-Speicher und Backups.
- PHP in Produktion
- OPcache- und php.ini-Einstellungen so, wie der Webserver sie sieht, nicht die CLI.
- Laravel-Pakete
- Octane, Reverb, Cashier, Sanctum und Passport, nur wenn sie installiert sind.
Gemacht für CI
Lieber der Build scheitert als die Produktion
Die Standalone-CLI braucht nur PHP und Ihre composer.lock: keine Datenbank, keine .env, keine Installation Ihres Projekts. Die Ausgabe ist für Menschen, Skripte und KI-Agenten gemacht.
- Verlässliche Exit-Codes.
--fail-onstoppt die Pipeline, sobald ein Befund die gewählte Schwere erreicht, bevor ein verwundbares Release live geht.- GitHub Action und SARIF.
qiick-io/excubia-core@v1führt den Check aus, schreibt den Report in die Job-Zusammenfassung und sendet die Befunde an GitHub Code Scanning.- Tabelle, JSON, Markdown oder SARIF.
- Eine lesbare Tabelle im Terminal, versioniertes JSON für Skripte und Agenten, Markdown für Pull Requests.
- Konfiguration im Repository.
excubia.jsonsetzt Schwellenwerte, schaltet Checks ab und ignoriert einen einzelnen Sicherheitshinweis mit Begründung und Ablaufdatum.
name: Excubia
on:
pull_request:
schedule:
- cron: '0 6 * * 1'
permissions:
contents: read
security-events: write
jobs:
excubia:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: qiick-io/excubia-core@v1
with:
fail-on: criticalIn Produktion
Monitoring auf Ihrem eigenen Server
In der ausgelieferten App installiert, kann Excubia an excubia-app berichten, das Open-Source-Dashboard, das Sie selbst hosten. Jeder Teil ist standardmäßig aus und wird einzeln in excubia.json eingeschaltet.
- Geplante Reports
excubia:pushsendet den vollständigen Report aus dem Scheduler und nach jedem Deployment, mit Deploy-Markern.- Laufzeitdaten
- Aggregiert und gesampelt: Requests, Jobs, Queries und N+1-Muster, Mails, Cache, geplante Tasks, Serverressourcen und die Nutzung des Laravel AI SDK.
- Exceptions
- Gruppiert und maskiert, bevor sie die App verlassen, auch fehlgeschlagene Queue-Jobs und Artisan-Befehle.
- Health-Endpoint
- Ein mit Oh Dear kompatibler Endpoint, dazu minütliche Health-Samples für Alerts in excubia-app.
- Keine Inhalte
- Zählwerte, Zeiten und Namen; Exception-Meldungen werden maskiert. Nie Request-Bodys, Query-Werte oder Nachrichteninhalte.
- Nichts geht an Qiick
- Daten gehen nur an Ihre eigene excubia-app, nie an Qiick oder Dritte. Keine Telemetrie.
Auch excubia-app ist Open Source: das selbst gehostete Dashboard für Reports, Laufzeitdaten, Exceptions und Alerts. qiick-io/excubia-app
Loslegen
Mit einem Befehl installiert
Excubia ist ein Composer-Paket für PHP 8.2+. Es liest composer.lock und Ihr JavaScript-Lockfile; die Artisan-Befehle brauchen Laravel 12 oder 13.
Paket installieren
Als Dev-Abhängigkeit, für Checks auf Ihrem Rechner und in der CI.
composer require --dev qiick/excubia-coreChecks ausführen
Startet nie Ihre App und führt keinen Projektcode aus. In einer Laravel-App ergänzt
php artisan excubia:checkdie Konfigurations- und Infrastruktur-Checks.vendor/bin/excubia checkIn Produktion (optional)
Ohne
--devin der ausgelieferten App installieren, um Reports zu senden, Laufzeitdaten zu übertragen oder den Health-Endpoint anzubieten.php artisan excubia:push
Nur Namen und Versionen verlassen Ihren Rechner. Die Checks senden Paket- und Laufzeitnamen samt Versionen an die öffentlichen Datenquellen, die sie abfragen, sonst nichts: keine Dateiinhalte, keine .env-Werte, kein Quellcode, keine Pfade oder Hostnamen. Private Pakete werden nie gesendet. Keine Telemetrie.
Warum Excubia?
- excŭbĭae
- excŭbĭae, ārum, f.von excubo, „draußen liegen, Wache halten“
- „das Wachehalten draußen, das Wachen“; konkret „die Wachehaltenden, die Wache“
- nach Lewis & Short, A Latin Dictionary (1879)
Im Lateinischen waren die excubiae die Wachen vor dem Lager oder dem Haus: die Posten, die Wache hielten, damit alle anderen ruhen konnten. Excubia übernimmt diese Aufgabe für Ihre Laravel-App. Es prüft Lockfiles, Abhängigkeiten sowie PHP- und Node-Versionen, damit Sie von Problemen erfahren, bevor Ihre Nutzer sie bemerken.
Roadmap
Heute Release Candidate, bald 1.0
Excubia 1.0 ist funktional vollständig, die öffentlichen Schnittstellen sind eingefroren: CLI-Optionen, Report-JSON, Check-IDs, Exit-Codes, excubia.json und die Push-Formate. Bis 1.0.0 kommen nur noch Fehlerbehebungen. Als Nächstes, in dieser Reihenfolge:
01
Excubia 1.0
Dieselben Funktionen und Schnittstellen wie der Release Candidate, nach einer letzten Runde Fehlerbehebungen und Feedback.
02
excubia-app 1.0
Das stabile, selbst gehostete Dashboard für Reports, Laufzeitdaten, Exceptions und Alerts.
03
1.1: Request-Traces
Gesampelte Request-Traces, wie alles andere optional.
04
1.1: Logs und Nutzer
Log-Einträge und pseudonyme Nutzerzahlen, jeweils optional mit eigener Stufe für personenbezogene Daten.