PHPackages                             larascope/agent - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Logging &amp; Monitoring](/categories/logging)
4. /
5. larascope/agent

ActiveLibrary[Logging &amp; Monitoring](/categories/logging)

larascope/agent
===============

Secured, read-only monitoring agent for Laravel apps — health, Pulse, logs, stats, security and per-IP connection metrics, consumed by the Larascope mobile app.

v1.1.0(1mo ago)03↓88.9%MITPHPPHP ^8.2CI failing

Since Jun 2Pushed 1mo agoCompare

[ Source](https://github.com/matthieuLabaune/larascope-agent)[ Packagist](https://packagist.org/packages/larascope/agent)[ Docs](https://github.com/matthieuLabaune/larascope-agent)[ RSS](/packages/larascope-agent/feed)WikiDiscussions main Synced 1w ago

READMEChangelog (1)Dependencies (12)Versions (3)Used By (0)

larascope/agent
===============

[](#larascopeagent)

Agent de monitoring pour [Larascope](../../README.md) : expose 4 endpoints JSON read-only, sécurisés par token, que l'app mobile Larascope interroge.

Installation
------------

[](#installation)

### Option A — Packagist (quand publié)

[](#option-a--packagist-quand-publié)

```
composer require larascope/agent
```

### Option B — dépôt VCS (recommandé tant que non publié)

[](#option-b--dépôt-vcs-recommandé-tant-que-non-publié)

Dans le `composer.json` du projet à surveiller :

```
"repositories": [
    { "type": "vcs", "url": "https://github.com//larascope-agent" }
]
```

```
composer require larascope/agent:dev-main
```

### Option C — chemin local (dev / monorepo)

[](#option-c--chemin-local-dev--monorepo)

```
composer config repositories.larascope-agent path ../larascope/packages/larascope-agent
composer require larascope/agent:@dev
```

Configuration
-------------

[](#configuration)

```
php artisan larascope:token   # génère un token
```

```
LARASCOPE_TOKEN=lsk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
# LARASCOPE_ENABLED=false   # désactive totalement l'agent (aucune route enregistrée)
# LARASCOPE_PREFIX=larascope
```

Le service provider est auto-découvert (Laravel package discovery). Aucune route ni contrôleur à écrire.

Endpoints
---------

[](#endpoints)

Tous sous `/{prefix}/*`, middleware `api` + token Bearer (`Authorization: Bearer ` ou header `X-Larascope-Token`).

EndpointContenu`GET /larascope/capabilities`fonctionnalités disponibles + packages détectés (Pulse, Telescope, Horizon, Filament…) via Composer, versions Laravel/PHP, drivers DB/queue/cache — **sans DB**`GET /larascope/health`DB / cache up-down, disque, versions Laravel &amp; PHP, environnement`GET /larascope/pulse`si **Laravel Pulse** présent : exceptions / requêtes lentes / jobs lents récents (table `pulse_entries`) ; sinon repli sur les logs. Plus jobs échoués + mémoire`GET /larascope/stats`compteurs d'entités configurables (`config('larascope.stats')`), `users` auto-inclus`GET /larascope/connections`monitoring **par IP** : top IPs, nb de requêtes, types d'attaque (depuis un access/security log) ; plages privées ignorées`GET /larascope/logs?file=&level=error&limit=50`dernières entrées d'un canal choisi (`laravel` par défaut, `single`/`daily`, ou fichier configuré)`GET /larascope/security`APP\_DEBUG en prod, APP\_KEY, `public/.env` exposé, HTTPS, cookies sécurisés, storage inscriptible, pic de connexions échouées + scoreL'app mobile interroge d'abord `/capabilities` et **adapte son affichage** : la section Pulse n'apparaît enrichie que si Pulse est installé, le monitoring IP que si un access/security log existe, etc. Les packages détectés incluent `spatie/laravel-health` et `sentry/sentry-laravel` (on s'appuie dessus plutôt que réinventer).

### Stats configurables

[](#stats-configurables)

```
// config/larascope.php
'stats' => [
    ['label' => 'Liens', 'table' => 'links'],
    ['label' => 'Clics', 'table' => 'clicks'],
],
```

### Monitorer des logs spécifiques (surcharge)

[](#monitorer-des-logs-spécifiques-surcharge)

```
'logs' => [
    'files' => [
        ['name' => 'security', 'label' => 'Sécurité', 'path' => storage_path('logs/security-*.log')],
        ['name' => 'erp', 'label' => 'ERP', 'path' => storage_path('logs/erp-sync-*.log')],
    ],
],
```

### Monitoring par IP / connexions

[](#monitoring-par-ip--connexions)

```
# Log à parser pour les IP (sinon auto-détection d'un security-*.log)
LARASCOPE_ACCESS_LOG=/var/log/nginx/access.log
LARASCOPE_SCAN_THRESHOLD=50   # IP au-dessus => incident "trafic anormal"
```

Enveloppe de réponse :

```
{
  "ok": true,
  "generated_at": "2026-06-01T14:40:48+00:00",
  "data": { },
  "incidents": [
    { "id": "db-down", "severity": "critical", "title": "...", "detail": "..." }
  ]
}
```

`severity` ∈ `info` | `warning` | `critical`. L'app mobile diffe `incidents` pour déclencher ses alertes.

Sécurité
--------

[](#sécurité)

- **Read-only** : aucun endpoint ne modifie l'état.
- **Token Bearer obligatoire** : 401 si invalide, 503 si non configuré. Comparaison en **temps constant** (`hash_equals`).
- **Rate limiting** intégré (60 req/min par défaut) contre le brute-force du token : ```
    LARASCOPE_RATE_LIMIT=60,1   # max,parMinutes
    ```
- **HTTPS forçable** en production (refuse le HTTP en clair, sauf réseau local) : ```
    LARASCOPE_REQUIRE_HTTPS=true
    ```
- **Coupe-circuit** : `LARASCOPE_ENABLED=false` → plus aucune route enregistrée.

### Rédaction des secrets (anti-fuite)

[](#rédaction-des-secrets-anti-fuite)

Comme Sentry/Flare, l'agent **masque les secrets à la source** avant transmission (mots de passe, tokens, Bearer/Basic, clés API, JWT, clés Stripe/GitHub/Slack/Google, clés AWS, APP\_KEY) dans les logs / SQL / détails d'erreur. Les messages d'erreur DB/cache ne renvoient que le **nom de classe** de l'exception (jamais le DSN/identifiants).

```
LARASCOPE_REDACT=true            # actif par défaut
LARASCOPE_REDACT_EMAILS=true     # masquer aussi les emails (défaut: false)
```

Ajoute tes propres motifs PCRE dans `config('larascope.redact.patterns')`. La rédaction est *best-effort* : ne loggue jamais de secret en premier lieu.

### Allowlist IP &amp; proxys de confiance (important)

[](#allowlist-ip--proxys-de-confiance-important)

`LARASCOPE_ALLOWED_IPS` et l'exception HTTPS-local s'appuient sur `request()->ip()`. **Derrière un reverse-proxy (Traefik/nginx/Docker), cette IP vient de `X-Forwarded-For`** : elle n'est fiable que si le `TrustProxies` de ton app est **correctement configuré** (proxy réel, pas `*`). Mal configuré, un attaquant peut usurper une IP via l'en-tête.

- L'allowlist est une **défense en profondeur** : le **token reste le garde principal** dans tous les cas.
- L'exception « HTTP autorisé en local » est désactivée dès qu'on est derrière un proxy de confiance.

### Checklist de déploiement sécurisé

[](#checklist-de-déploiement-sécurisé)

1. Servir derrière **HTTPS** (Traefik, Nginx, Caddy…) — le token voyage dans l'en-tête `Authorization`, TLS est indispensable.
2. `LARASCOPE_TOKEN` **long et unique par projet**, dans le `.env` (jamais commité). Le régénérer en cas de fuite (`php artisan larascope:token`).
3. `LARASCOPE_REQUIRE_HTTPS=true` en prod.
4. Garder le rate limit raisonnable.
5. Les endpoints exposent des **données sensibles** (logs, SQL des requêtes lentes) — le token + HTTPS sont la barrière. Ne réduire l'`LARASCOPE_RATE_LIMIT` que si nécessaire.

###  Health Score

38

—

LowBetter than 83% of packages

Maintenance90

Actively maintained with recent releases

Popularity3

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity47

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~2 days

Total

2

Last Release

49d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/95159ad13115add4f2785edcff1d23900f7e3ca4e8a7aca9ca1fb38f9c3a9f1e?d=identicon)[matthieuLabaune](/maintainers/matthieuLabaune)

---

Top Contributors

[![matthieuLabaune](https://avatars.githubusercontent.com/u/59911744?v=4)](https://github.com/matthieuLabaune "matthieuLabaune (9 commits)")

---

Tags

laravelmonitoringhealthsecuritylogsobservabilitypulselarascope

###  Code Quality

TestsPest

Code StyleLaravel Pint

### Embed Badge

![Health badge](/badges/larascope-agent/health.svg)

```
[![Health](https://phpackages.com/badges/larascope-agent/health.svg)](https://phpackages.com/packages/larascope-agent)
```

###  Alternatives

[spatie/laravel-health

Monitor the health of a Laravel application

87912.0M177](/packages/spatie-laravel-health)[defstudio/telegraph

A laravel facade to interact with Telegram Bots

813336.8k3](/packages/defstudio-telegraph)[psalm/plugin-laravel

Psalm plugin for Laravel

3345.3M347](/packages/psalm-plugin-laravel)[keepsuit/laravel-opentelemetry

OpenTelemetry integration for laravel

167558.4k1](/packages/keepsuit-laravel-opentelemetry)[harris21/laravel-fuse

Circuit breaker for Laravel queue jobs. Protect your workers from cascading failures.

45955.7k](/packages/harris21-laravel-fuse)[simplestats-io/laravel-client

Server-side analytics for Laravel that follows the full funnel from visit to registration to payment, attributed to the channel that drove it. Revenue, MRR, churn and ad-spend profit (ROAS/CAC) per channel. GDPR compliant, ad-blocker proof.

5022.6k](/packages/simplestats-io-laravel-client)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
