ClawKit Logo
ClawKitReliability Toolkit
Back to Registry
Official Verified

share-local-site

Share a local development server with anyone via a public URL. Use when you need to demo a site to a client, let a colleague preview your work, test on mobile, or share localhost over the internet. Supports ngrok (recommended), localhost.run (zero-install), and cloudflared. Handles common issues like Vue CLI Invalid Host Header automatically.

skill-install — Terminal

Install via CLI (Recommended)

clawhub install openclaw/skills/skills/darwin7381/share-local-site
Or

Share Local Site

Expose a local development server to the internet so anyone can access it via a public URL. No deployment needed.

When to use

  • Demo a work-in-progress site to a client or colleague
  • Test a local site on a mobile device
  • Share localhost for pair programming or review
  • Quick external access without deploying

Methods comparison

MethodSignupInstallStabilityBest for
localhost.runNoNo⭐⭐Quickest start. Zero setup, perfect for first-time use
ngrokYesYes⭐⭐⭐⭐Most stable. Dashboard, multi-tunnel, longer sessions
cloudflaredNoYes⭐⭐⭐Already installed; quick tunnels

Quick start

localhost.run (zero-install, fastest to start)

Nothing to install, nothing to sign up for. Just run:

ssh -o StrictHostKeyChecking=no -R 80:localhost:3000 [email protected]

Look for the URL in the output (e.g. https://xxxxx.lhr.life). Share it immediately.

ngrok (most stable, recommended for longer sessions)

# First time only
brew install ngrok        # or: npm i -g ngrok, or download from ngrok.com
ngrok config add-authtoken YOUR_TOKEN   # get token from dashboard.ngrok.com

# Start tunnel
ngrok http 3000           # replace 3000 with your port

Get the public URL:

curl -s http://127.0.0.1:4040/api/tunnels | jq -r '.tunnels[0].public_url'

Web dashboard: http://127.0.0.1:4040

cloudflared

brew install cloudflared   # first time only
cloudflared tunnel --url http://localhost:3000

Pre-send checklist

Before sharing any tunnel URL, always verify:

  1. Confirm the tunnel points to the correct port:

    curl -s http://localhost:4040/api/tunnels | python3 -c "
    import sys,json; d=json.load(sys.stdin)
    for t in d['tunnels']:
        print(t['config']['addr'], t['public_url'])"
    
  2. Verify the page loads correctly:

    curl -sI <TUNNEL_URL>                        # check HTTP 200
    curl -s <TUNNEL_URL> | grep -i '<title>'     # confirm correct site
    

    Watch for: Invalid Host header, wrong project, blank page, 502.

  3. Only send the URL after both checks pass.

Multiple tunnels (ngrok)

ngrok free tier supports up to 3 simultaneous tunnels. Run each in a separate terminal or tmux session:

# Terminal 1: frontend on port 5173
ngrok http 5173

# Terminal 2: backend on port 3001
ngrok http 3001

List all active tunnels:

curl -s http://localhost:4040/api/tunnels | python3 -c "
import sys,json; d=json.load(sys.stdin)
for t in d['tunnels']:
    print(f\"{t['name']:20s} {t['config']['addr']:30s} {t['public_url']}\")"

Framework-specific fixes

Vue CLI: "Invalid Host header"

Vue CLI's webpack-dev-server blocks non-localhost hosts by default.

Vue CLI 2/3 (webpack-dev-server v3):

// vue.config.js
module.exports = {
  devServer: { disableHostCheck: true }
}

Metadata

Stars3376
Views1
Updated2026-03-24
View Author Profile
AI Skill Finder

Not sure this is the right skill?

Describe what you want to build — we'll match you to the best skill from 16,000+ options.

Find the right skill
Add to Configuration

Paste this into your clawhub.json to enable this plugin.

{
  "plugins": {
    "official-darwin7381-share-local-site": {
      "enabled": true,
      "auto_update": true
    }
  }
}
Safety NoteClawKit audits metadata but not runtime behavior. Use with caution.