v0.3.0 Vite HMR & Reverb, rewired in-flight

Share your
localhost, live

One command puts your local Laravel app online — app, Vite HMR and Reverb websockets all working through a single tunnel. Zero config. Zero Vite restart. No account needed.

$localhoist
# or, from your project
$php artisan share
Homebrew go install Composer
https://your-app.trycloudflare.com
Open on your phone
Scan to test the live site on a real device — no deploy.
The problem

Plain tunnels break Laravel dev in three places

A raw tunnel — ngrok, cloudflared, Expose — forwards your app but leaves the modern Laravel stack in pieces. localhoist drives one for you and fixes all three, in-flight, so your stock config never changes.

Vite HMR

Plain tunnels keep pointing HMR at localhost:5173. localhoist rewrites Vite's client config in-flight — hot reload just works.

Reverb websockets

Echo keeps dialing localhost:8080. localhoist rewires Reverb's connection config as it passes through, so realtime survives the tunnel.

APP_URL & signed URLs

A mismatched APP_URL breaks signed URLs and asset generation. localhoist keeps it aligned with the public host — no .env mutation.

Use cases

One tunnel, the whole feedback loop

01
Working with webhooks

Point Stripe, GitHub or any provider at your public tunnel URL — their webhooks reach your local app directly, so you debug the handler against real payloads without deploying.

02
Painless device testing

Open your dev site from a phone or tablet via the public URL and QR code — no deploy just to check a real device.

03
Collaboration in a click

Share a link and get instant feedback from teammates or clients. No deploy step, no screen-sharing call.

How it works

Run it. Get a URL.
Ctrl+C puts it back.

localhoist detects your Laravel app, opens a single tunnel, and rewires Vite and Reverb as traffic passes through. You get a public URL and a QR code. When you're done, everything is restored exactly as it was.

Zero config, zero restart
Your stock vite.config.js never changes and Vite never needs to restart.
Sail Herd Valet
localhoist — ~/apps/acme
$localhoist
 
Detecting Laravel app… Herd · php 8.3
Opening Cloudflare quick tunnel…
 
Tunnel online
https://your-app.trycloudflare.com
 
Vite HMR rewired → wss://…/vite
Reverb WS rewired → wss://…/app
APP_URL aligned (no .env change)
 
GET / 200 18ms
POST /webhooks/stripe
Install

One binary. Pick your poison.

Then cd into any Laravel app and run localhoist — or php artisan share. Ships on a free Cloudflare quick tunnel — no account. Want a stable domain? Run --transport ngrok with your own ngrok. A hosted relay with stable subdomains is on the roadmap.

macOS — Homebrew
$brew install xPapay/tap/localhoist
$localhoist
Laravel — Composer
$composer require --dev localhoist/laravel
$php artisan share
anywhere — Go
$go install github.com/xPapay/localhoist/cmd/localhoist@latest
$localhoist

Plain tunnels forward a port. localhoist forwards your whole Laravel dev environment — HMR, websockets and signed URLs, all intact.

Open source · MIT · built for the Laravel ecosystem