Skip to content

Errors

Errors have stable codes. The CLI prints them with a link here; pages generated by the edge carry the code in a menfez-error response header, so scripts can tell them apart from your service’s own responses:

Terminal window
curl -sI https://nothing-here.menfez.cloud | grep -i menfez-error
# menfez-error: tunnel_not_found

tunnel_not_found · HTTP 404

No tunnel is open at this hostname. The tunnel was stopped, its reconnect window ran out, or the URL is mistyped. Start the tunnel again; random names change between runs, use --subdomain for a stable one.

tunnel_reconnecting · HTTP 503 · Retry-After: 5

The CLI behind this hostname lost its connection. The edge holds the hostname for 30 seconds while the CLI reconnects. If this persists, check that menfez is still running and online.

local_unreachable · HTTP 503

The tunnel is up, but the CLI could not connect to the local service, or the service closed the connection without answering. Check that your app is running on the address shown next to the URL; the CLI prints cannot reach <addr> with the reason.

rate_limited · HTTP 429

The tunnel is getting more traffic than its limits allow. Retry later.

tunnel_blocked · HTTP 410

The tunnel was disabled for violating the terms of service. The CLI exits instead of reconnecting. Contact abuse@menfez.dev if you think this is a mistake.

internal · HTTP 500

Something went wrong inside menfez. Retrying usually helps.

unauthorized

The token was rejected. Run menfez login <TOKEN> with a valid token, or check MENFEZ_TOKEN and --token, which override the config file.

unsupported_version

This version of the CLI speaks a protocol the server no longer accepts. Install the latest version.

bad_request

The server did not understand what the CLI sent. Update the CLI; if it persists, report a bug.

unsupported_tunnel_kind

The tunnel kind is not available yet. Only http tunnels are supported today.

tunnel_limit

Too many tunnels in one connection (10). Split them across several menfez processes or close some.

subdomain_invalid

Subdomains must be 3 to 63 characters of lowercase letters, digits and hyphens, must not start or end with a hyphen and must not contain two hyphens in a row.

subdomain_reserved

The name is reserved (www, api, admin, status, mail and similar). Pick another one.

subdomain_taken

Someone else is using this subdomain right now. Pick another one, or stop the other tunnel. After a disconnect your own subdomain stays reserved for you for 30 seconds.

subdomain_not_allowed

Your account cannot choose subdomains. Leave out --subdomain to get a random name.