specula/laravel

Zero-config Laravel middleware that auto-generates live API docs

Maintainers

Package info

github.com/elvinaqalarov99/specula-laravel

pkg:composer/specula/laravel

Statistics

Installs: 13

Dependents: 0

Suggesters: 0

Stars: 1

Open Issues: 0

v0.1.16 2026-03-16 08:21 UTC

This package is auto-updated.

Last update: 2026-04-16 08:27:49 UTC


README

Laravel middleware for Specula — API docs that can't lie.

Captures real HTTP traffic and ships observations to your local Specula server, which builds a live OpenAPI 3.0 spec automatically. Zero annotations required.

Requirements

  • PHP 8.1+
  • Laravel 10 or 11

Installation

composer require specula/laravel

The SpeculaServiceProvider is auto-discovered by Laravel — no manual registration needed.

Configuration

Publish the config file:

php artisan vendor:publish --tag=specula-config

This creates config/specula.php:

return [
    'enabled'        => env('SPECULA_ENABLED', true),
    'endpoint'       => env('SPECULA_ENDPOINT', 'http://localhost:7878'),
    'ignore'         => ['/health', '/metrics', '/telescope'],
    'capture_bodies' => env('SPECULA_CAPTURE_BODIES', true),
];

Add to your .env:

SPECULA_ENABLED=true
SPECULA_ENDPOINT=http://localhost:7878

That's it. Open http://localhost:7878/docs to see your API docs populate in real time.

Options

Key Default Description
enabled true Toggle observation on/off
endpoint http://localhost:7878 Specula server URL
ignore ['/health', ...] Path prefixes to skip
capture_bodies true Include request/response bodies

How it works

The middleware runs after the response is built, then sends the full request/response pair to the Specula server's /ingest endpoint via a non-blocking raw socket. Response time is not affected. If the Specula server is unreachable, the observation is silently dropped.

Starting the Specula server

# Download the binary
curl -sSL https://github.com/elvinaqalarov99/specula/releases/latest/download/specula-darwin-arm64 -o specula
chmod +x specula

# Start — proxy on :9999, docs on :7878
./specula start --target http://localhost:3000

License

MIT © Elvin Agalarov