Zum Inhalt springen

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.

Terminal
vendor/bin/excubia checkExcubiaHealth checks for Laravel apps.3 critical · 2 high · 3 medium · 2 low Criticalphp  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. Highlaravel/framework  Known vulnerability PKSA-3r5d-mb8f-1qw9.  Update laravel/framework to ≥ fixed version (PKSA-3r5d-mb8f-1qw9).… Upgrade plan1. 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.
Echte Ausgabe von Excubia 1.0.0-rc.1 für das veraltete Laravel-10-Testprojekt aus dem Repository, gekürzt.

Ü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-on stoppt die Pipeline, sobald ein Befund die gewählte Schwere erreicht, bevor ein verwundbares Release live geht.
GitHub Action und SARIF.
qiick-io/excubia-core@v1 fü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.json setzt Schwellenwerte, schaltet Checks ab und ignoriert einen einzelnen Sicherheitshinweis mit Begründung und Ablaufdatum.
.github/workflows/excubia.yml
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: critical

In 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:push sendet 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.

  1. Paket installieren

    Als Dev-Abhängigkeit, für Checks auf Ihrem Rechner und in der CI.

    composer require --dev qiick/excubia-core
  2. Checks ausführen

    Startet nie Ihre App und führt keinen Projektcode aus. In einer Laravel-App ergänzt php artisan excubia:check die Konfigurations- und Infrastruktur-Checks.

    vendor/bin/excubia check
  3. In Produktion (optional)

    Ohne --dev in 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:

  1. 01

    Excubia 1.0

    Dieselben Funktionen und Schnittstellen wie der Release Candidate, nach einer letzten Runde Fehlerbehebungen und Feedback.

  2. 02

    excubia-app 1.0

    Das stabile, selbst gehostete Dashboard für Reports, Laufzeitdaten, Exceptions und Alerts.

  3. 03

    1.1: Request-Traces

    Gesampelte Request-Traces, wie alles andere optional.

  4. 04

    1.1: Logs und Nutzer

    Log-Einträge und pseudonyme Nutzerzahlen, jeweils optional mit eigener Stufe für personenbezogene Daten.

Roadmap auf GitHub verfolgen