Download the PHP package scry/anima without Composer

On this page you can find all versions of the php package scry/anima. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package anima

Anima Webhook Interceptor & Synthetic Replay Studio (scry/anima)

Latest Version on Packagist Latest Tag Total Downloads Tests Passing Laravel Support PHP Version


Introduction

Anima is a developer-centric, reactive webhook interceptor and synthetic request replay studio for Laravel applications. It embeds an interactive split-pane Workbench powered by Vue 3 and Monaco Editor directly into your web browser, giving developers an instant interface to capture incoming webhooks, inspect payload trees, mutate headers and JSON payloads, and replay synthetic requests directly through Laravel's HTTP Kernel without network latency.

Designed for modern API development, Anima includes built-in cryptographic signature bypassing, swappable storage drivers (Database, Isolated SQLite, and Redis), and non-recursive replay loop prevention.


Table of Contents


Features and Workbench Capabilities

1. Transparent Interception Middleware

2. In-Memory Kernel Request Synthesizer

3. Cryptographic Signature Bypassing

4. Swappable Polymorphic Storage Drivers

5. Embedded Vue 3 & Monaco Editor Workbench

6. Request Context & Header Inspector

7. Light and Dark Theme Support


Supported Storage Drivers

Storage Driver Schema Isolation TTL Expiration Query Filtering Zero Migration Setup
Database (database) Primary DB Configurable via Purge Supported Requires Migration Stub
SQLite (sqlite) Isolated File Configurable via Purge Supported Auto-Provisioning
Redis (redis) In-Memory Native Key TTL Supported Auto-Provisioning

Installation

Install the package via Composer:

Publish the package configuration file:

Publish and run the database migration (required only when using the database driver):

Optionally publish compiled frontend assets and Blade views:


Configuration

In config/anima.php:


Usage Guide

Attaching Interception Middleware

Attach the anima.capture middleware alias to any webhook route. You can pass optional comma-separated tags to categorize entries:


Integrating Signature Bypass Trait

When replaying altered payloads, external HMAC signatures will naturally fail validation. Use the BypassesReplaySignatures trait inside your webhook verification middleware:


Security Considerations & Environment Guards

Anima captures and can replay live HTTP traffic — including whatever headers and payloads pass through your webhook routes — so it ships secure-by-default rather than relying on you to lock it down. Each guard below is independently configurable in config/anima.php.

Dashboard & API Authorization

The /anima dashboard and every /anima/api/* endpoint (entry listing, entry deletion/purge, and replay) are gated by Anima::check(). By default, that check passes only when the application is running in an environment listed in allowed_environments (default: local, testing) — including in production, where it fails closed. Any request outside an allowed environment receives 403 Unauthorized before it reaches a controller.

To allow authorized access in production (or any other environment), register a callback in a service provider's boot() method, mirroring Laravel Telescope/Horizon's ::auth() pattern:

[!CAUTION] AUTHORIZATION GUARD Don't add 'production' to allowed_environments, and don't write an Anima::auth() callback that always returns true. Anyone who passes this check can read every captured webhook (including headers) and trigger synthetic replays — see below.

Sensitive Header Redaction

Request headers are redacted before a captured entry is persisted. Any header listed in redact_headers (case-insensitive match) is stored as [REDACTED] instead of its real value. The default list covers common auth and provider signature headers:

Extend this list with any additional secret or signature headers your webhook providers use.

Replay Destination Restrictions

POST /anima/api/replay dispatches a synthetic request through your application's own HTTP Kernel — attacker-controlled method, headers, and body included — so it must not be usable to forge requests against routes it wasn't meant to touch. By default (replay.restrict_to_captured_routes), a replay is only permitted when its target URI resolves to a route carrying the anima.capture middleware (or CaptureWebhook::class), i.e. a route Anima already captures traffic for. Domain-scoped route groups and custom ports are also fully matched and preserved. Any other destination returns 422 Unprocessable Entity without dispatching the request.

Rate Limiting

The purge (DELETE /anima/api/entries) and replay (POST /anima/api/replay) endpoints are throttled via rate_limits ("max attempts,decay minutes", default 10,1 and 30,1 respectively), limiting how much damage an authorized-but-compromised session can do.

Cryptographic Signature Bypassing

[!CAUTION] ENVIRONMENT SECURITY GUARD The BypassesReplaySignatures trait is strictly locked to local and testing environments (app()->environment('local', 'testing')). In production environments, isValidReplay() is hardcoded to return false.

The bypass itself is gated on the anima_synthetic_replay request attribute, which only KernelRequestSynthesizer sets, never on a header. Headers on a real inbound request (for example one arriving over an ngrok/Cloudflare tunnel during local webhook development) are attacker-controlled, so this check must never be changed to read a header — doing so would let anyone who can reach the endpoint bypass signature verification.

Long-Running Workers (Octane, Swoole, RoadRunner)

KernelRequestSynthesizer dispatches synthetic requests through the same in-process Kernel used to serve the current request. The container's request binding is saved before dispatch and restored immediately after, so a replay cannot leak its synthetic request context into the next request served by the same long-running worker process.


Quickstart and Local Verification

  1. Start your local development server:

  2. Open your browser and navigate to:

  3. Send a test webhook from your terminal:

  4. The webhook event will appear in the Captured Events feed. Select it, modify the JSON payload in Monaco Editor, adjust headers, and click Synthesize & Replay.

Multi-Driver Docker Compose Environment

A multi-driver Docker Compose stack is bundled for testing across storage backends:

Services included:


Running Automated Tests

Run the test suite via Composer (which automatically purges the skeleton cache and executes PHPUnit):

Or run PHPUnit directly:

All 65 tests (270 assertions) verify:


License

This package is open-sourced software licensed under the MIT License.


All versions of anima with dependencies

PHP Build Version
Package Version
Requires php Version ^8.2
illuminate/contracts Version ^10.0|^11.0|^12.0|^13.0
illuminate/database Version ^10.0|^11.0|^12.0|^13.0
illuminate/http Version ^10.0|^11.0|^12.0|^13.0
illuminate/routing Version ^10.0|^11.0|^12.0|^13.0
illuminate/support Version ^10.0|^11.0|^12.0|^13.0
symfony/http-foundation Version ^6.2|^7.0|^8.0
symfony/http-kernel Version ^6.2|^7.0|^8.0
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package scry/anima contains the following files

Loading the files please wait ...