Troubleshooting
Common issues and how to resolve them. Click a problem to expand the solution.
Connection issues
”Connection refused”
Cause: Local service is not running or listening on the wrong port.
Solution:
- Verify your service is running:
curl http://localhost:8080 - Check the port matches your
--serviceflag - Check firewall rules aren’t blocking localhost
WebSocket connection fails
Cause: Network connectivity issue or relay server is down.
Solution:
- Check your internet connection
- Check hle.world is reachable from your browser
- Check firewall allows outbound WebSocket (WSS) connections on port 443
Authentication issues
”Invalid API key” (WS close code 4001)
Cause: API key is missing, invalid, or inactive.
Solution:
- Verify key exists in dashboard: hle.world/dashboard/keys
- Copy the raw key from dashboard (shown only once at creation)
- Pass it with
--api-keyflag or save to~/.config/hle/config.toml - Check key is active (not deleted or disabled)
“Tunnel limit exceeded” (WS close code 4003)
Cause: You’ve reached the tunnel limit for your API key.
Solution:
- Check dashboard for active tunnels
- Delete unused tunnels (by disconnecting the client)
- Or delete the old API key and create a new one with higher
max_tunnels
Dashboard login fails
Cause: Wrong email/password, rate limit, or SSO misconfiguration.
Solution:
- Double-check email and password
- If you see rate limit error, wait 5 minutes before retrying
- Try SSO (GitHub or Google) instead of email/password
- Clear browser cookies and try again
Access and routing issues
”502 Bad Gateway”
Cause: No tunnel client is connected for this subdomain.
Solution:
- Check client is running:
hle expose --service http://localhost:8080 - Verify client API key is correct and active
- Check client is connecting to the right relay server
- Check client logs for errors
”404 Not Found” or “Cannot GET /”
Cause: Your local service is returning 404.
Solution:
- Test local service directly:
curl http://localhost:8080/ - Verify your service is running and responding
- Check the path you’re accessing (your service may require a prefix like
/api)
WebSocket doesn’t work through tunnel
Cause: WebSocket proxying is disabled or your service doesn’t support WebSocket.
Solution:
- Verify you’re using
--websocketflag (default enabled) - Check your service supports WebSocket on the same port as HTTP
- Test WebSocket locally: Many dev tools have WebSocket inspectors
Localhost development
Wildcard DNS doesn’t work on localhost
Cause: Localhost doesn’t have wildcard DNS configured.
Solution: Use the query parameter fallback:
http://localhost:8000/?_hle_subdomain=myapp-x7kPerformance and stability
High latency or slow responses
Cause: Network congestion, distant relay server, or slow local service.
Solution:
- Check your internet connection bandwidth
- Check latency to hle.world from your location
- Profile your local service to ensure it’s responsive
Client disconnects frequently
Cause: Network instability or firewall timeout.
Solution:
- Check your network connection
- Check firewall isn’t closing idle WebSocket connections
- Enable debug logging:
hle expose ... --debug - Check server logs for errors
Getting help
- Documentation: hle.world/docs
- GitHub Issues: github.com/hle-world/hle-client/issues
- Debug logging: Run client with
--debugand share logs