Skip to content

Guide ​

The README gets you started. These pages go into the details.

How it works ​

  1. Rules live in your database. You change them in the dashboard, through its JSON API, with Artisan or through the Rule model.
  2. A compiler turns them into a versioned manifest stored in your cache, after each change commits. Octane keeps it in memory, and on PHP-FPM, a server's workers share it in APCu, so a process or a server reads the cache about once per manifest.refresh_seconds (ADR-0007). No request ever reads the rules from the database.
  3. The dynamic.throttle middleware runs after authentication. It matches every applicable rule and counts each request with a sliding-window counter (ADR-0006). Blocked requests get a normal Laravel 429.

Pages ​

When something goes wrong in production, the runbook has the steps: Redis is down, the manifest was evicted, a bad rule blocks /api, or an emergency change was left on.

The design is recorded as Architecture Decision Records, and each feature has a spec.

Released under the MIT License. An independent package, not affiliated with or endorsed by Laravel.