Open service 35.92.202.169:443 · dswan1.retool.com
2026-01-26 15:27
HTTP/1.1 200 OK
Date: Mon, 26 Jan 2026 15:27:32 GMT
Content-Type: text/html
Content-Length: 7064
Connection: close
Vary: Accept-Encoding
Last-Modified: Thu, 22 Jan 2026 21:11:00 GMT
ETag: "69729264-1b98"
Cache-control: max-age=0, stale-while-revalidate=86400
X-Content-Type-Options: nosniff
Referrer-Policy: no-referrer-when-downgrade
Cross-Origin-Opener-Policy: same-origin-allow-popups
X-Robots-Tag: noindex
Accept-Ranges: bytes
Strict-Transport-Security: max-age=31536000; includeSubDomains
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="referrer" content="origin" />
<meta name="theme-color" content="#fff" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link id="pwa-manifest-placeholder" rel="manifest" href="" />
<script>
window.RETOOL_FRONTEND_FAKE_BACKEND_MODE = false;
// #PageVisibility
// Here we detect if user has suspended the browser page / tab since loading
// See https://developer.mozilla.org/en-US/docs/Web/API/Page_Visibility_API
window.RETOOL_PAGE_SUSPEND_DETECTED = document.visibilityState === 'hidden'
function _detectVisibilityChange() {
if (document.visibilityState === 'hidden') {
window.RETOOL_PAGE_SUSPEND_DETECTED = true
// Remove listener because we only detect it once
document.removeEventListener('visibilitychange', _detectVisibilityChange)
}
}
// Only listen for change if page is not already hidden
if (document.visibilityState === 'visible') {
document.addEventListener('visibilitychange', _detectVisibilityChange)
}
</script>
<script>
// https://stackoverflow.com/a/24103596
function _getCookie(name) {
var nameEq = (name += '=')
var ca = document.cookie.split(';')
for (var i = 0; i < ca.length; i++) {
var c = ca[i]
while (c.charAt(0) === ' ') c = c.substring(1, c.length)
if (c.indexOf(nameEq) === 0) return c.substring(nameEq.length, c.length)
}
}
// Here we do an eager fetch of user data as a performance optimization. By doing the
// fetch here, in an inline script, we can fire it asap while the initial webpack
// bundle loads and evals. This is strictly for performance optimization and non-essential,
// if this fails to run or has errors then the normal application flow will handle the
// fetch for user data.
if (
!RETOOL_FRONTEND_FAKE_BACKEND_MODE &&
_getCookie('xsrfToken') && // presence of xsrf token means user is already authed
window.fetch !== undefined && // make sure fetch api is available
!new URL(location.origin).host.startsWith('login.') // avoid special login domain
) {
window.RETOOL_USER_FETCH = fetch('/api/user', {
credentials: 'same-origin',
headers: {
Accept: 'application/json',
'Content-Type': 'application/json',
'Relax-Login-Subdomain-Restrictions': false,
'X-Xsrf-Token': _getCookie('xsrfToken'),
'X-Retool-Client-Version': '3.329.0-2ac04be (Build 298436)',
},
}).then((r) => {
if (r.ok) {
return r.json()
}
return
})
}
</script>
<script>
function parseAsBool(envValue, defaultValue) {
if (envValue === 'true') {
return true
} else if (envValue === 'false') {
return false
} else {
return defaultValue
}
}
// Webpack uses slightly unconventional EJS templating which is why we need to duplicate this
// snippet. ViteJS does it the "right way" and will be the what we keep once migration to
// Vite is done, so lets just keep this duplicated for now.
SANDBOX_DOMAIN = "https://retool-edge.com"
ALLOW_SAME_ORIGIN_OPTION = parseAsBool("true", false)
MAIN_DOMAIN = "retool.com"
SAML_ENABLED = parseAsBool("false", false)
CLIENT_ID = "716367306867-d861tjqj92gjb0uphcjt8gu2nvtf6e9t.apps.googleusercontent.com"
RESTRICTED_DOMAIN = ""
DISABLE_USER_PASS_LOGIN = parseAsBool("false", false)
INCLUDE_COOKIES_IN_API_CALLS = ""
VERSION_CONTROL_LOCKED = parseAsBool("false", false)
IS_ADMIN = parseAsBool("false", false)
WEBPACK_SHARED_BUILD_VERSION = "298436_2ac04be"
STATSD_HOST = "__STATSD_HOST__"
RETOOL_APP_VARIANT = 'vite'
const retoolVersionForServiceWorker = '3.329.0-2ac04be (Build
Open service 35.92.202.169:80 · dswan1.retool.com
2026-01-26 15:27
HTTP/1.1 308 Permanent Redirect Date: Mon, 26 Jan 2026 15:27:31 GMT Content-Type: text/html Content-Length: 164 Connection: close Location: https://dswan1.retool.com Page title: 308 Permanent Redirect <html> <head><title>308 Permanent Redirect</title></head> <body> <center><h1>308 Permanent Redirect</h1></center> <hr><center>nginx</center> </body> </html>
Open service 35.92.202.168:80 · dswan1.retool.com
2026-01-26 15:27
HTTP/1.1 308 Permanent Redirect Date: Mon, 26 Jan 2026 15:27:32 GMT Content-Type: text/html Content-Length: 164 Connection: close Location: https://dswan1.retool.com Page title: 308 Permanent Redirect <html> <head><title>308 Permanent Redirect</title></head> <body> <center><h1>308 Permanent Redirect</h1></center> <hr><center>nginx</center> </body> </html>
Open service 35.92.202.170:443 · dswan1.retool.com
2026-01-26 15:27
HTTP/1.1 200 OK
Date: Mon, 26 Jan 2026 15:27:32 GMT
Content-Type: text/html
Content-Length: 7064
Connection: close
Vary: Accept-Encoding
Last-Modified: Thu, 22 Jan 2026 21:11:00 GMT
ETag: "69729264-1b98"
Cache-control: max-age=0, stale-while-revalidate=86400
X-Content-Type-Options: nosniff
Referrer-Policy: no-referrer-when-downgrade
Cross-Origin-Opener-Policy: same-origin-allow-popups
X-Robots-Tag: noindex
Accept-Ranges: bytes
Strict-Transport-Security: max-age=31536000; includeSubDomains
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="referrer" content="origin" />
<meta name="theme-color" content="#fff" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link id="pwa-manifest-placeholder" rel="manifest" href="" />
<script>
window.RETOOL_FRONTEND_FAKE_BACKEND_MODE = false;
// #PageVisibility
// Here we detect if user has suspended the browser page / tab since loading
// See https://developer.mozilla.org/en-US/docs/Web/API/Page_Visibility_API
window.RETOOL_PAGE_SUSPEND_DETECTED = document.visibilityState === 'hidden'
function _detectVisibilityChange() {
if (document.visibilityState === 'hidden') {
window.RETOOL_PAGE_SUSPEND_DETECTED = true
// Remove listener because we only detect it once
document.removeEventListener('visibilitychange', _detectVisibilityChange)
}
}
// Only listen for change if page is not already hidden
if (document.visibilityState === 'visible') {
document.addEventListener('visibilitychange', _detectVisibilityChange)
}
</script>
<script>
// https://stackoverflow.com/a/24103596
function _getCookie(name) {
var nameEq = (name += '=')
var ca = document.cookie.split(';')
for (var i = 0; i < ca.length; i++) {
var c = ca[i]
while (c.charAt(0) === ' ') c = c.substring(1, c.length)
if (c.indexOf(nameEq) === 0) return c.substring(nameEq.length, c.length)
}
}
// Here we do an eager fetch of user data as a performance optimization. By doing the
// fetch here, in an inline script, we can fire it asap while the initial webpack
// bundle loads and evals. This is strictly for performance optimization and non-essential,
// if this fails to run or has errors then the normal application flow will handle the
// fetch for user data.
if (
!RETOOL_FRONTEND_FAKE_BACKEND_MODE &&
_getCookie('xsrfToken') && // presence of xsrf token means user is already authed
window.fetch !== undefined && // make sure fetch api is available
!new URL(location.origin).host.startsWith('login.') // avoid special login domain
) {
window.RETOOL_USER_FETCH = fetch('/api/user', {
credentials: 'same-origin',
headers: {
Accept: 'application/json',
'Content-Type': 'application/json',
'Relax-Login-Subdomain-Restrictions': false,
'X-Xsrf-Token': _getCookie('xsrfToken'),
'X-Retool-Client-Version': '3.329.0-2ac04be (Build 298436)',
},
}).then((r) => {
if (r.ok) {
return r.json()
}
return
})
}
</script>
<script>
function parseAsBool(envValue, defaultValue) {
if (envValue === 'true') {
return true
} else if (envValue === 'false') {
return false
} else {
return defaultValue
}
}
// Webpack uses slightly unconventional EJS templating which is why we need to duplicate this
// snippet. ViteJS does it the "right way" and will be the what we keep once migration to
// Vite is done, so lets just keep this duplicated for now.
SANDBOX_DOMAIN = "https://retool-edge.com"
ALLOW_SAME_ORIGIN_OPTION = parseAsBool("true", false)
MAIN_DOMAIN = "retool.com"
SAML_ENABLED = parseAsBool("false", false)
CLIENT_ID = "716367306867-d861tjqj92gjb0uphcjt8gu2nvtf6e9t.apps.googleusercontent.com"
RESTRICTED_DOMAIN = ""
DISABLE_USER_PASS_LOGIN = parseAsBool("false", false)
INCLUDE_COOKIES_IN_API_CALLS = ""
VERSION_CONTROL_LOCKED = parseAsBool("false", false)
IS_ADMIN = parseAsBool("false", false)
WEBPACK_SHARED_BUILD_VERSION = "298436_2ac04be"
STATSD_HOST = "__STATSD_HOST__"
RETOOL_APP_VARIANT = 'vite'
const retoolVersionForServiceWorker = '3.329.0-2ac04be (Build
Open service 35.92.202.170:80 · dswan1.retool.com
2026-01-26 15:27
HTTP/1.1 308 Permanent Redirect Date: Mon, 26 Jan 2026 15:27:31 GMT Content-Type: text/html Content-Length: 164 Connection: close Location: https://dswan1.retool.com Page title: 308 Permanent Redirect <html> <head><title>308 Permanent Redirect</title></head> <body> <center><h1>308 Permanent Redirect</h1></center> <hr><center>nginx</center> </body> </html>