Self-hosted exception tracker and uptime monitor for Laravel apps. Real-time ingestion, issue codes, digests, and outage alerts — on your own infrastructure.
Everything you need to monitor exceptions and uptime — without SaaS billing or vendor lock-in.
POST /api/log accepts the full client exception payload — HTTP
context, user, stack — persisted as raw_exception with mapped columns.#BUG42 or #OUT3 from group prefixes,
with outages always mapped to OUT./e/{hash}.ProjectOfflineException on failure, auto-recovery to
DONE, and email alerts for outage and restore./api/docs.config/boogle.php /
.env.andreapollastri/boogle-client wires Laravel 9–13 apps to your Boogle instance
in a few lines.PHP 8.3+, Composer, and Node. Any SQL database Laravel supports.
git clone https://github.com/andreapollastri/boogle.git cd boogle composer run setup
The setup script installs Composer deps, creates .env, generates the app key,
migrates, installs npm packages, and builds assets.
composer install cp .env.example .env php artisan key:generate php artisan migrate --force npm install --ignore-scripts npm run build
From zero to a running panel in three steps.
Clone the repo, run composer run setup, then start the stack with
composer run dev.
Default seeder admin: admin@users.test / password. The app root redirects to
login.
Add a project, open Installation for key + token, then wire a client app (next section).
composer run dev
Starts the web server, queue listener, log tail, and Vite. For scheduler locally, also run
php artisan schedule:work.
Send exceptions from another Laravel application into this Boogle instance.
composer require andreapollastri/boogle-client php artisan boogle:install
Set env vars from the project Installation page:
BOOGLE_KEY=<project_api_token> BOOGLE_PROJECT_KEY=<project_key> BOOGLE_SERVER=https://your-boogle-host.example/api/log
In bootstrap/app.php:
->withExceptions(function (Exceptions $exceptions) {
Boogle::registerExceptionHandler($exceptions);
})
In app/Exceptions/Handler.php register():
$this->reportable(function (Throwable $e) {
Boogle::handle($e);
});
| Laravel | Where |
|---|---|
| 11+ | bootstrap/app.php → withExceptions |
| 9 / 10 | Handler::register() → reportable |
Verify with:
php artisan boogle:test
key + token + full exception
object. Boogle stores it in raw_exception and maps http / user for the
panel.
Each project can ping a URL and open an outage issue when it fails.
uptime_enabled — turn monitoring on or offuptime_url — optional; falls back to the project urlOn failure Boogle records a ProjectOfflineException and emails. When the service returns, the
issue moves to DONE and a recovery mail is sent. The project chart shows the last 30 days.
php artisan projects:check-uptime
Base path /api/admin. Auth: Bearer <sanctum-token> from an admin
user.
POST /api/log (project key + token, no admin bearer)Interactive docs: /api/docs. Spec file: public/openapi.json (API v1.3.0).
Create tokens from the panel profile page.
One cron entry drives digests, uptime checks, and pruning.
* * * * * cd /path-to-boogle && php artisan schedule:run >> /dev/null 2>&1
| Command | Schedule | Purpose |
|---|---|---|
exceptions:send-digests |
Every minute | Email digests for open issues |
projects:check-uptime |
Every minute | Ping project URLs / outage issues |
exceptions:prune-old |
Daily 02:30 | Delete exceptions older than 24 months |
Deploy without surprises. Cache config, keep the queue and scheduler running.
php artisan migrate --force php artisan config:cache php artisan route:cache php artisan view:cache php artisan queue:work --sleep=3 --tries=3 --timeout=120
| Variable | Notes |
|---|---|
APP_URL |
Public HTTPS URL of this Boogle instance |
APP_ENV / APP_DEBUG |
production / false |
MAIL_* |
Required for digests and uptime alerts |
QUEUE_CONNECTION |
Use database, Redis, or similar — keep a worker online |
BOOGLE_UI_SHOW_HTTP_HEADERS |
Optional panel privacy (default true) |
BOOGLE_UI_SHOW_HTTP_SESSION |
Optional panel privacy (default true) |
queue:work restarts automatically. See the GitHub README for sample unit files.
Run Boogle on any Ubuntu VPS with cipi.sh — PHP-FPM, MariaDB, Nginx, Let's Encrypt, zero-downtime releases, and queue workers.
Explore cipi.sh →