CINXE.COM
ngrok - Online in One Line
<!DOCTYPE html> <html class="h-full" lang="en-US" dir="ltr" id="ngrok"> <head> <meta charset="utf-8"> <script nonce="S7AGGig8Wibit2J0U2DIKA"> (function() { const themes = ["system","light","dark","light-high-contrast","dark-high-contrast"]; const isTheme = (value) => typeof value === "string" && themes.includes(value); const fallbackTheme = "system" ?? "system"; let maybeStoredTheme = null; try { maybeStoredTheme = "localStorage" in window ? window.localStorage.getItem("mantle-ui-theme") : null; } catch (_) {} const hasStoredTheme = isTheme(maybeStoredTheme); if (!hasStoredTheme && "localStorage" in window) { try { window.localStorage.setItem("mantle-ui-theme", fallbackTheme); } catch (_) {} } const themePreference = hasStoredTheme ? maybeStoredTheme : fallbackTheme; const prefersDarkMode = window.matchMedia("(prefers-color-scheme: dark)").matches; const prefersHighContrast = window.matchMedia("(prefers-contrast: more)").matches; let initialTheme = themePreference; if (initialTheme === "system") { if (prefersHighContrast) { initialTheme = prefersDarkMode ? "dark-high-contrast" : "light-high-contrast"; } else { initialTheme = prefersDarkMode ? "dark" : "light"; } } const htmlElement = document.documentElement; htmlElement.classList.remove(...themes); htmlElement.classList.add(initialTheme); htmlElement.dataset.appliedTheme = initialTheme; htmlElement.dataset.theme = themePreference; })(); </script> <script nonce="S7AGGig8Wibit2J0U2DIKA" type="text/javascript"> window.semaphore = window.semaphore || []; window.ketch = function () { window.semaphore.push(arguments); }; </script> <script nonce="S7AGGig8Wibit2J0U2DIKA" type="text/javascript" defer async src="https://global.ketchcdn.com/web/v2/config/ngrok/ngrok_ketch_tag/boot.js"></script> <meta name="candu-client-token" content="7YW2WVBXeF" /> <script nonce="S7AGGig8Wibit2J0U2DIKA" type="text/javascript"> (function (params = {}) { if (!params) { params = {}; } const e = document.head.querySelector('meta[name="candu-client-token"]'); if (!e || !("content" in e)) { return; } params.clientToken = e.content; const script = document.createElement("script"); script.setAttribute( "src", "https://cdn.candu.ai/sdk/latest/candu.umd.js?token=" + params.clientToken ); script.onload = function () { window.Candu.init(params); }; document.head.appendChild(script); })({}); </script> <script nonce="S7AGGig8Wibit2J0U2DIKA" type="text/javascript"> (function (w, d, s, l, i) { w[l] = w[l] || []; w[l].push({ "gtm.start": new Date().getTime(), event: "gtm.js" }); var f = d.getElementsByTagName(s)[0], j = d.createElement(s), dl = l != "dataLayer" ? "&l=" + l : ""; j.async = true; j.src = "https://www.googletagmanager.com/gtm.js?id=" + i + dl; var n = d.querySelector("[nonce]"); n && j.setAttribute("nonce", n.nonce || n.getAttribute("nonce")); f.parentNode.insertBefore(j, f); })(window, document, "script", "dataLayer", "GTM-5PHW34Q"); </script> <link rel="preconnect" href="https://cdn.ngrok.com"> <link rel="preload" href="https://cdn.ngrok.com/static/fonts/euclid-square/EuclidSquare-Regular-WebS.woff" as="font" type="font/woff" crossorigin="anonymous" /> <link rel="preload" href="https://cdn.ngrok.com/static/fonts/euclid-square/EuclidSquare-RegularItalic-WebS.woff" as="font" type="font/woff" crossorigin="anonymous" /> <link rel="preload" href="https://cdn.ngrok.com/static/fonts/euclid-square/EuclidSquare-Medium-WebS.woff" as="font" type="font/woff" crossorigin="anonymous" /> <link rel="preload" href="https://cdn.ngrok.com/static/fonts/euclid-square/EuclidSquare-Semibold-WebS.woff" as="font" type="font/woff" crossorigin="anonymous" /> <link rel="preload" href="https://cdn.ngrok.com/static/fonts/euclid-square/EuclidSquare-MediumItalic-WebS.woff" as="font" type="font/woff" crossorigin="anonymous" /> <link rel="preload" href="https://cdn.ngrok.com/static/fonts/ibm-plex-mono/IBMPlexMono-Text.woff" as="font" type="font/woff" crossorigin="anonymous" /> <link rel="preload" href="https://cdn.ngrok.com/static/fonts/ibm-plex-mono/IBMPlexMono-TextItalic.woff" as="font" type="font/woff" crossorigin="anonymous" /> <link rel="preload" href="https://cdn.ngrok.com/static/fonts/ibm-plex-mono/IBMPlexMono-SemiBold.woff" as="font" type="font/woff" crossorigin="anonymous" /> <link rel="preload" href="https://cdn.ngrok.com/static/fonts/ibm-plex-mono/IBMPlexMono-SemiBoldItalic.woff" as="font" type="font/woff" crossorigin="anonymous" /> <title>ngrok - Online in One Line</title> <meta name="author" content="ngrok" /> <meta name="description" content="ngrok is the fastest way to put anything on the internet with a single command." /> <meta name="viewport" content="width=device-width, initial-scale=1" /> <meta name="stripe-public-key" content="pk_live_l5Qs14J7AWRdY9eD4IIYzUWh" /> <link rel="shortcut icon" type="image/x-icon" href="/v0-statics/favicon.ico" /> <link rel="stylesheet" type="text/css" href="/v0-statics/css/vendor.06fab28a53874d75a7bb.css" /> <link rel="stylesheet" type="text/css" href="/v0-statics/css/app_unauth.51ca43ae394b82d5cf36.css" /> <script defer src="/v0-statics/js/vendor.bf12b278824d8aba8c4f.js"></script> <script defer src="/v0-statics/js/rpx.5d8f4e75b4c8a2b0a040.js"></script> <script defer src="/v0-statics/js/app_unauth.7ad0cb7a54d2389004bd.js"></script> <script defer src=""></script> </head> <body class="h-dvh bg-base"> <noscript class="h-screen min-h-screen"> <style> #app { display: none; } </style> <h1 class="flex items-center justify-center fixed inset-0 h-1/3"> To use the ngrok dashboard, please enable JavaScript. </h1> <iframe src="https://www.googletagmanager.com/ns.html?id=GTM-5PHW34Q" height="0" width="0" style="display: none; visibility: hidden" ></iframe> </noscript> <div id="data" data-state="" data-page=""></div> <div id="app" class="h-full isolate"> <div class="flex items-center justify-center fixed inset-0 h-1/3"> <div class="ant-spin ant-spin-lg ant-spin-spinning"> <span class="ant-spin-dot ant-spin-dot-spin"> <i class="ant-spin-dot-item"></i> <i class="ant-spin-dot-item"></i> <i class="ant-spin-dot-item"></i> <i class="ant-spin-dot-item"></i> </span> </div> </div> </div> </body> </html>