Laravel Integration Guide
Overview
Jetty is the perfect companion for Laravel development, designed specifically with PHP developers in mind. Share your local Laravel app with teammates, test webhooks from services like Stripe or GitHub, or demo work-in-progress features to clients—all without deploying to staging.
Why Jetty + Laravel?
- Auto-detection: Jetty automatically discovers your Laravel installation and
artisancommand - Zero configuration: Works out-of-the-box with Valet, Herd, Sail, and standard Laravel setups
- Native PHP: Built with PHP, integrates seamlessly with Composer workflows
- Persistent URLs: Reserve subdomains for stable webhook endpoints across sessions
- Request inspection: View every incoming request in real-time through the dashboard
Prerequisites
Before you begin, ensure you have:
- Laravel 8+ (works with 9, 10, 11)
- PHP 8.0+ installed locally
- Composer for package management
- Jetty CLI installed (see installation below)
- API token from usejetty.online
Quick Start
Get your Laravel app online in under 2 minutes:
1. Install Jetty CLI
# Global Composer installation (recommended)
composer global require jetty/client
# Or install via curl
curl -fsSL https://usejetty.online/install/jetty.sh | bash
2. Authenticate
# Set your API token from the dashboard
jetty auth YOUR_API_TOKEN_HERE
3. Share Your Laravel App
# From your Laravel project directory
cd ~/projects/my-laravel-app
# Start sharing (auto-detects Laravel)
jetty share
# Or specify the local site explicitly
jetty share --site=my-app.test
That's it! Your app is now accessible at a public URL like https://eager-otter.tunnels.usejetty.online.
Auto-Detection
Jetty intelligently detects Laravel applications and configures itself automatically.
What Jetty detects:
- Laravel installation: Checks for
artisanfile in project root - Adjacent artisan: Walks up directory tree to find Laravel root
- Local server: Detects Valet/Herd domains or localhost ports
- Working directory: Uses
JETTY_SHARE_INVOCATION_CWDfor context-aware detection
Detection examples:
# From Laravel root - auto-detects everything
cd ~/sites/my-laravel-app
jetty share
# From subdirectory - finds Laravel root automatically
cd ~/sites/my-laravel-app/app/Http/Controllers
jetty share # Still works! Walks up to find artisan
# Explicit site override
jetty share --site=localhost:8000
Manual override when needed:
# Specify exact local URL
jetty share --site=my-app.test
# Use custom port
jetty share --site=localhost:8080
# Docker/Sail setup
jetty share --site=localhost:80
Common Workflows
Local Development
With Laravel Valet:
# Link your app in Valet
cd ~/sites/my-laravel-app
valet link my-app
# Share it with Jetty (port 443 for HTTPS)
jetty share --site=my-app.test
# Or let Jetty detect Valet domain
jetty share
With Laravel Herd:
# Herd automatically serves apps from ~/Herd
cd ~/Herd/my-laravel-app
# Share via Jetty
jetty share --site=my-laravel-app.test
With php artisan serve:
# Start Laravel's built-in server
php artisan serve --port=8000
# In another terminal, share it
jetty share --site=localhost:8000
Webhook Testing
Stripe Webhooks (Laravel Cashier)
Perfect for testing subscription webhooks locally:
# 1. Start your Laravel app
cd ~/sites/laravel-saas
jetty share --subdomain=laravel-saas-dev
# 2. Copy the public URL
# Example: https://laravel-saas-dev.tunnels.usejetty.online
# 3. Configure Stripe webhook endpoint
# Dashboard: https://dashboard.stripe.com/webhooks
# Endpoint URL: https://laravel-saas-dev.tunnels.usejetty.online/stripe/webhook
# 4. Test locally
stripe trigger payment_intent.succeeded
Update your .env:
STRIPE_WEBHOOK_SECRET=whsec_your_signing_secret_here
APP_URL=https://laravel-saas-dev.tunnels.usejetty.online
GitHub Webhooks
Test CI/CD webhooks locally:
# Share with reserved subdomain
jetty share --subdomain=laravel-ci-dev
# Configure GitHub webhook
# Repo → Settings → Webhooks → Add webhook
# URL: https://laravel-ci-dev.tunnels.usejetty.online/webhooks/github
# Content type: application/json
# Events: Push, Pull Request
# Your Laravel controller will receive webhooks
Laravel route:
// routes/web.php
Route::post('/webhooks/github', [WebhookController::class, 'github']);
Twilio Webhooks (SMS Apps)
Test SMS/voice webhooks:
# Share with stable subdomain
jetty share --subdomain=laravel-sms
# Configure Twilio phone number
# Phone Numbers → Active Numbers → Select number
# Voice: https://laravel-sms.tunnels.usejetty.online/twilio/voice
# Messaging: https://laravel-sms.tunnels.usejetty.online/twilio/sms
Team Development
Share your local Laravel app with remote teammates:
# Developer A shares feature branch
cd ~/sites/my-laravel-app
git checkout feature/new-ui
jetty share --subdomain=team-new-ui
# Share URL with team: https://team-new-ui.tunnels.usejetty.online
# Teammates can test the feature without deploying
Pro tip: Use descriptive subdomains for different features:
jetty share --subdomain=team-admin-panel
jetty share --subdomain=team-api-v2
jetty share --subdomain=team-checkout-flow
API Development
Share your Laravel API with frontend developers or mobile apps:
# Start API with reserved subdomain
cd ~/sites/laravel-api
jetty share --subdomain=api-dev
# Frontend devs use: https://api-dev.tunnels.usejetty.online/api
# Mobile apps point to same URL during development
Update API configuration:
APP_URL=https://api-dev.tunnels.usejetty.online
SANCTUM_STATEFUL_DOMAINS=api-dev.tunnels.usejetty.online
SESSION_DOMAIN=.tunnels.usejetty.online
Valet / Herd Integration
Laravel Valet and Herd serve sites over HTTPS (port 443) with self-signed certificates. Jetty handles this automatically.
Valet Setup
# 1. Park or link your Laravel app
cd ~/sites
valet park
# Or link individual app
cd ~/sites/my-laravel-app
valet link my-app
# 2. Verify Valet is serving the site
valet links
curl https://my-app.test # Should work
# 3. Share via Jetty
jetty share --site=my-app.test
# Jetty automatically skips SSL verification for port 443
Herd Setup
# 1. Apps in ~/Herd are automatically served
cd ~/Herd/my-laravel-app
# 2. Verify Herd domain
open https://my-laravel-app.test
# 3. Share via Jetty
jetty share --site=my-laravel-app.test
# Or let auto-detection handle it
jetty share
HTTPS Considerations
Jetty automatically disables SSL verification when forwarding to localhost:443 or .test:443 domains because local development uses self-signed certificates. This is intentional and secure for local tunneling.
What happens under the hood:
- Public internet → Jetty Edge (valid SSL)
- Jetty Edge → Your machine (WebSocket, encrypted)
- Jetty CLI → Local Laravel (skips SSL verification for self-signed certs)
Laravel Sail Integration
Laravel Sail runs your app in Docker containers. Jetty can tunnel to Dockerized apps.
Basic Sail Setup
# 1. Start Sail
cd ~/sites/my-laravel-app
./vendor/bin/sail up -d
# 2. Share the Docker container's port
jetty share --site=localhost:80
# Jetty forwards to port 80 where Sail's nginx listens
Using host.docker.internal
For more complex setups, you might need to access services from within containers:
# Share your local Laravel app
jetty share --subdomain=laravel-sail
# Inside Sail container, services can reach your tunnel at:
# https://laravel-sail.tunnels.usejetty.online
Sail with Custom Ports
If Sail is configured for non-standard ports:
# Check docker-compose.yml for APP_PORT
# Example: APP_PORT=8080
# Share custom port
jetty share --site=localhost:8080
Multiple Sail Projects
Run multiple Laravel Sail projects simultaneously:
# Project A on default port 80
cd ~/sites/project-a
./vendor/bin/sail up -d
jetty share --site=localhost:80 --subdomain=project-a
# Project B on custom port 8081
cd ~/sites/project-b
APP_PORT=8081 ./vendor/bin/sail up -d
jetty share --site=localhost:8081 --subdomain=project-b
Environment Configuration
Best practices for configuring Laravel's .env when using Jetty.
Essential Settings
# Set APP_URL to your tunnel URL
APP_URL=https://your-subdomain.tunnels.usejetty.online
# Update session domain for cross-subdomain cookies (if needed)
SESSION_DOMAIN=.tunnels.usejetty.online
# Sanctum stateful domains (for API auth)
SANCTUM_STATEFUL_DOMAINS=your-subdomain.tunnels.usejetty.online
# Asset URL (usually matches APP_URL)
ASSET_URL=https://your-subdomain.tunnels.usejetty.online
Dynamic Configuration
For flexibility, use a separate .env.jetty or conditional logic:
// config/app.php
'url' => env('APP_URL', 'http://localhost'),
// Or dynamically detect tunnel
'url' => isset($_SERVER['HTTP_X_FORWARDED_HOST'])
? 'https://' . $_SERVER['HTTP_X_FORWARDED_HOST']
: env('APP_URL', 'http://localhost'),
Trusted Proxies
Configure Laravel to trust Jetty's forwarded headers:
// app/Http/Middleware/TrustProxies.php
protected $proxies = '*'; // Trust all proxies for tunnel traffic
protected $headers =
Request::HEADER_X_FORWARDED_FOR |
Request::HEADER_X_FORWARDED_HOST |
Request::HEADER_X_FORWARDED_PORT |
Request::HEADER_X_FORWARDED_PROTO;
Jetty automatically adds X-Forwarded-* headers so Laravel knows the original request details.
CSRF Protection
CSRF tokens work seamlessly with Jetty tunnels. No special configuration needed if APP_URL is set correctly.
If you encounter CSRF issues:
// app/Http/Middleware/VerifyCsrfToken.php
protected $except = [
'webhooks/*', // Exclude webhook routes
];
Queue Workers
Running Queues with Tunnels
Queue workers run in the background and are not affected by Jetty tunnels. However, queued jobs that generate URLs need proper configuration:
// Queue job generating a URL
use Illuminate\Support\Facades\URL;
class SendWelcomeEmail {
public function handle() {
$url = URL::to('/welcome');
// Will use APP_URL from .env
}
}
Ensure APP_URL is set:
APP_URL=https://your-subdomain.tunnels.usejetty.online
Horizon Dashboard
Share Horizon dashboard with your team:
# Start Horizon
php artisan horizon
# Share your app
jetty share --subdomain=laravel-horizon
# Access Horizon at: https://laravel-horizon.tunnels.usejetty.online/horizon
Testing Queue-Based Webhooks
Many webhooks trigger jobs that process asynchronously:
// Webhook controller
public function stripeWebhook(Request $request) {
ProcessStripeWebhook::dispatch($request->all());
return response('Webhook received', 200);
}
// Job
class ProcessStripeWebhook {
public function handle() {
// Processes webhook data
// Can make callbacks to external services via tunnel
}
}
Testing External Services
Stripe Integration
Complete workflow for testing Stripe in Laravel Cashier apps:
# 1. Share your app with reserved subdomain
jetty share --subdomain=laravel-cashier-dev
# 2. Configure Stripe CLI (optional, for local testing)
stripe listen --forward-to localhost:8000/stripe/webhook
Configure webhook in Stripe Dashboard:
URL: https://laravel-cashier-dev.tunnels.usejetty.online/stripe/webhook
Events: customer.subscription.created, customer.subscription.updated, invoice.payment_succeeded
Test subscription flow:
- Create subscription via your Laravel app
- Stripe sends webhook to tunnel
- Monitor requests in Jetty dashboard
- Debug webhook handling in real-time
OAuth Providers
Test OAuth callbacks (GitHub, Google, Facebook) locally:
# Share with stable subdomain
jetty share --subdomain=laravel-oauth-dev
# Configure OAuth provider
# Callback URL: https://laravel-oauth-dev.tunnels.usejetty.online/auth/callback/github
Laravel Socialite configuration:
GITHUB_CLIENT_ID=your_client_id
GITHUB_CLIENT_SECRET=your_client_secret
GITHUB_REDIRECT=https://laravel-oauth-dev.tunnels.usejetty.online/auth/callback/github
Email Webhooks
Test inbound email webhooks from SendGrid, Mailgun, Postmark:
SendGrid Inbound Parse:
# Share with subdomain
jetty share --subdomain=laravel-email
# Configure SendGrid Inbound Parse
# Hostname: laravel-email.tunnels.usejetty.online
# URL: https://laravel-email.tunnels.usejetty.online/webhooks/inbound-email
Laravel route:
Route::post('/webhooks/inbound-email', function (Request $request) {
Log::info('Inbound email', $request->all());
// Process email data
});
Mailgun Inbound Routes:
Priority: 0
Filter: match_recipient(".*@laravel-email.tunnels.usejetty.online")
Action: forward("https://laravel-email.tunnels.usejetty.online/webhooks/mailgun")
Reserved Subdomains for Environments
Reserve subdomains for stable, long-term tunnel endpoints:
Development Environment
# Create reserved subdomain via dashboard or CLI
jetty share --subdomain=laravel-dev
# Use this URL in .env
APP_URL=https://laravel-dev.tunnels.usejetty.online
# Configure webhooks to point here
# Now "jetty share --subdomain=laravel-dev" always gives same URL
Staging Mirror
# Share staging-like environment
jetty share --subdomain=laravel-staging
# Update .env.staging
APP_URL=https://laravel-staging.tunnels.usejetty.online
Feature Branches
# Feature-specific tunnels
jetty share --subdomain=laravel-feature-checkout
jetty share --subdomain=laravel-feature-admin
jetty share --subdomain=laravel-feature-api-v2
Team Member Subdomains
# Personal development tunnels
jetty share --subdomain=laravel-tom
jetty share --subdomain=laravel-sarah
jetty share --subdomain=laravel-mike
Custom Domains
Point your own domain to Jetty tunnels for branded URLs.
Setup Process
- Reserve a subdomain in Jetty dashboard
- Add custom domain in dashboard settings
- Create CNAME record pointing to tunnel
Example:
Reserve subdomain: laravel-prod
Custom domain: dev.mycompany.com
CNAME: dev.mycompany.com → laravel-prod.tunnels.usejetty.online
Laravel Configuration
# Use custom domain in .env
APP_URL=https://dev.mycompany.com
SESSION_DOMAIN=.mycompany.com
SSL Certificates
Jetty automatically provisions Let's Encrypt SSL certificates for custom domains. No manual certificate management required.
Security Considerations
APP_URL Configuration
Always set APP_URL to your tunnel URL to ensure:
- Correct URL generation in emails and queued jobs
- Proper asset URLs
- Accurate redirect URLs
APP_URL=https://your-subdomain.tunnels.usejetty.online
Trusted Proxies
Configure Laravel to trust Jetty's proxy headers:
// app/Http/Middleware/TrustProxies.php
namespace App\Http\Middleware;
use Illuminate\Http\Middleware\TrustProxies as Middleware;
use Illuminate\Http\Request;
class TrustProxies extends Middleware
{
protected $proxies = '*';
protected $headers =
Request::HEADER_X_FORWARDED_FOR |
Request::HEADER_X_FORWARDED_HOST |
Request::HEADER_X_FORWARDED_PORT |
Request::HEADER_X_FORWARDED_PROTO;
}
CSRF Tokens
CSRF protection works normally with tunnels. Ensure:
APP_URLis set correctly- Session cookies are configured properly
- Exclude webhook routes from CSRF if needed
// app/Http/Middleware/VerifyCsrfToken.php
protected $except = [
'webhooks/*',
'stripe/webhook',
];
Session Configuration
For cross-subdomain session sharing:
SESSION_DOMAIN=.tunnels.usejetty.online
SESSION_SECURE_COOKIE=true
SESSION_SAME_SITE=lax
Rate Limiting
Jetty respects Laravel's rate limiting. Configure per-route limits:
Route::middleware('throttle:60,1')->group(function () {
Route::post('/api/webhook', [WebhookController::class, 'handle']);
});
Environment Separation
Never share production credentials through tunnels:
# Don't do this
DB_HOST=production-db.example.com
DB_PASSWORD=production_password
# Use local/development credentials
DB_HOST=localhost
DB_PASSWORD=local_dev_password
CI/CD Integration
Laravel Forge
Use Jetty to test deployments before pushing to Forge:
# Test locally before deploying
jetty share --subdomain=laravel-forge-preview
# Deploy to Forge when ready
forge deploy production
GitHub Actions
Test webhooks in CI pipeline:
# .github/workflows/test.yml
name: Test Laravel
on: [push]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: '8.2'
- name: Install dependencies
run: composer install
- name: Run tests
run: php artisan test
- name: Install Jetty CLI
run: composer global require jetty/client
- name: Share for webhook testing
run: jetty share --subdomain=laravel-ci-${{ github.run_id }}
env:
JETTY_TOKEN: ${{ secrets.JETTY_TOKEN }}
Laravel Vapor
Jetty complements Vapor for local webhook testing before deploying serverless:
# Test webhooks locally with Jetty
jetty share --subdomain=laravel-vapor-local
# Deploy to Vapor when ready
vapor deploy production
Troubleshooting
Issue: "Could not connect to local site"
Symptoms: Jetty CLI reports connection errors to local Laravel app.
Solutions:
# 1. Verify local app is running
curl http://localhost:8000
curl https://my-app.test
# 2. Check Valet/Herd status
valet status
herd status
# 3. Specify site explicitly
jetty share --site=localhost:8000
# 4. Check port availability
lsof -i :80
lsof -i :443
# 5. Restart Valet/Herd
valet restart
herd restart
Issue: Assets not loading (CSS/JS)
Symptoms: Public tunnel shows unstyled Laravel app.
Cause: Vite dev server not running or APP_URL misconfigured.
Solutions:
# Option 1: Use compiled assets
npm run build
rm public/hot # Remove Vite dev server indicator
# Option 2: Ensure Vite dev server is running
npm run dev
# Option 3: Set APP_URL
# .env
APP_URL=https://your-subdomain.tunnels.usejetty.online
# Clear config cache
php artisan config:clear
Issue: CSRF token mismatch
Symptoms: Forms fail with "419 Page Expired" error.
Solutions:
// 1. Trust proxies (app/Http/Middleware/TrustProxies.php)
protected $proxies = '*';
// 2. Set APP_URL
APP_URL=https://your-subdomain.tunnels.usejetty.online
// 3. Clear config cache
php artisan config:clear
// 4. Exclude webhook routes from CSRF
protected $except = ['webhooks/*'];
Issue: "Tunnel unavailable" errors
Symptoms: Public URL shows "tunnel unavailable" intermittently.
Cause: Multiple jetty share processes running for same tunnel (since v0.1.19, prevented by lockfile).
Solutions:
# 1. Check for duplicate processes
ps aux | grep "jetty share"
# 2. Kill duplicate processes
killall jetty
# 3. Restart single process
jetty share --subdomain=your-subdomain
# 4. Use --force to override lockfile (not recommended)
jetty share --subdomain=your-subdomain --force
Issue: Slow request forwarding
Symptoms: Requests through tunnel are significantly slower than direct access.
Solutions:
# 1. Use regional edge for lower latency
export JETTY_REGION=us-west
jetty share
# 2. Check local network
ping usejetty.online
# 3. Verify local app performance
time curl http://localhost:8000
# 4. Check queue workers (slow jobs block requests)
php artisan queue:restart
Issue: OAuth callback fails
Symptoms: OAuth providers redirect to tunnel but callback fails.
Solutions:
# 1. Update OAuth provider callback URL
GITHUB_REDIRECT=https://your-subdomain.tunnels.usejetty.online/auth/callback/github
# 2. Set APP_URL
APP_URL=https://your-subdomain.tunnels.usejetty.online
# 3. Clear config cache
php artisan config:clear
# 4. Verify callback route exists
php artisan route:list | grep callback
Issue: Webhooks not received
Symptoms: External service sends webhooks but Laravel doesn't receive them.
Solutions:
# 1. Verify route exists and is POST
php artisan route:list | grep webhook
# 2. Check Jetty dashboard for incoming requests
# 3. Disable CSRF for webhook route
# app/Http/Middleware/VerifyCsrfToken.php
protected $except = ['webhooks/*'];
# 4. Check webhook URL in external service
# Must be: https://your-subdomain.tunnels.usejetty.online/webhook-path
# 5. Test with curl
curl -X POST https://your-subdomain.tunnels.usejetty.online/webhooks/test \
-H "Content-Type: application/json" \
-d '{"test": true}'
Tips & Tricks
Shell Aliases
Add these to ~/.zshrc or ~/.bashrc for faster workflow:
# Jetty aliases
alias jshare='jetty share'
alias jstatus='jetty status'
alias jstop='jetty stop'
# Laravel + Jetty combined
alias lshare='php artisan config:clear && jetty share'
alias ldev='npm run dev & jetty share --subdomain=dev'
# Quick webhook testing
alias jstripe='jetty share --subdomain=stripe-dev'
alias jgithub='jetty share --subdomain=github-dev'
# Multiple projects
alias jproject1='cd ~/sites/project1 && jetty share --subdomain=project1'
alias jproject2='cd ~/sites/project2 && jetty share --subdomain=project2'
Combining with Artisan Commands
Run commands while tunnel is active (in separate terminals):
# Terminal 1: Share app
jetty share --subdomain=laravel-dev
# Terminal 2: Watch logs
tail -f storage/logs/laravel.log
# Terminal 3: Run queue worker
php artisan queue:work --verbose
# Terminal 4: Monitor Horizon
php artisan horizon
One-Liner Workflow
Start everything in one command:
# Start Vite, queue worker, and Jetty tunnel
npm run dev & php artisan queue:work & jetty share --subdomain=dev
Or use Laravel Foreman/Honcho:
# Procfile
web: php artisan serve
worker: php artisan queue:work
tunnel: jetty share --subdomain=dev
assets: npm run dev
foreman start
Multi-Project Switching
Quickly switch between multiple Laravel projects:
# Create script: ~/bin/jetty-switch
#!/bin/bash
case $1 in
api)
cd ~/sites/laravel-api && jetty share --subdomain=api-dev
;;
web)
cd ~/sites/laravel-web && jetty share --subdomain=web-dev
;;
admin)
cd ~/sites/laravel-admin && jetty share --subdomain=admin-dev
;;
*)
echo "Usage: jetty-switch {api|web|admin}"
;;
esac
chmod +x ~/bin/jetty-switch
jetty-switch api
Testing Multiple Webhooks
Set up multiple webhook endpoints:
// routes/web.php
Route::prefix('webhooks')->group(function () {
Route::post('stripe', [WebhookController::class, 'stripe']);
Route::post('github', [WebhookController::class, 'github']);
Route::post('twilio', [WebhookController::class, 'twilio']);
Route::post('sendgrid', [WebhookController::class, 'sendgrid']);
});
Share once, configure all services:
jetty share --subdomain=laravel-webhooks
# Configure all services to:
# https://laravel-webhooks.tunnels.usejetty.online/webhooks/{service}
Request Logging
Log all tunnel requests for debugging:
// app/Http/Middleware/LogTunnelRequests.php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Log;
class LogTunnelRequests
{
public function handle(Request $request, Closure $next)
{
if ($request->header('X-Forwarded-Host')) {
Log::channel('tunnel')->info('Tunnel request', [
'method' => $request->method(),
'url' => $request->fullUrl(),
'headers' => $request->headers->all(),
'ip' => $request->ip(),
]);
}
return $next($request);
}
}
Tail Laravel Logs While Sharing
# Terminal 1
jetty share --subdomain=dev
# Terminal 2
tail -f storage/logs/laravel.log | grep -i "tunnel\|webhook\|error"
Quick Debug Route
Add a debug route to verify tunnel configuration:
// routes/web.php (only in development!)
if (app()->environment('local')) {
Route::get('/jetty-debug', function () {
return response()->json([
'app_url' => config('app.url'),
'request_url' => request()->url(),
'headers' => request()->headers->all(),
'ip' => request()->ip(),
'forwarded_for' => request()->header('X-Forwarded-For'),
'forwarded_host' => request()->header('X-Forwarded-Host'),
]);
});
}
Visit https://your-subdomain.tunnels.usejetty.online/jetty-debug to see configuration.
VS Code Integration
Create VS Code tasks (.vscode/tasks.json):
{
"version": "2.0.0",
"tasks": [
{
"label": "Jetty: Share",
"type": "shell",
"command": "jetty share --subdomain=dev",
"problemMatcher": []
},
{
"label": "Jetty: Share (random)",
"type": "shell",
"command": "jetty share",
"problemMatcher": []
},
{
"label": "Laravel: Serve + Jetty",
"type": "shell",
"command": "php artisan serve & jetty share --site=localhost:8000",
"problemMatcher": []
}
]
}
Run via Command Palette: Tasks: Run Task → Jetty: Share
Next Steps
- Explore the Dashboard: Monitor requests in real-time at usejetty.online
- Reserve Subdomains: Create stable URLs for long-term webhook endpoints
- Check Documentation: Getting Started Guide
- Join Community: Share tips and get help from other Laravel developers
Send feedback
Found an issue or have a suggestion? Let us know.