Skip to content

How-To: Share a Vox App

vox share exposes a running Vox app on a public URL in one command. It defaults to Cloudflare Quick Tunnels and automatically falls back to localhost.run if Cloudflare is unavailable.

Terminal window
vox share app.vox # builds + shares (Cloudflare default)
vox share app.vox --dev # shares the live dev server (faster iteration)
vox share --port 7860 # shares an already-running app on port 7860

On first run, vox share displays a one-time Terms of Service prompt. Pass --accept-tos to skip it in CI or non-interactive environments.

BackendFlagURL stabilitySSE support
Cloudflare Quick Tunnel (default)--backend cloudflarePer-sessionLimited (200 concurrent)
localhost.run--backend localhost-runPer-sessionYes
Tailscale Funnel--backend tailscaleStable (*.ts.net)Yes
LAN only--backend lanStable (LAN IP)Yes

vox share selects the backend automatically based on availability. You can force a specific backend with the --backend flag.

By default, the shared URL includes an embedded token (?vox_share_token=...). Anyone with the link can access the app; without the token, requests return a 401.

  • --auth none — disable auth (public, no token required)
  • --auth basic:user:pass — HTTP Basic auth

The session auto-shuts down after 8 hours by default.

  • --duration 30m — shut down after 30 minutes
  • --duration none — run indefinitely

Press Ctrl-C at any time to stop the session immediately.

If your app uses Server-Sent Events (SSE, e.g., streaming LLM responses), vox share automatically switches to localhost.run when Cloudflare is selected, because Cloudflare Quick Tunnels buffer SSE connections. Use --allow-buffered-streaming to keep Cloudflare if buffering is acceptable for your use case.

  • Corporate network blocks *.trycloudflare.com — try --backend tailscale or --backend localhost-run
  • Port already in use — pass --port <other-port> to the app and match it in vox share --port <other-port>
  • CI / non-interactive — pass --accept-tos to skip the first-run consent prompt
  • Tailscale not installed — the Tailscale backend requires tailscale on $PATH and an active Tailscale session

Shared URLs are accessible to anyone who has the link. For demos with sensitive data, use --auth basic:user:pass, or use --auth none and share the link only over a trusted channel. The shared session terminates automatically after the configured duration.

See share-policy-2026 for ToS references, abuse contacts, and privacy details.