PHPackages                             artisan-share/laravel - 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. artisan-share/laravel

ActiveLibrary

artisan-share/laravel
=====================

Zero-config webhook tunnel for Laravel — share local endpoints with a public URL via a driver you own (relay, cloudflare, ssh).

v0.1.4(today)10MITRustPHP ^8.2CI passing

Since Aug 1Pushed todayCompare

[ Source](https://github.com/haidarrais/laravel-share)[ Packagist](https://packagist.org/packages/artisan-share/laravel)[ RSS](/packages/artisan-share-laravel/feed)WikiDiscussions main Synced today

READMEChangelog (6)Dependencies (7)Versions (4)Used By (0)

Artisan Share
=============

[](#artisan-share)

Zero-config webhook tunnels for Laravel. Share a local endpoint with a public URL via a **driver you own** — a self-hosted relay, your own Cloudflare account, or any SSH host you already have.

> **This project is software only.** It operates no shared relay, no backend, and no "artisan-share.com" service. Every public endpoint is deployed and owned by the person using it. There is nothing to sign up for.

```
$ php artisan share
Artisan Share
Forwarding   https://swift-otter-42.relay.example.dev -> http://localhost:8000
Inspector    http://127.0.0.1:4040
Press Ctrl+C to stop

12:10:03  POST /webhooks/stripe   200  74ms  [stripe]  event=customer.created
12:10:11  POST /webhooks/github   200  42ms  [github]  event=push

```

---

Features
--------

[](#features)

- **One command, zero config.** `php artisan share` reads your app's port, starts the tunnel, and prints a public HTTPS URL.
- **Bring-your-own drivers.** `relay` (self-host the project's reference server), `cloudflare` (wraps your own `cloudflared`), and `ssh` (classic reverse tunnel). All terminate on infrastructure you own.
- **Webhook-aware logging.** Pretty-printed bodies, provider detection from signing headers, and compact one-line summaries with `--show-headers` for full headers.
- **Local web inspector.** A localhost-only dashboard (`127.0.0.1:4040`) that mirrors the terminal log and supports request replay.
- **Secure by default.** TLS end-to-end, per-session tokens, client-side header redaction, and no payload persistence on any shipped driver.

Contents
--------

[](#contents)

This monorepo ships three artifacts:

ArtifactPathDescriptionLaravel packageroot `composer.json`The `php artisan share` command and config.Tunnel client`crates/tunnel-client`A single static Rust binary spawned by the command.Relay server`crates/relay-server`A reference self-hosted backend for the `relay` driver.Requirements
------------

[](#requirements)

- PHP **8.2+** (PHP **8.3+** for Laravel 13) and Composer
- Laravel **10, 11, 12, or 13**
- A tunnel driver you already control (see [Drivers](#drivers))

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

[](#installation)

```
composer require --dev artisan-share/laravel
```

The package registers its service provider automatically. On first `php artisan share`, the platform-appropriate Rust binary is downloaded from the GitHub release, its SHA-256 checksum is verified, and it is cached under `~/.artisan-share/bin`.

To publish the config:

```
php artisan vendor:publish --tag=share-config
```

Usage
-----

[](#usage)

```
php artisan share                              # uses the configured default driver
php artisan share --driver=relay               # override the driver for this run
php artisan share --port=9000                  # forward a different local port
php artisan share --subdomain=my-app           # request a subdomain (relay)
php artisan share --basic-auth="user:pass"     # protect the public endpoint
php artisan share --inspector-port=0           # disable the web inspector
php artisan share --show-headers              # show full request headers
```

Press `Ctrl+C` to shut down cleanly. The tunnel session is torn down so the public URL is immediately invalidated.

### Flags

[](#flags)

FlagDescription`--driver`Tunnel backend: `relay`, `cloudflare`, or `ssh`.`--port`Local port to forward to (default: your `local_port` config).`--subdomain`Requested subdomain on the relay driver.`--basic-auth``user:pass` HTTP basic auth for the public endpoint.`--inspector-port`Port for the local web inspector (`0` disables).`--show-headers`Print full request headers in the terminal log.`--binary`Path to an already-installed tunnel client binary.Drivers
-------

[](#drivers)

Every driver terminates on infrastructure you already own. Pick the default in `config/share.php` (or `SHARE_DRIVER`).

DriverBackendAccountCost`relay`The project's reference `relay-server`, which you deploy yourself.Whatever host you already use.Free tier of your host.`cloudflare`Wraps your own `cloudflared` binary and Cloudflare account.Your Cloudflare account.Free.`ssh`Classic `ssh -R` reverse tunnel.Any SSH host you can access.Free if you already have one.### relay

[](#relay)

```
// config/share.php
'drivers' => [
    'relay' => [
        'endpoint' => env('SHARE_RELAY_URL'),    // e.g. wss://tunnel.example.dev
        'token'    => env('SHARE_RELAY_TOKEN'),  // your instance's token, if set
    ],
],
```

Deploy the reference server anywhere with the templates in [`deploy/`](deploy/):

- [Fly.io](deploy/fly.toml)
- [Railway](deploy/railway.Dockerfile)
- [Docker Compose](deploy/docker/compose.yml)

### cloudflare

[](#cloudflare)

```
'drivers' => [
    'cloudflare' => [
        'binary' => env('SHARE_CLOUDFLARED_PATH', 'cloudflared'),
    ],
],
```

`cloudflared` must already be installed and logged in (`cloudflared login`). Artisan Share only shells out to the session you already established.

### ssh

[](#ssh)

```
'drivers' => [
    'ssh' => [
        'host'        => env('SHARE_SSH_HOST'),
        'user'        => env('SHARE_SSH_USER'),
        'remote_port' => env('SHARE_SSH_REMOTE_PORT', 8080),
    ],
],
```

Opens `ssh -R :localhost:` to your host.

Local Web Inspector
-------------------

[](#local-web-inspector)

By default a localhost-only dashboard runs at ****. It mirrors the terminal log and lets you:

- list captured requests,
- inspect full headers and bodies,
- **replay** a captured webhook against your local app without re-triggering it from the provider.

Set `--inspector-port=0` or `inspector_port` to disable it.

Webhook provider detection
--------------------------

[](#webhook-provider-detection)

The logger labels requests based on common signing headers (without validating payloads):

- `Stripe-Signature` → `stripe`
- `X-Hub-Signature-256` → `github`
- `X-Slack-Signature` → `slack`
- and more

Redaction
---------

[](#redaction)

Sensitive request headers (`authorization`, `cookie`, `stripe-signature`, …) and secret-shaped body patterns are masked in the terminal log and inspector by default. Use `--show-headers` to reveal headers.

Security
--------

[](#security)

Opening a public ingress point to your machine is powerful. Read the full [`SECURITY.md`](SECURITY.md) for the threat model and reporting policy.

Development
-----------

[](#development)

See [`CONTRIBUTING.md`](CONTRIBUTING.md).

### Rust

[](#rust)

```
cargo build --workspace
cargo test --workspace
cargo clippy --workspace --all-targets
cargo fmt --all
```

### PHP

[](#php)

```
composer install
vendor/bin/phpunit
vendor/bin/pint --test
```

Versioning &amp; compatibility
------------------------------

[](#versioning--compatibility)

All three published artifacts follow [Semantic Versioning](https://semver.org). The Rust client and relay server are compatible with each other at the wire protocol level; the PHP package and the Rust client share a JSON config contract. See the compatibility matrix below.

artifact versionprotocolconfig contractv0.1`1``1`License
-------

[](#license)

[MIT](LICENSE)

###  Health Score

38

—

LowBetter than 83% of packages

Maintenance100

Actively maintained with recent releases

Popularity2

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity38

Early-stage or recently created project

 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 ~0 days

Total

3

Last Release

0d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/4a47c52f3139db673674c9c3fea3873416c1fa3ad5bd33fea3352751897805b1?d=identicon)[haidarrais](/maintainers/haidarrais)

---

Top Contributors

[![haidarrais](https://avatars.githubusercontent.com/u/30068201?v=4)](https://github.com/haidarrais "haidarrais (18 commits)")

---

Tags

tunnel-clientwebhookwebhook-tularavelartisanwebhooktunnelngrok

###  Code Quality

TestsPHPUnit

Code StyleLaravel Pint

### Embed Badge

![Health badge](/badges/artisan-share-laravel/health.svg)

```
[![Health](https://phpackages.com/badges/artisan-share-laravel/health.svg)](https://phpackages.com/packages/artisan-share-laravel)
```

###  Alternatives

[laravel/boost

Laravel Boost accelerates AI-assisted development by providing the essential context and structure that AI needs to generate high-quality, Laravel-specific code.

3.5k26.0M737](/packages/laravel-boost)[laravel/ai

The official AI SDK for Laravel.

1.1k4.6M275](/packages/laravel-ai)[laravel/sail

Docker files for running a basic Laravel application.

1.9k212.4M1.4k](/packages/laravel-sail)[spatie/laravel-health

Monitor the health of a Laravel application

88212.7M180](/packages/spatie-laravel-health)[laravel/mcp

Rapidly build MCP servers for your Laravel applications.

78727.1M205](/packages/laravel-mcp)[propaganistas/laravel-disposable-email

Disposable email validator

6023.2M7](/packages/propaganistas-laravel-disposable-email)

PHPackages © 2026

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