AmazonS3
tcp/443
CloudFront
tcp/80
Open service 2600:9000:26db:c200:1:eba8:2dc0:93a1:443 · kline.siya.com
2026-01-12 08:48
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 88159
Connection: close
Date: Mon, 12 Jan 2026 08:48:12 GMT
Last-Modified: Fri, 09 Jan 2026 14:23:01 GMT
x-amz-version-id: null
ETag: "40f5f050437d6c3346c31ff8bbbfc356"
Server: AmazonS3
X-Cache: Miss from cloudfront
Via: 1.1 f620f5422d3678dbdbb8544d75a30f78.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: MUC50-P3
X-Amz-Cf-Id: Gn4w4qISXWJSMN1zc-H6aB8yDax0UcgcDt7GtcMdmjVJvlL9F5rKDg==
Page title: SIYA
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>SIYA</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
<link rel="stylesheet" href="./styles.css">
<link rel="stylesheet" href="./mobile.css">
<link rel="stylesheet" href="./index.css">
<link rel="stylesheet" href="./css/mcp-loader.css">
<link rel="stylesheet" href="./css/agent-selector.css">
<link rel="stylesheet" href="./css/power-toggle.css">
<link rel="stylesheet" href="./css/model-selector.css">
<link rel="stylesheet" href="./css/profile-dropdown.css">
<link rel="stylesheet" href="./css/settings-menu.css">
<link rel="stylesheet" href="./css/history-sidebar.css">
<link rel="stylesheet" href="./css/dropdown-menu.css">
<link rel="stylesheet" href="./css/file-viewer.css">
<link rel="stylesheet" href="./css/scroll-buttons.css">
<link rel="stylesheet" href="./css/automations-modal.css">
<link rel="stylesheet" href="./css/voice-recording.css">
<link rel="stylesheet" href="./css/session-prompt.css">
<link rel="stylesheet" href="./css/landing.css">
<link rel="icon" href="assets/siya-icon.png" type="image/png" />
<!-- Initial Loader Styles - Must load immediately -->
<style id="initial-loader-animation">
@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}
#initial-health-loader {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: white;
display: flex;
justify-content: center;
align-items: center;
z-index: 99998;
}
#initial-health-loader .spinner {
width: 40px;
height: 40px;
border: 3px solid #e3f2fd;
border-top: 3px solid #2196F3;
border-radius: 50%;
animation: spin 0.8s linear infinite;
}
body.loading {
display: none !important;
}
</style>
<!-- Early Authentication Check - Must be first to prevent unauthorized access -->
<script>
// Immediate authentication check before any page rendering
(function() {
// Check if user is logged in
const isLoggedIn = localStorage.getItem('isLoggedIn');
if (!isLoggedIn || isLoggedIn !== 'true') {
// Not logged in - redirect to login
window.location.replace('login.html');
}
// Check hasVmAccess to determine which view to show
const userInfo = localStorage.getItem('userInfo');
let hasVmAccess = true; // Default to true
if (userInfo) {
try {
const parsedInfo = JSON.parse(userInfo);
hasVmAccess = parsedInfo?.hasVmAccess ?? true;
} catch (e) {
console.error('Error parsing userInfo:', e);
}
}
// Store hasVmAccess for use after page loads
window.__hasVmAccess = hasVmAccess;
})();
</script>
<script src="./js/dynamic-favicon.js"></script>
<script src="./js/tab-visibility.js"></script>
<!-- Add showdown library -->
<script src="https://cdn.jsdelivr.net/npm/showdown/dist/showdown.min.js"></script>
<!-- Add DOMPurify for XSS protection -->
<script src="https://cdn.jsdelivr.net/npm/dompurify@3.0.8/dist/purify.min.js"></script>
<!-- Add Monaco Editor -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.44.0/min/vs/loader.min.js"></script>
<!-- Add PostEventSource library -->
<script src="./stream-post-client.js"></script>
<!-- Add domain config FIRST - must load before all other scripts -->
<script src
Open service 2600:9000:26db:2000:1:eba8:2dc0:93a1:80 · kline.siya.com
2026-01-12 08:48
HTTP/1.1 301 Moved Permanently Server: CloudFront Date: Mon, 12 Jan 2026 08:48:10 GMT Content-Type: text/html Content-Length: 167 Connection: close Location: https://kline.siya.com/ X-Cache: Redirect from cloudfront Via: 1.1 94313a5530517e71f4769858ce013d58.cloudfront.net (CloudFront) X-Amz-Cf-Pop: MUC50-P3 X-Amz-Cf-Id: WCt4B9Vrb7VgfYGmb2gusvxe2I-ZFByHZ97uEQ9S9dH1-p0NrDH-GQ== Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body> <center><h1>301 Moved Permanently</h1></center> <hr><center>CloudFront</center> </body> </html>
Open service 2600:9000:26db:2000:1:eba8:2dc0:93a1:443 · kline.siya.com
2026-01-12 08:48
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 88159
Connection: close
Date: Mon, 12 Jan 2026 08:48:12 GMT
Last-Modified: Fri, 09 Jan 2026 14:23:01 GMT
x-amz-version-id: null
ETag: "40f5f050437d6c3346c31ff8bbbfc356"
Server: AmazonS3
X-Cache: Miss from cloudfront
Via: 1.1 918459d66ab0cca4258acacb6d3f6edc.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: MUC50-P3
X-Amz-Cf-Id: yhNEnF7qAYvtrCis04lnZaLeM0D5NeYdVxigaTHdOwCuSPAr2KzNlg==
Page title: SIYA
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>SIYA</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
<link rel="stylesheet" href="./styles.css">
<link rel="stylesheet" href="./mobile.css">
<link rel="stylesheet" href="./index.css">
<link rel="stylesheet" href="./css/mcp-loader.css">
<link rel="stylesheet" href="./css/agent-selector.css">
<link rel="stylesheet" href="./css/power-toggle.css">
<link rel="stylesheet" href="./css/model-selector.css">
<link rel="stylesheet" href="./css/profile-dropdown.css">
<link rel="stylesheet" href="./css/settings-menu.css">
<link rel="stylesheet" href="./css/history-sidebar.css">
<link rel="stylesheet" href="./css/dropdown-menu.css">
<link rel="stylesheet" href="./css/file-viewer.css">
<link rel="stylesheet" href="./css/scroll-buttons.css">
<link rel="stylesheet" href="./css/automations-modal.css">
<link rel="stylesheet" href="./css/voice-recording.css">
<link rel="stylesheet" href="./css/session-prompt.css">
<link rel="stylesheet" href="./css/landing.css">
<link rel="icon" href="assets/siya-icon.png" type="image/png" />
<!-- Initial Loader Styles - Must load immediately -->
<style id="initial-loader-animation">
@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}
#initial-health-loader {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: white;
display: flex;
justify-content: center;
align-items: center;
z-index: 99998;
}
#initial-health-loader .spinner {
width: 40px;
height: 40px;
border: 3px solid #e3f2fd;
border-top: 3px solid #2196F3;
border-radius: 50%;
animation: spin 0.8s linear infinite;
}
body.loading {
display: none !important;
}
</style>
<!-- Early Authentication Check - Must be first to prevent unauthorized access -->
<script>
// Immediate authentication check before any page rendering
(function() {
// Check if user is logged in
const isLoggedIn = localStorage.getItem('isLoggedIn');
if (!isLoggedIn || isLoggedIn !== 'true') {
// Not logged in - redirect to login
window.location.replace('login.html');
}
// Check hasVmAccess to determine which view to show
const userInfo = localStorage.getItem('userInfo');
let hasVmAccess = true; // Default to true
if (userInfo) {
try {
const parsedInfo = JSON.parse(userInfo);
hasVmAccess = parsedInfo?.hasVmAccess ?? true;
} catch (e) {
console.error('Error parsing userInfo:', e);
}
}
// Store hasVmAccess for use after page loads
window.__hasVmAccess = hasVmAccess;
})();
</script>
<script src="./js/dynamic-favicon.js"></script>
<script src="./js/tab-visibility.js"></script>
<!-- Add showdown library -->
<script src="https://cdn.jsdelivr.net/npm/showdown/dist/showdown.min.js"></script>
<!-- Add DOMPurify for XSS protection -->
<script src="https://cdn.jsdelivr.net/npm/dompurify@3.0.8/dist/purify.min.js"></script>
<!-- Add Monaco Editor -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.44.0/min/vs/loader.min.js"></script>
<!-- Add PostEventSource library -->
<script src="./stream-post-client.js"></script>
<!-- Add domain config FIRST - must load before all other scripts -->
<script src
Open service 2600:9000:26db:3000:1:eba8:2dc0:93a1:80 · kline.siya.com
2026-01-12 08:48
HTTP/1.1 301 Moved Permanently Server: CloudFront Date: Mon, 12 Jan 2026 08:48:11 GMT Content-Type: text/html Content-Length: 167 Connection: close Location: https://kline.siya.com/ X-Cache: Redirect from cloudfront Via: 1.1 2d22bd8fe92380401bbc1d8cc010e5a0.cloudfront.net (CloudFront) X-Amz-Cf-Pop: MUC50-P3 X-Amz-Cf-Id: oePuM-75n0VgZrBVwN2-CmJZuxGi8cidl78skMEviak0GF7pxHwnQA== Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body> <center><h1>301 Moved Permanently</h1></center> <hr><center>CloudFront</center> </body> </html>
Open service 18.173.154.55:443 · kline.siya.com
2026-01-12 08:48
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 88159
Connection: close
Date: Mon, 12 Jan 2026 08:48:12 GMT
Last-Modified: Fri, 09 Jan 2026 14:23:01 GMT
x-amz-version-id: null
ETag: "40f5f050437d6c3346c31ff8bbbfc356"
Server: AmazonS3
X-Cache: Miss from cloudfront
Via: 1.1 19392de11dadb918bd6f24e199ea180e.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: MUC50-P3
X-Amz-Cf-Id: i1Kn7za0pdCPiT8Ifh_O2-lz3VloT89TRUrgMMohHCpsQlOn7jAGSg==
Page title: SIYA
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>SIYA</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
<link rel="stylesheet" href="./styles.css">
<link rel="stylesheet" href="./mobile.css">
<link rel="stylesheet" href="./index.css">
<link rel="stylesheet" href="./css/mcp-loader.css">
<link rel="stylesheet" href="./css/agent-selector.css">
<link rel="stylesheet" href="./css/power-toggle.css">
<link rel="stylesheet" href="./css/model-selector.css">
<link rel="stylesheet" href="./css/profile-dropdown.css">
<link rel="stylesheet" href="./css/settings-menu.css">
<link rel="stylesheet" href="./css/history-sidebar.css">
<link rel="stylesheet" href="./css/dropdown-menu.css">
<link rel="stylesheet" href="./css/file-viewer.css">
<link rel="stylesheet" href="./css/scroll-buttons.css">
<link rel="stylesheet" href="./css/automations-modal.css">
<link rel="stylesheet" href="./css/voice-recording.css">
<link rel="stylesheet" href="./css/session-prompt.css">
<link rel="stylesheet" href="./css/landing.css">
<link rel="icon" href="assets/siya-icon.png" type="image/png" />
<!-- Initial Loader Styles - Must load immediately -->
<style id="initial-loader-animation">
@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}
#initial-health-loader {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: white;
display: flex;
justify-content: center;
align-items: center;
z-index: 99998;
}
#initial-health-loader .spinner {
width: 40px;
height: 40px;
border: 3px solid #e3f2fd;
border-top: 3px solid #2196F3;
border-radius: 50%;
animation: spin 0.8s linear infinite;
}
body.loading {
display: none !important;
}
</style>
<!-- Early Authentication Check - Must be first to prevent unauthorized access -->
<script>
// Immediate authentication check before any page rendering
(function() {
// Check if user is logged in
const isLoggedIn = localStorage.getItem('isLoggedIn');
if (!isLoggedIn || isLoggedIn !== 'true') {
// Not logged in - redirect to login
window.location.replace('login.html');
}
// Check hasVmAccess to determine which view to show
const userInfo = localStorage.getItem('userInfo');
let hasVmAccess = true; // Default to true
if (userInfo) {
try {
const parsedInfo = JSON.parse(userInfo);
hasVmAccess = parsedInfo?.hasVmAccess ?? true;
} catch (e) {
console.error('Error parsing userInfo:', e);
}
}
// Store hasVmAccess for use after page loads
window.__hasVmAccess = hasVmAccess;
})();
</script>
<script src="./js/dynamic-favicon.js"></script>
<script src="./js/tab-visibility.js"></script>
<!-- Add showdown library -->
<script src="https://cdn.jsdelivr.net/npm/showdown/dist/showdown.min.js"></script>
<!-- Add DOMPurify for XSS protection -->
<script src="https://cdn.jsdelivr.net/npm/dompurify@3.0.8/dist/purify.min.js"></script>
<!-- Add Monaco Editor -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.44.0/min/vs/loader.min.js"></script>
<!-- Add PostEventSource library -->
<script src="./stream-post-client.js"></script>
<!-- Add domain config FIRST - must load before all other scripts -->
<script src
Open service 18.173.154.10:443 · kline.siya.com
2026-01-12 08:48
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 88159
Connection: close
Date: Mon, 12 Jan 2026 08:48:11 GMT
Last-Modified: Fri, 09 Jan 2026 14:23:01 GMT
x-amz-version-id: null
ETag: "40f5f050437d6c3346c31ff8bbbfc356"
Server: AmazonS3
X-Cache: Miss from cloudfront
Via: 1.1 66e1af4a9e82225c770ca97b3baaf86e.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: MUC50-P3
X-Amz-Cf-Id: nC79NM3SpcB5PcRerANxRy31mj4317-FuOv0fbnO52_E0PAWAZxufw==
Page title: SIYA
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>SIYA</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
<link rel="stylesheet" href="./styles.css">
<link rel="stylesheet" href="./mobile.css">
<link rel="stylesheet" href="./index.css">
<link rel="stylesheet" href="./css/mcp-loader.css">
<link rel="stylesheet" href="./css/agent-selector.css">
<link rel="stylesheet" href="./css/power-toggle.css">
<link rel="stylesheet" href="./css/model-selector.css">
<link rel="stylesheet" href="./css/profile-dropdown.css">
<link rel="stylesheet" href="./css/settings-menu.css">
<link rel="stylesheet" href="./css/history-sidebar.css">
<link rel="stylesheet" href="./css/dropdown-menu.css">
<link rel="stylesheet" href="./css/file-viewer.css">
<link rel="stylesheet" href="./css/scroll-buttons.css">
<link rel="stylesheet" href="./css/automations-modal.css">
<link rel="stylesheet" href="./css/voice-recording.css">
<link rel="stylesheet" href="./css/session-prompt.css">
<link rel="stylesheet" href="./css/landing.css">
<link rel="icon" href="assets/siya-icon.png" type="image/png" />
<!-- Initial Loader Styles - Must load immediately -->
<style id="initial-loader-animation">
@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}
#initial-health-loader {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: white;
display: flex;
justify-content: center;
align-items: center;
z-index: 99998;
}
#initial-health-loader .spinner {
width: 40px;
height: 40px;
border: 3px solid #e3f2fd;
border-top: 3px solid #2196F3;
border-radius: 50%;
animation: spin 0.8s linear infinite;
}
body.loading {
display: none !important;
}
</style>
<!-- Early Authentication Check - Must be first to prevent unauthorized access -->
<script>
// Immediate authentication check before any page rendering
(function() {
// Check if user is logged in
const isLoggedIn = localStorage.getItem('isLoggedIn');
if (!isLoggedIn || isLoggedIn !== 'true') {
// Not logged in - redirect to login
window.location.replace('login.html');
}
// Check hasVmAccess to determine which view to show
const userInfo = localStorage.getItem('userInfo');
let hasVmAccess = true; // Default to true
if (userInfo) {
try {
const parsedInfo = JSON.parse(userInfo);
hasVmAccess = parsedInfo?.hasVmAccess ?? true;
} catch (e) {
console.error('Error parsing userInfo:', e);
}
}
// Store hasVmAccess for use after page loads
window.__hasVmAccess = hasVmAccess;
})();
</script>
<script src="./js/dynamic-favicon.js"></script>
<script src="./js/tab-visibility.js"></script>
<!-- Add showdown library -->
<script src="https://cdn.jsdelivr.net/npm/showdown/dist/showdown.min.js"></script>
<!-- Add DOMPurify for XSS protection -->
<script src="https://cdn.jsdelivr.net/npm/dompurify@3.0.8/dist/purify.min.js"></script>
<!-- Add Monaco Editor -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.44.0/min/vs/loader.min.js"></script>
<!-- Add PostEventSource library -->
<script src="./stream-post-client.js"></script>
<!-- Add domain config FIRST - must load before all other scripts -->
<script src
Open service 2600:9000:26db:f200:1:eba8:2dc0:93a1:80 · kline.siya.com
2026-01-12 08:48
HTTP/1.1 301 Moved Permanently Server: CloudFront Date: Mon, 12 Jan 2026 08:48:10 GMT Content-Type: text/html Content-Length: 167 Connection: close Location: https://kline.siya.com/ X-Cache: Redirect from cloudfront Via: 1.1 559b66bb8d6baca9fa30f875c62de1e6.cloudfront.net (CloudFront) X-Amz-Cf-Pop: MUC50-P3 X-Amz-Cf-Id: 0P5AubKdQkOBL-RAW3mOqOq3AoIBaoa_eLhIVT0SHmrOyS-goOUroA== Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body> <center><h1>301 Moved Permanently</h1></center> <hr><center>CloudFront</center> </body> </html>
Open service 18.173.154.97:80 · kline.siya.com
2026-01-12 08:48
HTTP/1.1 301 Moved Permanently Server: CloudFront Date: Mon, 12 Jan 2026 08:48:10 GMT Content-Type: text/html Content-Length: 167 Connection: close Location: https://kline.siya.com/ X-Cache: Redirect from cloudfront Via: 1.1 fe6d656eba9969a63bb94889f81e9bf8.cloudfront.net (CloudFront) X-Amz-Cf-Pop: MUC50-P3 X-Amz-Cf-Id: kPpWDbz8rHEV9fwN19OWus3vapKgFkA1hqvzj_tHcTWjn02wmfR2sg== Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body> <center><h1>301 Moved Permanently</h1></center> <hr><center>CloudFront</center> </body> </html>
Open service 2600:9000:26db:9e00:1:eba8:2dc0:93a1:443 · kline.siya.com
2026-01-12 08:48
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 88159
Connection: close
Date: Mon, 12 Jan 2026 08:48:12 GMT
Last-Modified: Fri, 09 Jan 2026 14:23:01 GMT
x-amz-version-id: null
ETag: "40f5f050437d6c3346c31ff8bbbfc356"
Server: AmazonS3
X-Cache: Miss from cloudfront
Via: 1.1 fe6d656eba9969a63bb94889f81e9bf8.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: MUC50-P3
X-Amz-Cf-Id: 8znJedTewPnEYRsQgQRvcQKr2QOgiMXa1a-uc6IdPHygPhA3x7s_ww==
Page title: SIYA
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>SIYA</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
<link rel="stylesheet" href="./styles.css">
<link rel="stylesheet" href="./mobile.css">
<link rel="stylesheet" href="./index.css">
<link rel="stylesheet" href="./css/mcp-loader.css">
<link rel="stylesheet" href="./css/agent-selector.css">
<link rel="stylesheet" href="./css/power-toggle.css">
<link rel="stylesheet" href="./css/model-selector.css">
<link rel="stylesheet" href="./css/profile-dropdown.css">
<link rel="stylesheet" href="./css/settings-menu.css">
<link rel="stylesheet" href="./css/history-sidebar.css">
<link rel="stylesheet" href="./css/dropdown-menu.css">
<link rel="stylesheet" href="./css/file-viewer.css">
<link rel="stylesheet" href="./css/scroll-buttons.css">
<link rel="stylesheet" href="./css/automations-modal.css">
<link rel="stylesheet" href="./css/voice-recording.css">
<link rel="stylesheet" href="./css/session-prompt.css">
<link rel="stylesheet" href="./css/landing.css">
<link rel="icon" href="assets/siya-icon.png" type="image/png" />
<!-- Initial Loader Styles - Must load immediately -->
<style id="initial-loader-animation">
@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}
#initial-health-loader {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: white;
display: flex;
justify-content: center;
align-items: center;
z-index: 99998;
}
#initial-health-loader .spinner {
width: 40px;
height: 40px;
border: 3px solid #e3f2fd;
border-top: 3px solid #2196F3;
border-radius: 50%;
animation: spin 0.8s linear infinite;
}
body.loading {
display: none !important;
}
</style>
<!-- Early Authentication Check - Must be first to prevent unauthorized access -->
<script>
// Immediate authentication check before any page rendering
(function() {
// Check if user is logged in
const isLoggedIn = localStorage.getItem('isLoggedIn');
if (!isLoggedIn || isLoggedIn !== 'true') {
// Not logged in - redirect to login
window.location.replace('login.html');
}
// Check hasVmAccess to determine which view to show
const userInfo = localStorage.getItem('userInfo');
let hasVmAccess = true; // Default to true
if (userInfo) {
try {
const parsedInfo = JSON.parse(userInfo);
hasVmAccess = parsedInfo?.hasVmAccess ?? true;
} catch (e) {
console.error('Error parsing userInfo:', e);
}
}
// Store hasVmAccess for use after page loads
window.__hasVmAccess = hasVmAccess;
})();
</script>
<script src="./js/dynamic-favicon.js"></script>
<script src="./js/tab-visibility.js"></script>
<!-- Add showdown library -->
<script src="https://cdn.jsdelivr.net/npm/showdown/dist/showdown.min.js"></script>
<!-- Add DOMPurify for XSS protection -->
<script src="https://cdn.jsdelivr.net/npm/dompurify@3.0.8/dist/purify.min.js"></script>
<!-- Add Monaco Editor -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.44.0/min/vs/loader.min.js"></script>
<!-- Add PostEventSource library -->
<script src="./stream-post-client.js"></script>
<!-- Add domain config FIRST - must load before all other scripts -->
<script src
Open service 2600:9000:26db:6a00:1:eba8:2dc0:93a1:80 · kline.siya.com
2026-01-12 08:48
HTTP/1.1 301 Moved Permanently Server: CloudFront Date: Mon, 12 Jan 2026 08:48:10 GMT Content-Type: text/html Content-Length: 167 Connection: close Location: https://kline.siya.com/ X-Cache: Redirect from cloudfront Via: 1.1 bc8243121fd94c5b2714caac07caccde.cloudfront.net (CloudFront) X-Amz-Cf-Pop: MUC50-P3 X-Amz-Cf-Id: EPPfMuMjvpJYwku1BhUUWIhKxn-YTD8A2mevv5kuJFDBwMnoAb-SZQ== Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body> <center><h1>301 Moved Permanently</h1></center> <hr><center>CloudFront</center> </body> </html>
Open service 2600:9000:26db:6a00:1:eba8:2dc0:93a1:443 · kline.siya.com
2026-01-12 08:48
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 88159
Connection: close
Date: Mon, 12 Jan 2026 08:48:12 GMT
Last-Modified: Fri, 09 Jan 2026 14:23:01 GMT
x-amz-version-id: null
ETag: "40f5f050437d6c3346c31ff8bbbfc356"
Server: AmazonS3
X-Cache: Miss from cloudfront
Via: 1.1 a29f8f45a0707c5c9e054636ff51dce8.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: MUC50-P3
X-Amz-Cf-Id: QKj9FINieswLg46l6h0Qx1GCyngmfj4X76QZMl2rrm1Sz-HBurOnww==
Page title: SIYA
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>SIYA</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
<link rel="stylesheet" href="./styles.css">
<link rel="stylesheet" href="./mobile.css">
<link rel="stylesheet" href="./index.css">
<link rel="stylesheet" href="./css/mcp-loader.css">
<link rel="stylesheet" href="./css/agent-selector.css">
<link rel="stylesheet" href="./css/power-toggle.css">
<link rel="stylesheet" href="./css/model-selector.css">
<link rel="stylesheet" href="./css/profile-dropdown.css">
<link rel="stylesheet" href="./css/settings-menu.css">
<link rel="stylesheet" href="./css/history-sidebar.css">
<link rel="stylesheet" href="./css/dropdown-menu.css">
<link rel="stylesheet" href="./css/file-viewer.css">
<link rel="stylesheet" href="./css/scroll-buttons.css">
<link rel="stylesheet" href="./css/automations-modal.css">
<link rel="stylesheet" href="./css/voice-recording.css">
<link rel="stylesheet" href="./css/session-prompt.css">
<link rel="stylesheet" href="./css/landing.css">
<link rel="icon" href="assets/siya-icon.png" type="image/png" />
<!-- Initial Loader Styles - Must load immediately -->
<style id="initial-loader-animation">
@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}
#initial-health-loader {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: white;
display: flex;
justify-content: center;
align-items: center;
z-index: 99998;
}
#initial-health-loader .spinner {
width: 40px;
height: 40px;
border: 3px solid #e3f2fd;
border-top: 3px solid #2196F3;
border-radius: 50%;
animation: spin 0.8s linear infinite;
}
body.loading {
display: none !important;
}
</style>
<!-- Early Authentication Check - Must be first to prevent unauthorized access -->
<script>
// Immediate authentication check before any page rendering
(function() {
// Check if user is logged in
const isLoggedIn = localStorage.getItem('isLoggedIn');
if (!isLoggedIn || isLoggedIn !== 'true') {
// Not logged in - redirect to login
window.location.replace('login.html');
}
// Check hasVmAccess to determine which view to show
const userInfo = localStorage.getItem('userInfo');
let hasVmAccess = true; // Default to true
if (userInfo) {
try {
const parsedInfo = JSON.parse(userInfo);
hasVmAccess = parsedInfo?.hasVmAccess ?? true;
} catch (e) {
console.error('Error parsing userInfo:', e);
}
}
// Store hasVmAccess for use after page loads
window.__hasVmAccess = hasVmAccess;
})();
</script>
<script src="./js/dynamic-favicon.js"></script>
<script src="./js/tab-visibility.js"></script>
<!-- Add showdown library -->
<script src="https://cdn.jsdelivr.net/npm/showdown/dist/showdown.min.js"></script>
<!-- Add DOMPurify for XSS protection -->
<script src="https://cdn.jsdelivr.net/npm/dompurify@3.0.8/dist/purify.min.js"></script>
<!-- Add Monaco Editor -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.44.0/min/vs/loader.min.js"></script>
<!-- Add PostEventSource library -->
<script src="./stream-post-client.js"></script>
<!-- Add domain config FIRST - must load before all other scripts -->
<script src
Open service 2600:9000:26db:f800:1:eba8:2dc0:93a1:80 · kline.siya.com
2026-01-12 08:48
HTTP/1.1 301 Moved Permanently Server: CloudFront Date: Mon, 12 Jan 2026 08:48:10 GMT Content-Type: text/html Content-Length: 167 Connection: close Location: https://kline.siya.com/ X-Cache: Redirect from cloudfront Via: 1.1 67b5b59d34e71a36a3955bf957ea9ed2.cloudfront.net (CloudFront) X-Amz-Cf-Pop: MUC50-P3 X-Amz-Cf-Id: l7QpR_HCqToVE1SyCR3bh9p5WvcKExmghXAblc51jI7_VYLB2jdjUw== Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body> <center><h1>301 Moved Permanently</h1></center> <hr><center>CloudFront</center> </body> </html>
Open service 18.173.154.55:80 · kline.siya.com
2026-01-12 08:48
HTTP/1.1 301 Moved Permanently Server: CloudFront Date: Mon, 12 Jan 2026 08:48:10 GMT Content-Type: text/html Content-Length: 167 Connection: close Location: https://kline.siya.com/ X-Cache: Redirect from cloudfront Via: 1.1 d32cecfb780f448e04918056be10c37a.cloudfront.net (CloudFront) X-Amz-Cf-Pop: MUC50-P3 X-Amz-Cf-Id: 91oe89ReTar6KVg1bUU-lkQOoG1Ng72MWu0n342CnkRqzxuicjxPPA== Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body> <center><h1>301 Moved Permanently</h1></center> <hr><center>CloudFront</center> </body> </html>
Open service 2600:9000:26db:3000:1:eba8:2dc0:93a1:443 · kline.siya.com
2026-01-12 08:48
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 88159
Connection: close
Date: Mon, 12 Jan 2026 08:48:12 GMT
Last-Modified: Fri, 09 Jan 2026 14:23:01 GMT
x-amz-version-id: null
ETag: "40f5f050437d6c3346c31ff8bbbfc356"
Server: AmazonS3
X-Cache: Miss from cloudfront
Via: 1.1 55965767fb32678a90a721ccc878aa86.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: MUC50-P3
X-Amz-Cf-Id: XCAAlcmgUE5VCIDju5Ku-Enir5WRBuiR3kuYIPyw4uNgdRFT9OQVww==
Page title: SIYA
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>SIYA</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
<link rel="stylesheet" href="./styles.css">
<link rel="stylesheet" href="./mobile.css">
<link rel="stylesheet" href="./index.css">
<link rel="stylesheet" href="./css/mcp-loader.css">
<link rel="stylesheet" href="./css/agent-selector.css">
<link rel="stylesheet" href="./css/power-toggle.css">
<link rel="stylesheet" href="./css/model-selector.css">
<link rel="stylesheet" href="./css/profile-dropdown.css">
<link rel="stylesheet" href="./css/settings-menu.css">
<link rel="stylesheet" href="./css/history-sidebar.css">
<link rel="stylesheet" href="./css/dropdown-menu.css">
<link rel="stylesheet" href="./css/file-viewer.css">
<link rel="stylesheet" href="./css/scroll-buttons.css">
<link rel="stylesheet" href="./css/automations-modal.css">
<link rel="stylesheet" href="./css/voice-recording.css">
<link rel="stylesheet" href="./css/session-prompt.css">
<link rel="stylesheet" href="./css/landing.css">
<link rel="icon" href="assets/siya-icon.png" type="image/png" />
<!-- Initial Loader Styles - Must load immediately -->
<style id="initial-loader-animation">
@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}
#initial-health-loader {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: white;
display: flex;
justify-content: center;
align-items: center;
z-index: 99998;
}
#initial-health-loader .spinner {
width: 40px;
height: 40px;
border: 3px solid #e3f2fd;
border-top: 3px solid #2196F3;
border-radius: 50%;
animation: spin 0.8s linear infinite;
}
body.loading {
display: none !important;
}
</style>
<!-- Early Authentication Check - Must be first to prevent unauthorized access -->
<script>
// Immediate authentication check before any page rendering
(function() {
// Check if user is logged in
const isLoggedIn = localStorage.getItem('isLoggedIn');
if (!isLoggedIn || isLoggedIn !== 'true') {
// Not logged in - redirect to login
window.location.replace('login.html');
}
// Check hasVmAccess to determine which view to show
const userInfo = localStorage.getItem('userInfo');
let hasVmAccess = true; // Default to true
if (userInfo) {
try {
const parsedInfo = JSON.parse(userInfo);
hasVmAccess = parsedInfo?.hasVmAccess ?? true;
} catch (e) {
console.error('Error parsing userInfo:', e);
}
}
// Store hasVmAccess for use after page loads
window.__hasVmAccess = hasVmAccess;
})();
</script>
<script src="./js/dynamic-favicon.js"></script>
<script src="./js/tab-visibility.js"></script>
<!-- Add showdown library -->
<script src="https://cdn.jsdelivr.net/npm/showdown/dist/showdown.min.js"></script>
<!-- Add DOMPurify for XSS protection -->
<script src="https://cdn.jsdelivr.net/npm/dompurify@3.0.8/dist/purify.min.js"></script>
<!-- Add Monaco Editor -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.44.0/min/vs/loader.min.js"></script>
<!-- Add PostEventSource library -->
<script src="./stream-post-client.js"></script>
<!-- Add domain config FIRST - must load before all other scripts -->
<script src
Open service 2600:9000:26db:f800:1:eba8:2dc0:93a1:443 · kline.siya.com
2026-01-12 08:48
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 88159
Connection: close
Date: Mon, 12 Jan 2026 08:48:11 GMT
Last-Modified: Fri, 09 Jan 2026 14:23:01 GMT
x-amz-version-id: null
ETag: "40f5f050437d6c3346c31ff8bbbfc356"
Server: AmazonS3
X-Cache: Miss from cloudfront
Via: 1.1 2d22bd8fe92380401bbc1d8cc010e5a0.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: MUC50-P3
X-Amz-Cf-Id: J6YuKWHhnv7N8QSZZPFPCCAQYcY8CIOawBd1G0emMnwrywh1Kgc_7A==
Page title: SIYA
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>SIYA</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
<link rel="stylesheet" href="./styles.css">
<link rel="stylesheet" href="./mobile.css">
<link rel="stylesheet" href="./index.css">
<link rel="stylesheet" href="./css/mcp-loader.css">
<link rel="stylesheet" href="./css/agent-selector.css">
<link rel="stylesheet" href="./css/power-toggle.css">
<link rel="stylesheet" href="./css/model-selector.css">
<link rel="stylesheet" href="./css/profile-dropdown.css">
<link rel="stylesheet" href="./css/settings-menu.css">
<link rel="stylesheet" href="./css/history-sidebar.css">
<link rel="stylesheet" href="./css/dropdown-menu.css">
<link rel="stylesheet" href="./css/file-viewer.css">
<link rel="stylesheet" href="./css/scroll-buttons.css">
<link rel="stylesheet" href="./css/automations-modal.css">
<link rel="stylesheet" href="./css/voice-recording.css">
<link rel="stylesheet" href="./css/session-prompt.css">
<link rel="stylesheet" href="./css/landing.css">
<link rel="icon" href="assets/siya-icon.png" type="image/png" />
<!-- Initial Loader Styles - Must load immediately -->
<style id="initial-loader-animation">
@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}
#initial-health-loader {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: white;
display: flex;
justify-content: center;
align-items: center;
z-index: 99998;
}
#initial-health-loader .spinner {
width: 40px;
height: 40px;
border: 3px solid #e3f2fd;
border-top: 3px solid #2196F3;
border-radius: 50%;
animation: spin 0.8s linear infinite;
}
body.loading {
display: none !important;
}
</style>
<!-- Early Authentication Check - Must be first to prevent unauthorized access -->
<script>
// Immediate authentication check before any page rendering
(function() {
// Check if user is logged in
const isLoggedIn = localStorage.getItem('isLoggedIn');
if (!isLoggedIn || isLoggedIn !== 'true') {
// Not logged in - redirect to login
window.location.replace('login.html');
}
// Check hasVmAccess to determine which view to show
const userInfo = localStorage.getItem('userInfo');
let hasVmAccess = true; // Default to true
if (userInfo) {
try {
const parsedInfo = JSON.parse(userInfo);
hasVmAccess = parsedInfo?.hasVmAccess ?? true;
} catch (e) {
console.error('Error parsing userInfo:', e);
}
}
// Store hasVmAccess for use after page loads
window.__hasVmAccess = hasVmAccess;
})();
</script>
<script src="./js/dynamic-favicon.js"></script>
<script src="./js/tab-visibility.js"></script>
<!-- Add showdown library -->
<script src="https://cdn.jsdelivr.net/npm/showdown/dist/showdown.min.js"></script>
<!-- Add DOMPurify for XSS protection -->
<script src="https://cdn.jsdelivr.net/npm/dompurify@3.0.8/dist/purify.min.js"></script>
<!-- Add Monaco Editor -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.44.0/min/vs/loader.min.js"></script>
<!-- Add PostEventSource library -->
<script src="./stream-post-client.js"></script>
<!-- Add domain config FIRST - must load before all other scripts -->
<script src
Open service 18.173.154.15:443 · kline.siya.com
2026-01-12 08:48
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 88159
Connection: close
Date: Mon, 12 Jan 2026 08:48:11 GMT
Last-Modified: Fri, 09 Jan 2026 14:23:01 GMT
x-amz-version-id: null
ETag: "40f5f050437d6c3346c31ff8bbbfc356"
Server: AmazonS3
X-Cache: Miss from cloudfront
Via: 1.1 d32cecfb780f448e04918056be10c37a.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: MUC50-P3
X-Amz-Cf-Id: -wFTqpAUKn0hkFDq3Z3unVi_12wtcNF_ZDAKSGlwNzYekp-JR_EkAA==
Page title: SIYA
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>SIYA</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
<link rel="stylesheet" href="./styles.css">
<link rel="stylesheet" href="./mobile.css">
<link rel="stylesheet" href="./index.css">
<link rel="stylesheet" href="./css/mcp-loader.css">
<link rel="stylesheet" href="./css/agent-selector.css">
<link rel="stylesheet" href="./css/power-toggle.css">
<link rel="stylesheet" href="./css/model-selector.css">
<link rel="stylesheet" href="./css/profile-dropdown.css">
<link rel="stylesheet" href="./css/settings-menu.css">
<link rel="stylesheet" href="./css/history-sidebar.css">
<link rel="stylesheet" href="./css/dropdown-menu.css">
<link rel="stylesheet" href="./css/file-viewer.css">
<link rel="stylesheet" href="./css/scroll-buttons.css">
<link rel="stylesheet" href="./css/automations-modal.css">
<link rel="stylesheet" href="./css/voice-recording.css">
<link rel="stylesheet" href="./css/session-prompt.css">
<link rel="stylesheet" href="./css/landing.css">
<link rel="icon" href="assets/siya-icon.png" type="image/png" />
<!-- Initial Loader Styles - Must load immediately -->
<style id="initial-loader-animation">
@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}
#initial-health-loader {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: white;
display: flex;
justify-content: center;
align-items: center;
z-index: 99998;
}
#initial-health-loader .spinner {
width: 40px;
height: 40px;
border: 3px solid #e3f2fd;
border-top: 3px solid #2196F3;
border-radius: 50%;
animation: spin 0.8s linear infinite;
}
body.loading {
display: none !important;
}
</style>
<!-- Early Authentication Check - Must be first to prevent unauthorized access -->
<script>
// Immediate authentication check before any page rendering
(function() {
// Check if user is logged in
const isLoggedIn = localStorage.getItem('isLoggedIn');
if (!isLoggedIn || isLoggedIn !== 'true') {
// Not logged in - redirect to login
window.location.replace('login.html');
}
// Check hasVmAccess to determine which view to show
const userInfo = localStorage.getItem('userInfo');
let hasVmAccess = true; // Default to true
if (userInfo) {
try {
const parsedInfo = JSON.parse(userInfo);
hasVmAccess = parsedInfo?.hasVmAccess ?? true;
} catch (e) {
console.error('Error parsing userInfo:', e);
}
}
// Store hasVmAccess for use after page loads
window.__hasVmAccess = hasVmAccess;
})();
</script>
<script src="./js/dynamic-favicon.js"></script>
<script src="./js/tab-visibility.js"></script>
<!-- Add showdown library -->
<script src="https://cdn.jsdelivr.net/npm/showdown/dist/showdown.min.js"></script>
<!-- Add DOMPurify for XSS protection -->
<script src="https://cdn.jsdelivr.net/npm/dompurify@3.0.8/dist/purify.min.js"></script>
<!-- Add Monaco Editor -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.44.0/min/vs/loader.min.js"></script>
<!-- Add PostEventSource library -->
<script src="./stream-post-client.js"></script>
<!-- Add domain config FIRST - must load before all other scripts -->
<script src
Open service 2600:9000:26db:c200:1:eba8:2dc0:93a1:80 · kline.siya.com
2026-01-12 08:48
HTTP/1.1 301 Moved Permanently Server: CloudFront Date: Mon, 12 Jan 2026 08:48:10 GMT Content-Type: text/html Content-Length: 167 Connection: close Location: https://kline.siya.com/ X-Cache: Redirect from cloudfront Via: 1.1 fd4a06b35c482e680f7f3fd9baaa0090.cloudfront.net (CloudFront) X-Amz-Cf-Pop: MUC50-P3 X-Amz-Cf-Id: ZxGD8lSPI907dOLsbiTLOJLK-3qdA5P5F9jeHYFTCDAgZBdDBhJ8UA== Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body> <center><h1>301 Moved Permanently</h1></center> <hr><center>CloudFront</center> </body> </html>
Open service 18.173.154.97:443 · kline.siya.com
2026-01-12 08:48
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 88159
Connection: close
Date: Mon, 12 Jan 2026 08:48:11 GMT
Last-Modified: Fri, 09 Jan 2026 14:23:01 GMT
x-amz-version-id: null
ETag: "40f5f050437d6c3346c31ff8bbbfc356"
Server: AmazonS3
X-Cache: Miss from cloudfront
Via: 1.1 ca623c10f2a669c8a9af30362937ebac.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: MUC50-P3
X-Amz-Cf-Id: bQijKXN-AOokGjhGmB96B8SZoeDNzsgBpoJBsNeLLlAaMjRlcoSj9w==
Page title: SIYA
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>SIYA</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
<link rel="stylesheet" href="./styles.css">
<link rel="stylesheet" href="./mobile.css">
<link rel="stylesheet" href="./index.css">
<link rel="stylesheet" href="./css/mcp-loader.css">
<link rel="stylesheet" href="./css/agent-selector.css">
<link rel="stylesheet" href="./css/power-toggle.css">
<link rel="stylesheet" href="./css/model-selector.css">
<link rel="stylesheet" href="./css/profile-dropdown.css">
<link rel="stylesheet" href="./css/settings-menu.css">
<link rel="stylesheet" href="./css/history-sidebar.css">
<link rel="stylesheet" href="./css/dropdown-menu.css">
<link rel="stylesheet" href="./css/file-viewer.css">
<link rel="stylesheet" href="./css/scroll-buttons.css">
<link rel="stylesheet" href="./css/automations-modal.css">
<link rel="stylesheet" href="./css/voice-recording.css">
<link rel="stylesheet" href="./css/session-prompt.css">
<link rel="stylesheet" href="./css/landing.css">
<link rel="icon" href="assets/siya-icon.png" type="image/png" />
<!-- Initial Loader Styles - Must load immediately -->
<style id="initial-loader-animation">
@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}
#initial-health-loader {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: white;
display: flex;
justify-content: center;
align-items: center;
z-index: 99998;
}
#initial-health-loader .spinner {
width: 40px;
height: 40px;
border: 3px solid #e3f2fd;
border-top: 3px solid #2196F3;
border-radius: 50%;
animation: spin 0.8s linear infinite;
}
body.loading {
display: none !important;
}
</style>
<!-- Early Authentication Check - Must be first to prevent unauthorized access -->
<script>
// Immediate authentication check before any page rendering
(function() {
// Check if user is logged in
const isLoggedIn = localStorage.getItem('isLoggedIn');
if (!isLoggedIn || isLoggedIn !== 'true') {
// Not logged in - redirect to login
window.location.replace('login.html');
}
// Check hasVmAccess to determine which view to show
const userInfo = localStorage.getItem('userInfo');
let hasVmAccess = true; // Default to true
if (userInfo) {
try {
const parsedInfo = JSON.parse(userInfo);
hasVmAccess = parsedInfo?.hasVmAccess ?? true;
} catch (e) {
console.error('Error parsing userInfo:', e);
}
}
// Store hasVmAccess for use after page loads
window.__hasVmAccess = hasVmAccess;
})();
</script>
<script src="./js/dynamic-favicon.js"></script>
<script src="./js/tab-visibility.js"></script>
<!-- Add showdown library -->
<script src="https://cdn.jsdelivr.net/npm/showdown/dist/showdown.min.js"></script>
<!-- Add DOMPurify for XSS protection -->
<script src="https://cdn.jsdelivr.net/npm/dompurify@3.0.8/dist/purify.min.js"></script>
<!-- Add Monaco Editor -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.44.0/min/vs/loader.min.js"></script>
<!-- Add PostEventSource library -->
<script src="./stream-post-client.js"></script>
<!-- Add domain config FIRST - must load before all other scripts -->
<script src
Open service 2600:9000:26db:9e00:1:eba8:2dc0:93a1:80 · kline.siya.com
2026-01-12 08:48
HTTP/1.1 301 Moved Permanently Server: CloudFront Date: Mon, 12 Jan 2026 08:48:09 GMT Content-Type: text/html Content-Length: 167 Connection: close Location: https://kline.siya.com/ X-Cache: Redirect from cloudfront Via: 1.1 106a2e3801afa4dfd5bd4bfaeb93d526.cloudfront.net (CloudFront) X-Amz-Cf-Pop: MUC50-P3 X-Amz-Cf-Id: 4WQQyy4QeV0IegFlIiw16-9gyT1J1xKTbiDWuxBofCKJKJ6WLeZN0A== Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body> <center><h1>301 Moved Permanently</h1></center> <hr><center>CloudFront</center> </body> </html>
Open service 2600:9000:26db:cc00:1:eba8:2dc0:93a1:80 · kline.siya.com
2026-01-12 08:48
HTTP/1.1 301 Moved Permanently Server: CloudFront Date: Mon, 12 Jan 2026 08:48:09 GMT Content-Type: text/html Content-Length: 167 Connection: close Location: https://kline.siya.com/ X-Cache: Redirect from cloudfront Via: 1.1 5951b29f5460c0b6d21eb11bce7b8168.cloudfront.net (CloudFront) X-Amz-Cf-Pop: MUC50-P3 X-Amz-Cf-Id: gJZLslQMFqqL-J0JYSvEf0tnRWFl-WbYGW0RlH9m-abX4111uvvvkw== Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body> <center><h1>301 Moved Permanently</h1></center> <hr><center>CloudFront</center> </body> </html>
Open service 18.173.154.10:80 · kline.siya.com
2026-01-12 08:48
HTTP/1.1 301 Moved Permanently Server: CloudFront Date: Mon, 12 Jan 2026 08:48:10 GMT Content-Type: text/html Content-Length: 167 Connection: close Location: https://kline.siya.com/ X-Cache: Redirect from cloudfront Via: 1.1 9564791ed47030dad53c797ee814c66e.cloudfront.net (CloudFront) X-Amz-Cf-Pop: MUC50-P3 X-Amz-Cf-Id: hoh5s6PunouqggWPWHV9A0di5vVm2PHU90GJ9RPtW8TitnZBc8QMRA== Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body> <center><h1>301 Moved Permanently</h1></center> <hr><center>CloudFront</center> </body> </html>
Open service 2600:9000:26db:f200:1:eba8:2dc0:93a1:443 · kline.siya.com
2026-01-12 08:48
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 88159
Connection: close
Date: Mon, 12 Jan 2026 08:48:11 GMT
Last-Modified: Fri, 09 Jan 2026 14:23:01 GMT
x-amz-version-id: null
ETag: "40f5f050437d6c3346c31ff8bbbfc356"
Server: AmazonS3
X-Cache: Miss from cloudfront
Via: 1.1 fe6d656eba9969a63bb94889f81e9bf8.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: MUC50-P3
X-Amz-Cf-Id: hRKjR5GufCghpatbq2qYd9Fh4I0e502kKq7OryL9jL7w0qNdFy-GPQ==
Page title: SIYA
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>SIYA</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
<link rel="stylesheet" href="./styles.css">
<link rel="stylesheet" href="./mobile.css">
<link rel="stylesheet" href="./index.css">
<link rel="stylesheet" href="./css/mcp-loader.css">
<link rel="stylesheet" href="./css/agent-selector.css">
<link rel="stylesheet" href="./css/power-toggle.css">
<link rel="stylesheet" href="./css/model-selector.css">
<link rel="stylesheet" href="./css/profile-dropdown.css">
<link rel="stylesheet" href="./css/settings-menu.css">
<link rel="stylesheet" href="./css/history-sidebar.css">
<link rel="stylesheet" href="./css/dropdown-menu.css">
<link rel="stylesheet" href="./css/file-viewer.css">
<link rel="stylesheet" href="./css/scroll-buttons.css">
<link rel="stylesheet" href="./css/automations-modal.css">
<link rel="stylesheet" href="./css/voice-recording.css">
<link rel="stylesheet" href="./css/session-prompt.css">
<link rel="stylesheet" href="./css/landing.css">
<link rel="icon" href="assets/siya-icon.png" type="image/png" />
<!-- Initial Loader Styles - Must load immediately -->
<style id="initial-loader-animation">
@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}
#initial-health-loader {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: white;
display: flex;
justify-content: center;
align-items: center;
z-index: 99998;
}
#initial-health-loader .spinner {
width: 40px;
height: 40px;
border: 3px solid #e3f2fd;
border-top: 3px solid #2196F3;
border-radius: 50%;
animation: spin 0.8s linear infinite;
}
body.loading {
display: none !important;
}
</style>
<!-- Early Authentication Check - Must be first to prevent unauthorized access -->
<script>
// Immediate authentication check before any page rendering
(function() {
// Check if user is logged in
const isLoggedIn = localStorage.getItem('isLoggedIn');
if (!isLoggedIn || isLoggedIn !== 'true') {
// Not logged in - redirect to login
window.location.replace('login.html');
}
// Check hasVmAccess to determine which view to show
const userInfo = localStorage.getItem('userInfo');
let hasVmAccess = true; // Default to true
if (userInfo) {
try {
const parsedInfo = JSON.parse(userInfo);
hasVmAccess = parsedInfo?.hasVmAccess ?? true;
} catch (e) {
console.error('Error parsing userInfo:', e);
}
}
// Store hasVmAccess for use after page loads
window.__hasVmAccess = hasVmAccess;
})();
</script>
<script src="./js/dynamic-favicon.js"></script>
<script src="./js/tab-visibility.js"></script>
<!-- Add showdown library -->
<script src="https://cdn.jsdelivr.net/npm/showdown/dist/showdown.min.js"></script>
<!-- Add DOMPurify for XSS protection -->
<script src="https://cdn.jsdelivr.net/npm/dompurify@3.0.8/dist/purify.min.js"></script>
<!-- Add Monaco Editor -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.44.0/min/vs/loader.min.js"></script>
<!-- Add PostEventSource library -->
<script src="./stream-post-client.js"></script>
<!-- Add domain config FIRST - must load before all other scripts -->
<script src
Open service 2600:9000:26db:cc00:1:eba8:2dc0:93a1:443 · kline.siya.com
2026-01-12 08:48
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 88159
Connection: close
Date: Mon, 12 Jan 2026 08:48:11 GMT
Last-Modified: Fri, 09 Jan 2026 14:23:01 GMT
x-amz-version-id: null
ETag: "40f5f050437d6c3346c31ff8bbbfc356"
Server: AmazonS3
X-Cache: Miss from cloudfront
Via: 1.1 f620f5422d3678dbdbb8544d75a30f78.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: MUC50-P3
X-Amz-Cf-Id: bYSum3vVRzY9uCgqq0pXBSBxSzYsdnb_xHfBjmAC2r1r_6R-TPB_wg==
Page title: SIYA
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>SIYA</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
<link rel="stylesheet" href="./styles.css">
<link rel="stylesheet" href="./mobile.css">
<link rel="stylesheet" href="./index.css">
<link rel="stylesheet" href="./css/mcp-loader.css">
<link rel="stylesheet" href="./css/agent-selector.css">
<link rel="stylesheet" href="./css/power-toggle.css">
<link rel="stylesheet" href="./css/model-selector.css">
<link rel="stylesheet" href="./css/profile-dropdown.css">
<link rel="stylesheet" href="./css/settings-menu.css">
<link rel="stylesheet" href="./css/history-sidebar.css">
<link rel="stylesheet" href="./css/dropdown-menu.css">
<link rel="stylesheet" href="./css/file-viewer.css">
<link rel="stylesheet" href="./css/scroll-buttons.css">
<link rel="stylesheet" href="./css/automations-modal.css">
<link rel="stylesheet" href="./css/voice-recording.css">
<link rel="stylesheet" href="./css/session-prompt.css">
<link rel="stylesheet" href="./css/landing.css">
<link rel="icon" href="assets/siya-icon.png" type="image/png" />
<!-- Initial Loader Styles - Must load immediately -->
<style id="initial-loader-animation">
@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}
#initial-health-loader {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: white;
display: flex;
justify-content: center;
align-items: center;
z-index: 99998;
}
#initial-health-loader .spinner {
width: 40px;
height: 40px;
border: 3px solid #e3f2fd;
border-top: 3px solid #2196F3;
border-radius: 50%;
animation: spin 0.8s linear infinite;
}
body.loading {
display: none !important;
}
</style>
<!-- Early Authentication Check - Must be first to prevent unauthorized access -->
<script>
// Immediate authentication check before any page rendering
(function() {
// Check if user is logged in
const isLoggedIn = localStorage.getItem('isLoggedIn');
if (!isLoggedIn || isLoggedIn !== 'true') {
// Not logged in - redirect to login
window.location.replace('login.html');
}
// Check hasVmAccess to determine which view to show
const userInfo = localStorage.getItem('userInfo');
let hasVmAccess = true; // Default to true
if (userInfo) {
try {
const parsedInfo = JSON.parse(userInfo);
hasVmAccess = parsedInfo?.hasVmAccess ?? true;
} catch (e) {
console.error('Error parsing userInfo:', e);
}
}
// Store hasVmAccess for use after page loads
window.__hasVmAccess = hasVmAccess;
})();
</script>
<script src="./js/dynamic-favicon.js"></script>
<script src="./js/tab-visibility.js"></script>
<!-- Add showdown library -->
<script src="https://cdn.jsdelivr.net/npm/showdown/dist/showdown.min.js"></script>
<!-- Add DOMPurify for XSS protection -->
<script src="https://cdn.jsdelivr.net/npm/dompurify@3.0.8/dist/purify.min.js"></script>
<!-- Add Monaco Editor -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.44.0/min/vs/loader.min.js"></script>
<!-- Add PostEventSource library -->
<script src="./stream-post-client.js"></script>
<!-- Add domain config FIRST - must load before all other scripts -->
<script src
Open service 18.173.154.15:80 · kline.siya.com
2026-01-12 08:48
HTTP/1.1 301 Moved Permanently Server: CloudFront Date: Mon, 12 Jan 2026 08:48:09 GMT Content-Type: text/html Content-Length: 167 Connection: close Location: https://kline.siya.com/ X-Cache: Redirect from cloudfront Via: 1.1 fe6d656eba9969a63bb94889f81e9bf8.cloudfront.net (CloudFront) X-Amz-Cf-Pop: MUC50-P3 X-Amz-Cf-Id: _6ZjztIaWiF5JEq-fxYVpKbGDDfRpYzRqM0Du3gW2SonWwbv5NfsYA== Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body> <center><h1>301 Moved Permanently</h1></center> <hr><center>CloudFront</center> </body> </html>
Open service 2600:9000:26db:0:1:eba8:2dc0:93a1:443 · kline.siya.com
2026-01-09 08:38
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 88159
Connection: close
Date: Fri, 09 Jan 2026 08:38:06 GMT
Last-Modified: Fri, 09 Jan 2026 07:21:31 GMT
x-amz-version-id: null
ETag: "40f5f050437d6c3346c31ff8bbbfc356"
Server: AmazonS3
X-Cache: Miss from cloudfront
Via: 1.1 2dd902cd86ee8f22d66046533880d3e8.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: MUC50-P3
X-Amz-Cf-Id: rULVNtk343BkJbnqce83xYq3lHy3SsJPMK1WQRq8GIrw73o20N0FKg==
Page title: SIYA
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>SIYA</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
<link rel="stylesheet" href="./styles.css">
<link rel="stylesheet" href="./mobile.css">
<link rel="stylesheet" href="./index.css">
<link rel="stylesheet" href="./css/mcp-loader.css">
<link rel="stylesheet" href="./css/agent-selector.css">
<link rel="stylesheet" href="./css/power-toggle.css">
<link rel="stylesheet" href="./css/model-selector.css">
<link rel="stylesheet" href="./css/profile-dropdown.css">
<link rel="stylesheet" href="./css/settings-menu.css">
<link rel="stylesheet" href="./css/history-sidebar.css">
<link rel="stylesheet" href="./css/dropdown-menu.css">
<link rel="stylesheet" href="./css/file-viewer.css">
<link rel="stylesheet" href="./css/scroll-buttons.css">
<link rel="stylesheet" href="./css/automations-modal.css">
<link rel="stylesheet" href="./css/voice-recording.css">
<link rel="stylesheet" href="./css/session-prompt.css">
<link rel="stylesheet" href="./css/landing.css">
<link rel="icon" href="assets/siya-icon.png" type="image/png" />
<!-- Initial Loader Styles - Must load immediately -->
<style id="initial-loader-animation">
@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}
#initial-health-loader {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: white;
display: flex;
justify-content: center;
align-items: center;
z-index: 99998;
}
#initial-health-loader .spinner {
width: 40px;
height: 40px;
border: 3px solid #e3f2fd;
border-top: 3px solid #2196F3;
border-radius: 50%;
animation: spin 0.8s linear infinite;
}
body.loading {
display: none !important;
}
</style>
<!-- Early Authentication Check - Must be first to prevent unauthorized access -->
<script>
// Immediate authentication check before any page rendering
(function() {
// Check if user is logged in
const isLoggedIn = localStorage.getItem('isLoggedIn');
if (!isLoggedIn || isLoggedIn !== 'true') {
// Not logged in - redirect to login
window.location.replace('login.html');
}
// Check hasVmAccess to determine which view to show
const userInfo = localStorage.getItem('userInfo');
let hasVmAccess = true; // Default to true
if (userInfo) {
try {
const parsedInfo = JSON.parse(userInfo);
hasVmAccess = parsedInfo?.hasVmAccess ?? true;
} catch (e) {
console.error('Error parsing userInfo:', e);
}
}
// Store hasVmAccess for use after page loads
window.__hasVmAccess = hasVmAccess;
})();
</script>
<script src="./js/dynamic-favicon.js"></script>
<script src="./js/tab-visibility.js"></script>
<!-- Add showdown library -->
<script src="https://cdn.jsdelivr.net/npm/showdown/dist/showdown.min.js"></script>
<!-- Add DOMPurify for XSS protection -->
<script src="https://cdn.jsdelivr.net/npm/dompurify@3.0.8/dist/purify.min.js"></script>
<!-- Add Monaco Editor -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.44.0/min/vs/loader.min.js"></script>
<!-- Add PostEventSource library -->
<script src="./stream-post-client.js"></script>
<!-- Add domain config FIRST - must load before all other scripts -->
<script src
Open service 2600:9000:26db:e400:1:eba8:2dc0:93a1:443 · kline.siya.com
2026-01-09 08:38
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 88159
Connection: close
Date: Fri, 09 Jan 2026 08:38:06 GMT
Last-Modified: Fri, 09 Jan 2026 07:21:31 GMT
x-amz-version-id: null
ETag: "40f5f050437d6c3346c31ff8bbbfc356"
Server: AmazonS3
X-Cache: Miss from cloudfront
Via: 1.1 3f7bbc22c659b2b7470c819d073f58b6.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: MUC50-P3
X-Amz-Cf-Id: OO_1LXdwTpKVA5AluqRQPhQMYAM-7Pqhpn7_dq9DfgcWuPakUg8Mrw==
Page title: SIYA
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>SIYA</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
<link rel="stylesheet" href="./styles.css">
<link rel="stylesheet" href="./mobile.css">
<link rel="stylesheet" href="./index.css">
<link rel="stylesheet" href="./css/mcp-loader.css">
<link rel="stylesheet" href="./css/agent-selector.css">
<link rel="stylesheet" href="./css/power-toggle.css">
<link rel="stylesheet" href="./css/model-selector.css">
<link rel="stylesheet" href="./css/profile-dropdown.css">
<link rel="stylesheet" href="./css/settings-menu.css">
<link rel="stylesheet" href="./css/history-sidebar.css">
<link rel="stylesheet" href="./css/dropdown-menu.css">
<link rel="stylesheet" href="./css/file-viewer.css">
<link rel="stylesheet" href="./css/scroll-buttons.css">
<link rel="stylesheet" href="./css/automations-modal.css">
<link rel="stylesheet" href="./css/voice-recording.css">
<link rel="stylesheet" href="./css/session-prompt.css">
<link rel="stylesheet" href="./css/landing.css">
<link rel="icon" href="assets/siya-icon.png" type="image/png" />
<!-- Initial Loader Styles - Must load immediately -->
<style id="initial-loader-animation">
@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}
#initial-health-loader {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: white;
display: flex;
justify-content: center;
align-items: center;
z-index: 99998;
}
#initial-health-loader .spinner {
width: 40px;
height: 40px;
border: 3px solid #e3f2fd;
border-top: 3px solid #2196F3;
border-radius: 50%;
animation: spin 0.8s linear infinite;
}
body.loading {
display: none !important;
}
</style>
<!-- Early Authentication Check - Must be first to prevent unauthorized access -->
<script>
// Immediate authentication check before any page rendering
(function() {
// Check if user is logged in
const isLoggedIn = localStorage.getItem('isLoggedIn');
if (!isLoggedIn || isLoggedIn !== 'true') {
// Not logged in - redirect to login
window.location.replace('login.html');
}
// Check hasVmAccess to determine which view to show
const userInfo = localStorage.getItem('userInfo');
let hasVmAccess = true; // Default to true
if (userInfo) {
try {
const parsedInfo = JSON.parse(userInfo);
hasVmAccess = parsedInfo?.hasVmAccess ?? true;
} catch (e) {
console.error('Error parsing userInfo:', e);
}
}
// Store hasVmAccess for use after page loads
window.__hasVmAccess = hasVmAccess;
})();
</script>
<script src="./js/dynamic-favicon.js"></script>
<script src="./js/tab-visibility.js"></script>
<!-- Add showdown library -->
<script src="https://cdn.jsdelivr.net/npm/showdown/dist/showdown.min.js"></script>
<!-- Add DOMPurify for XSS protection -->
<script src="https://cdn.jsdelivr.net/npm/dompurify@3.0.8/dist/purify.min.js"></script>
<!-- Add Monaco Editor -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.44.0/min/vs/loader.min.js"></script>
<!-- Add PostEventSource library -->
<script src="./stream-post-client.js"></script>
<!-- Add domain config FIRST - must load before all other scripts -->
<script src
Open service 2600:9000:26db:0:1:eba8:2dc0:93a1:80 · kline.siya.com
2026-01-09 08:38
HTTP/1.1 301 Moved Permanently Server: CloudFront Date: Fri, 09 Jan 2026 08:38:05 GMT Content-Type: text/html Content-Length: 167 Connection: close Location: https://kline.siya.com/ X-Cache: Redirect from cloudfront Via: 1.1 19392de11dadb918bd6f24e199ea180e.cloudfront.net (CloudFront) X-Amz-Cf-Pop: MUC50-P3 X-Amz-Cf-Id: mvROEHJzx95o24KF1jz-vouV2M5PB90QrVjNZ7q3CPQ_n4q989raRw== Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body> <center><h1>301 Moved Permanently</h1></center> <hr><center>CloudFront</center> </body> </html>
Open service 18.173.154.55:80 · kline.siya.com
2026-01-09 08:38
HTTP/1.1 301 Moved Permanently Server: CloudFront Date: Fri, 09 Jan 2026 08:38:05 GMT Content-Type: text/html Content-Length: 167 Connection: close Location: https://kline.siya.com/ X-Cache: Redirect from cloudfront Via: 1.1 d32cecfb780f448e04918056be10c37a.cloudfront.net (CloudFront) X-Amz-Cf-Pop: MUC50-P3 X-Amz-Cf-Id: CVT_sG3_DuzmLuN39CEJAHDjG5-zkmwbBQzHAybacknoOnZySTa2pw== Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body> <center><h1>301 Moved Permanently</h1></center> <hr><center>CloudFront</center> </body> </html>
Open service 2600:9000:26db:800:1:eba8:2dc0:93a1:443 · kline.siya.com
2026-01-09 08:38
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 88159
Connection: close
Date: Fri, 09 Jan 2026 08:38:06 GMT
Last-Modified: Fri, 09 Jan 2026 07:21:31 GMT
x-amz-version-id: null
ETag: "40f5f050437d6c3346c31ff8bbbfc356"
Server: AmazonS3
X-Cache: Miss from cloudfront
Via: 1.1 bc8243121fd94c5b2714caac07caccde.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: MUC50-P3
X-Amz-Cf-Id: L82yDfcEfWMQwL7sMjutOA0MQPzEwK_etjduQmwEz3uv2VFhcVbyRA==
Page title: SIYA
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>SIYA</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
<link rel="stylesheet" href="./styles.css">
<link rel="stylesheet" href="./mobile.css">
<link rel="stylesheet" href="./index.css">
<link rel="stylesheet" href="./css/mcp-loader.css">
<link rel="stylesheet" href="./css/agent-selector.css">
<link rel="stylesheet" href="./css/power-toggle.css">
<link rel="stylesheet" href="./css/model-selector.css">
<link rel="stylesheet" href="./css/profile-dropdown.css">
<link rel="stylesheet" href="./css/settings-menu.css">
<link rel="stylesheet" href="./css/history-sidebar.css">
<link rel="stylesheet" href="./css/dropdown-menu.css">
<link rel="stylesheet" href="./css/file-viewer.css">
<link rel="stylesheet" href="./css/scroll-buttons.css">
<link rel="stylesheet" href="./css/automations-modal.css">
<link rel="stylesheet" href="./css/voice-recording.css">
<link rel="stylesheet" href="./css/session-prompt.css">
<link rel="stylesheet" href="./css/landing.css">
<link rel="icon" href="assets/siya-icon.png" type="image/png" />
<!-- Initial Loader Styles - Must load immediately -->
<style id="initial-loader-animation">
@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}
#initial-health-loader {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: white;
display: flex;
justify-content: center;
align-items: center;
z-index: 99998;
}
#initial-health-loader .spinner {
width: 40px;
height: 40px;
border: 3px solid #e3f2fd;
border-top: 3px solid #2196F3;
border-radius: 50%;
animation: spin 0.8s linear infinite;
}
body.loading {
display: none !important;
}
</style>
<!-- Early Authentication Check - Must be first to prevent unauthorized access -->
<script>
// Immediate authentication check before any page rendering
(function() {
// Check if user is logged in
const isLoggedIn = localStorage.getItem('isLoggedIn');
if (!isLoggedIn || isLoggedIn !== 'true') {
// Not logged in - redirect to login
window.location.replace('login.html');
}
// Check hasVmAccess to determine which view to show
const userInfo = localStorage.getItem('userInfo');
let hasVmAccess = true; // Default to true
if (userInfo) {
try {
const parsedInfo = JSON.parse(userInfo);
hasVmAccess = parsedInfo?.hasVmAccess ?? true;
} catch (e) {
console.error('Error parsing userInfo:', e);
}
}
// Store hasVmAccess for use after page loads
window.__hasVmAccess = hasVmAccess;
})();
</script>
<script src="./js/dynamic-favicon.js"></script>
<script src="./js/tab-visibility.js"></script>
<!-- Add showdown library -->
<script src="https://cdn.jsdelivr.net/npm/showdown/dist/showdown.min.js"></script>
<!-- Add DOMPurify for XSS protection -->
<script src="https://cdn.jsdelivr.net/npm/dompurify@3.0.8/dist/purify.min.js"></script>
<!-- Add Monaco Editor -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.44.0/min/vs/loader.min.js"></script>
<!-- Add PostEventSource library -->
<script src="./stream-post-client.js"></script>
<!-- Add domain config FIRST - must load before all other scripts -->
<script src
Open service 2600:9000:26db:e200:1:eba8:2dc0:93a1:443 · kline.siya.com
2026-01-09 08:38
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 88159
Connection: close
Date: Fri, 09 Jan 2026 08:38:05 GMT
Last-Modified: Fri, 09 Jan 2026 07:21:31 GMT
x-amz-version-id: null
ETag: "40f5f050437d6c3346c31ff8bbbfc356"
Server: AmazonS3
X-Cache: Miss from cloudfront
Via: 1.1 03d32b94cb61a4fdb1e546e888f089e4.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: MUC50-P3
X-Amz-Cf-Id: S5HfxTl7A9u-XcCVYrhx5XgH1YbpUumLeqAwVsDsKE0byumhw3ZAAw==
Page title: SIYA
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>SIYA</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
<link rel="stylesheet" href="./styles.css">
<link rel="stylesheet" href="./mobile.css">
<link rel="stylesheet" href="./index.css">
<link rel="stylesheet" href="./css/mcp-loader.css">
<link rel="stylesheet" href="./css/agent-selector.css">
<link rel="stylesheet" href="./css/power-toggle.css">
<link rel="stylesheet" href="./css/model-selector.css">
<link rel="stylesheet" href="./css/profile-dropdown.css">
<link rel="stylesheet" href="./css/settings-menu.css">
<link rel="stylesheet" href="./css/history-sidebar.css">
<link rel="stylesheet" href="./css/dropdown-menu.css">
<link rel="stylesheet" href="./css/file-viewer.css">
<link rel="stylesheet" href="./css/scroll-buttons.css">
<link rel="stylesheet" href="./css/automations-modal.css">
<link rel="stylesheet" href="./css/voice-recording.css">
<link rel="stylesheet" href="./css/session-prompt.css">
<link rel="stylesheet" href="./css/landing.css">
<link rel="icon" href="assets/siya-icon.png" type="image/png" />
<!-- Initial Loader Styles - Must load immediately -->
<style id="initial-loader-animation">
@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}
#initial-health-loader {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: white;
display: flex;
justify-content: center;
align-items: center;
z-index: 99998;
}
#initial-health-loader .spinner {
width: 40px;
height: 40px;
border: 3px solid #e3f2fd;
border-top: 3px solid #2196F3;
border-radius: 50%;
animation: spin 0.8s linear infinite;
}
body.loading {
display: none !important;
}
</style>
<!-- Early Authentication Check - Must be first to prevent unauthorized access -->
<script>
// Immediate authentication check before any page rendering
(function() {
// Check if user is logged in
const isLoggedIn = localStorage.getItem('isLoggedIn');
if (!isLoggedIn || isLoggedIn !== 'true') {
// Not logged in - redirect to login
window.location.replace('login.html');
}
// Check hasVmAccess to determine which view to show
const userInfo = localStorage.getItem('userInfo');
let hasVmAccess = true; // Default to true
if (userInfo) {
try {
const parsedInfo = JSON.parse(userInfo);
hasVmAccess = parsedInfo?.hasVmAccess ?? true;
} catch (e) {
console.error('Error parsing userInfo:', e);
}
}
// Store hasVmAccess for use after page loads
window.__hasVmAccess = hasVmAccess;
})();
</script>
<script src="./js/dynamic-favicon.js"></script>
<script src="./js/tab-visibility.js"></script>
<!-- Add showdown library -->
<script src="https://cdn.jsdelivr.net/npm/showdown/dist/showdown.min.js"></script>
<!-- Add DOMPurify for XSS protection -->
<script src="https://cdn.jsdelivr.net/npm/dompurify@3.0.8/dist/purify.min.js"></script>
<!-- Add Monaco Editor -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.44.0/min/vs/loader.min.js"></script>
<!-- Add PostEventSource library -->
<script src="./stream-post-client.js"></script>
<!-- Add domain config FIRST - must load before all other scripts -->
<script src
Open service 2600:9000:26db:7e00:1:eba8:2dc0:93a1:443 · kline.siya.com
2026-01-09 08:38
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 88159
Connection: close
Date: Fri, 09 Jan 2026 08:38:06 GMT
Last-Modified: Fri, 09 Jan 2026 07:21:31 GMT
x-amz-version-id: null
ETag: "40f5f050437d6c3346c31ff8bbbfc356"
Server: AmazonS3
X-Cache: Miss from cloudfront
Via: 1.1 b36a9cc0b5286fd650732f1458855500.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: MUC50-P3
X-Amz-Cf-Id: Th7frx3vjOdYPk6GyhOTXGoqlkSJIu_m2Vw2dyRvGgjB9xWxP3KXeA==
Page title: SIYA
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>SIYA</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
<link rel="stylesheet" href="./styles.css">
<link rel="stylesheet" href="./mobile.css">
<link rel="stylesheet" href="./index.css">
<link rel="stylesheet" href="./css/mcp-loader.css">
<link rel="stylesheet" href="./css/agent-selector.css">
<link rel="stylesheet" href="./css/power-toggle.css">
<link rel="stylesheet" href="./css/model-selector.css">
<link rel="stylesheet" href="./css/profile-dropdown.css">
<link rel="stylesheet" href="./css/settings-menu.css">
<link rel="stylesheet" href="./css/history-sidebar.css">
<link rel="stylesheet" href="./css/dropdown-menu.css">
<link rel="stylesheet" href="./css/file-viewer.css">
<link rel="stylesheet" href="./css/scroll-buttons.css">
<link rel="stylesheet" href="./css/automations-modal.css">
<link rel="stylesheet" href="./css/voice-recording.css">
<link rel="stylesheet" href="./css/session-prompt.css">
<link rel="stylesheet" href="./css/landing.css">
<link rel="icon" href="assets/siya-icon.png" type="image/png" />
<!-- Initial Loader Styles - Must load immediately -->
<style id="initial-loader-animation">
@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}
#initial-health-loader {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: white;
display: flex;
justify-content: center;
align-items: center;
z-index: 99998;
}
#initial-health-loader .spinner {
width: 40px;
height: 40px;
border: 3px solid #e3f2fd;
border-top: 3px solid #2196F3;
border-radius: 50%;
animation: spin 0.8s linear infinite;
}
body.loading {
display: none !important;
}
</style>
<!-- Early Authentication Check - Must be first to prevent unauthorized access -->
<script>
// Immediate authentication check before any page rendering
(function() {
// Check if user is logged in
const isLoggedIn = localStorage.getItem('isLoggedIn');
if (!isLoggedIn || isLoggedIn !== 'true') {
// Not logged in - redirect to login
window.location.replace('login.html');
}
// Check hasVmAccess to determine which view to show
const userInfo = localStorage.getItem('userInfo');
let hasVmAccess = true; // Default to true
if (userInfo) {
try {
const parsedInfo = JSON.parse(userInfo);
hasVmAccess = parsedInfo?.hasVmAccess ?? true;
} catch (e) {
console.error('Error parsing userInfo:', e);
}
}
// Store hasVmAccess for use after page loads
window.__hasVmAccess = hasVmAccess;
})();
</script>
<script src="./js/dynamic-favicon.js"></script>
<script src="./js/tab-visibility.js"></script>
<!-- Add showdown library -->
<script src="https://cdn.jsdelivr.net/npm/showdown/dist/showdown.min.js"></script>
<!-- Add DOMPurify for XSS protection -->
<script src="https://cdn.jsdelivr.net/npm/dompurify@3.0.8/dist/purify.min.js"></script>
<!-- Add Monaco Editor -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.44.0/min/vs/loader.min.js"></script>
<!-- Add PostEventSource library -->
<script src="./stream-post-client.js"></script>
<!-- Add domain config FIRST - must load before all other scripts -->
<script src
Open service 2600:9000:26db:5000:1:eba8:2dc0:93a1:443 · kline.siya.com
2026-01-09 08:38
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 88159
Connection: close
Date: Fri, 09 Jan 2026 08:38:06 GMT
Last-Modified: Fri, 09 Jan 2026 07:21:31 GMT
x-amz-version-id: null
ETag: "40f5f050437d6c3346c31ff8bbbfc356"
Server: AmazonS3
X-Cache: Miss from cloudfront
Via: 1.1 f620f5422d3678dbdbb8544d75a30f78.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: MUC50-P3
X-Amz-Cf-Id: m6tIpEPdsX9QHM9sQj2_RxJ0DYOyvDFXVe2YbBYVZ38FjXpGecTJJA==
Page title: SIYA
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>SIYA</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
<link rel="stylesheet" href="./styles.css">
<link rel="stylesheet" href="./mobile.css">
<link rel="stylesheet" href="./index.css">
<link rel="stylesheet" href="./css/mcp-loader.css">
<link rel="stylesheet" href="./css/agent-selector.css">
<link rel="stylesheet" href="./css/power-toggle.css">
<link rel="stylesheet" href="./css/model-selector.css">
<link rel="stylesheet" href="./css/profile-dropdown.css">
<link rel="stylesheet" href="./css/settings-menu.css">
<link rel="stylesheet" href="./css/history-sidebar.css">
<link rel="stylesheet" href="./css/dropdown-menu.css">
<link rel="stylesheet" href="./css/file-viewer.css">
<link rel="stylesheet" href="./css/scroll-buttons.css">
<link rel="stylesheet" href="./css/automations-modal.css">
<link rel="stylesheet" href="./css/voice-recording.css">
<link rel="stylesheet" href="./css/session-prompt.css">
<link rel="stylesheet" href="./css/landing.css">
<link rel="icon" href="assets/siya-icon.png" type="image/png" />
<!-- Initial Loader Styles - Must load immediately -->
<style id="initial-loader-animation">
@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}
#initial-health-loader {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: white;
display: flex;
justify-content: center;
align-items: center;
z-index: 99998;
}
#initial-health-loader .spinner {
width: 40px;
height: 40px;
border: 3px solid #e3f2fd;
border-top: 3px solid #2196F3;
border-radius: 50%;
animation: spin 0.8s linear infinite;
}
body.loading {
display: none !important;
}
</style>
<!-- Early Authentication Check - Must be first to prevent unauthorized access -->
<script>
// Immediate authentication check before any page rendering
(function() {
// Check if user is logged in
const isLoggedIn = localStorage.getItem('isLoggedIn');
if (!isLoggedIn || isLoggedIn !== 'true') {
// Not logged in - redirect to login
window.location.replace('login.html');
}
// Check hasVmAccess to determine which view to show
const userInfo = localStorage.getItem('userInfo');
let hasVmAccess = true; // Default to true
if (userInfo) {
try {
const parsedInfo = JSON.parse(userInfo);
hasVmAccess = parsedInfo?.hasVmAccess ?? true;
} catch (e) {
console.error('Error parsing userInfo:', e);
}
}
// Store hasVmAccess for use after page loads
window.__hasVmAccess = hasVmAccess;
})();
</script>
<script src="./js/dynamic-favicon.js"></script>
<script src="./js/tab-visibility.js"></script>
<!-- Add showdown library -->
<script src="https://cdn.jsdelivr.net/npm/showdown/dist/showdown.min.js"></script>
<!-- Add DOMPurify for XSS protection -->
<script src="https://cdn.jsdelivr.net/npm/dompurify@3.0.8/dist/purify.min.js"></script>
<!-- Add Monaco Editor -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.44.0/min/vs/loader.min.js"></script>
<!-- Add PostEventSource library -->
<script src="./stream-post-client.js"></script>
<!-- Add domain config FIRST - must load before all other scripts -->
<script src
Open service 18.173.154.15:443 · kline.siya.com
2026-01-09 08:38
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 88159
Connection: close
Date: Fri, 09 Jan 2026 08:38:05 GMT
Last-Modified: Fri, 09 Jan 2026 07:21:31 GMT
x-amz-version-id: null
ETag: "40f5f050437d6c3346c31ff8bbbfc356"
Server: AmazonS3
X-Cache: Miss from cloudfront
Via: 1.1 bc8243121fd94c5b2714caac07caccde.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: MUC50-P3
X-Amz-Cf-Id: X-Ndo__46J6K3BmsH5RnTnTmYROIsKO59xrsB1G9URdiZ4SEz9NCsA==
Page title: SIYA
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>SIYA</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
<link rel="stylesheet" href="./styles.css">
<link rel="stylesheet" href="./mobile.css">
<link rel="stylesheet" href="./index.css">
<link rel="stylesheet" href="./css/mcp-loader.css">
<link rel="stylesheet" href="./css/agent-selector.css">
<link rel="stylesheet" href="./css/power-toggle.css">
<link rel="stylesheet" href="./css/model-selector.css">
<link rel="stylesheet" href="./css/profile-dropdown.css">
<link rel="stylesheet" href="./css/settings-menu.css">
<link rel="stylesheet" href="./css/history-sidebar.css">
<link rel="stylesheet" href="./css/dropdown-menu.css">
<link rel="stylesheet" href="./css/file-viewer.css">
<link rel="stylesheet" href="./css/scroll-buttons.css">
<link rel="stylesheet" href="./css/automations-modal.css">
<link rel="stylesheet" href="./css/voice-recording.css">
<link rel="stylesheet" href="./css/session-prompt.css">
<link rel="stylesheet" href="./css/landing.css">
<link rel="icon" href="assets/siya-icon.png" type="image/png" />
<!-- Initial Loader Styles - Must load immediately -->
<style id="initial-loader-animation">
@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}
#initial-health-loader {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: white;
display: flex;
justify-content: center;
align-items: center;
z-index: 99998;
}
#initial-health-loader .spinner {
width: 40px;
height: 40px;
border: 3px solid #e3f2fd;
border-top: 3px solid #2196F3;
border-radius: 50%;
animation: spin 0.8s linear infinite;
}
body.loading {
display: none !important;
}
</style>
<!-- Early Authentication Check - Must be first to prevent unauthorized access -->
<script>
// Immediate authentication check before any page rendering
(function() {
// Check if user is logged in
const isLoggedIn = localStorage.getItem('isLoggedIn');
if (!isLoggedIn || isLoggedIn !== 'true') {
// Not logged in - redirect to login
window.location.replace('login.html');
}
// Check hasVmAccess to determine which view to show
const userInfo = localStorage.getItem('userInfo');
let hasVmAccess = true; // Default to true
if (userInfo) {
try {
const parsedInfo = JSON.parse(userInfo);
hasVmAccess = parsedInfo?.hasVmAccess ?? true;
} catch (e) {
console.error('Error parsing userInfo:', e);
}
}
// Store hasVmAccess for use after page loads
window.__hasVmAccess = hasVmAccess;
})();
</script>
<script src="./js/dynamic-favicon.js"></script>
<script src="./js/tab-visibility.js"></script>
<!-- Add showdown library -->
<script src="https://cdn.jsdelivr.net/npm/showdown/dist/showdown.min.js"></script>
<!-- Add DOMPurify for XSS protection -->
<script src="https://cdn.jsdelivr.net/npm/dompurify@3.0.8/dist/purify.min.js"></script>
<!-- Add Monaco Editor -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.44.0/min/vs/loader.min.js"></script>
<!-- Add PostEventSource library -->
<script src="./stream-post-client.js"></script>
<!-- Add domain config FIRST - must load before all other scripts -->
<script src
Open service 18.173.154.15:80 · kline.siya.com
2026-01-09 08:38
HTTP/1.1 301 Moved Permanently Server: CloudFront Date: Fri, 09 Jan 2026 08:38:04 GMT Content-Type: text/html Content-Length: 167 Connection: close Location: https://kline.siya.com/ X-Cache: Redirect from cloudfront Via: 1.1 3346ad1679ff01fe81e117084323b814.cloudfront.net (CloudFront) X-Amz-Cf-Pop: MUC50-P3 X-Amz-Cf-Id: HAfwX-9S61RiVi93AMeHQ49zAX_ygSU2is5L3auphMufGBbOxI0yEw== Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body> <center><h1>301 Moved Permanently</h1></center> <hr><center>CloudFront</center> </body> </html>
Open service 18.173.154.10:80 · kline.siya.com
2026-01-09 08:38
HTTP/1.1 301 Moved Permanently Server: CloudFront Date: Fri, 09 Jan 2026 08:38:04 GMT Content-Type: text/html Content-Length: 167 Connection: close Location: https://kline.siya.com/ X-Cache: Redirect from cloudfront Via: 1.1 b9c5f3514baef1f70c91fc9b0be37d2e.cloudfront.net (CloudFront) X-Amz-Cf-Pop: MUC50-P3 X-Amz-Cf-Id: OVpIOEaTLYlvpCry6SWORnwbXpaSPkg9xhoOTR5ZKF3ZGr9zKdd8bg== Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body> <center><h1>301 Moved Permanently</h1></center> <hr><center>CloudFront</center> </body> </html>
Open service 2600:9000:26db:7e00:1:eba8:2dc0:93a1:80 · kline.siya.com
2026-01-09 08:38
HTTP/1.1 301 Moved Permanently Server: CloudFront Date: Fri, 09 Jan 2026 08:38:04 GMT Content-Type: text/html Content-Length: 167 Connection: close Location: https://kline.siya.com/ X-Cache: Redirect from cloudfront Via: 1.1 d11d7fba872e54649066e59f703ad3e6.cloudfront.net (CloudFront) X-Amz-Cf-Pop: MUC50-P3 X-Amz-Cf-Id: _uzQpeGwz5lGW6rTkVI9dKKuw6NzwP2UxqzOkjFToGE_spau9uGqVQ== Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body> <center><h1>301 Moved Permanently</h1></center> <hr><center>CloudFront</center> </body> </html>
Open service 2600:9000:26db:d000:1:eba8:2dc0:93a1:80 · kline.siya.com
2026-01-09 08:38
HTTP/1.1 301 Moved Permanently Server: CloudFront Date: Fri, 09 Jan 2026 08:38:05 GMT Content-Type: text/html Content-Length: 167 Connection: close Location: https://kline.siya.com/ X-Cache: Redirect from cloudfront Via: 1.1 549ff9961325ec88cf02baa6f818172a.cloudfront.net (CloudFront) X-Amz-Cf-Pop: MUC50-P3 X-Amz-Cf-Id: N8H3tlG07-Pn6QRNBW1gD70hBYLa9sobXh9x22eUS24lowsbet2DUA== Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body> <center><h1>301 Moved Permanently</h1></center> <hr><center>CloudFront</center> </body> </html>
Open service 2600:9000:26db:e200:1:eba8:2dc0:93a1:80 · kline.siya.com
2026-01-09 08:38
HTTP/1.1 301 Moved Permanently Server: CloudFront Date: Fri, 09 Jan 2026 08:38:04 GMT Content-Type: text/html Content-Length: 167 Connection: close Location: https://kline.siya.com/ X-Cache: Redirect from cloudfront Via: 1.1 918459d66ab0cca4258acacb6d3f6edc.cloudfront.net (CloudFront) X-Amz-Cf-Pop: MUC50-P3 X-Amz-Cf-Id: 5XbFZee_0ohcfRUxLXxev2HtHo85W7Fo9aspeGKpaA3Y6np8PypxxA== Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body> <center><h1>301 Moved Permanently</h1></center> <hr><center>CloudFront</center> </body> </html>
Open service 2600:9000:26db:5000:1:eba8:2dc0:93a1:80 · kline.siya.com
2026-01-09 08:38
HTTP/1.1 301 Moved Permanently Server: CloudFront Date: Fri, 09 Jan 2026 08:38:04 GMT Content-Type: text/html Content-Length: 167 Connection: close Location: https://kline.siya.com/ X-Cache: Redirect from cloudfront Via: 1.1 549ff9961325ec88cf02baa6f818172a.cloudfront.net (CloudFront) X-Amz-Cf-Pop: MUC50-P3 X-Amz-Cf-Id: DCEmTdfG1qF2ZpBApyNIqDdeh4W0R1A4icOdQSmTIY7DcFvto0eXpQ== Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body> <center><h1>301 Moved Permanently</h1></center> <hr><center>CloudFront</center> </body> </html>
Open service 2600:9000:26db:7200:1:eba8:2dc0:93a1:80 · kline.siya.com
2026-01-09 08:38
HTTP/1.1 301 Moved Permanently Server: CloudFront Date: Fri, 09 Jan 2026 08:38:04 GMT Content-Type: text/html Content-Length: 167 Connection: close Location: https://kline.siya.com/ X-Cache: Redirect from cloudfront Via: 1.1 129b4a1f09d5313624ec15fced944d6e.cloudfront.net (CloudFront) X-Amz-Cf-Pop: MUC50-P3 X-Amz-Cf-Id: F2GLz6sg-Q0944QEHoFTDvCTINO2Gi7AJSjiaHYWky4tLwdkU7JCXg== Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body> <center><h1>301 Moved Permanently</h1></center> <hr><center>CloudFront</center> </body> </html>
Open service 2600:9000:26db:d000:1:eba8:2dc0:93a1:443 · kline.siya.com
2026-01-09 08:38
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 88159
Connection: close
Date: Fri, 09 Jan 2026 08:38:06 GMT
Last-Modified: Fri, 09 Jan 2026 07:21:31 GMT
x-amz-version-id: null
ETag: "40f5f050437d6c3346c31ff8bbbfc356"
Server: AmazonS3
X-Cache: Miss from cloudfront
Via: 1.1 129b4a1f09d5313624ec15fced944d6e.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: MUC50-P3
X-Amz-Cf-Id: 8hMOrATtm1-5UYNsvZs5avEYpwoBOsEtI7tWzZk4tHzseVR7T-RmOw==
Page title: SIYA
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>SIYA</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
<link rel="stylesheet" href="./styles.css">
<link rel="stylesheet" href="./mobile.css">
<link rel="stylesheet" href="./index.css">
<link rel="stylesheet" href="./css/mcp-loader.css">
<link rel="stylesheet" href="./css/agent-selector.css">
<link rel="stylesheet" href="./css/power-toggle.css">
<link rel="stylesheet" href="./css/model-selector.css">
<link rel="stylesheet" href="./css/profile-dropdown.css">
<link rel="stylesheet" href="./css/settings-menu.css">
<link rel="stylesheet" href="./css/history-sidebar.css">
<link rel="stylesheet" href="./css/dropdown-menu.css">
<link rel="stylesheet" href="./css/file-viewer.css">
<link rel="stylesheet" href="./css/scroll-buttons.css">
<link rel="stylesheet" href="./css/automations-modal.css">
<link rel="stylesheet" href="./css/voice-recording.css">
<link rel="stylesheet" href="./css/session-prompt.css">
<link rel="stylesheet" href="./css/landing.css">
<link rel="icon" href="assets/siya-icon.png" type="image/png" />
<!-- Initial Loader Styles - Must load immediately -->
<style id="initial-loader-animation">
@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}
#initial-health-loader {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: white;
display: flex;
justify-content: center;
align-items: center;
z-index: 99998;
}
#initial-health-loader .spinner {
width: 40px;
height: 40px;
border: 3px solid #e3f2fd;
border-top: 3px solid #2196F3;
border-radius: 50%;
animation: spin 0.8s linear infinite;
}
body.loading {
display: none !important;
}
</style>
<!-- Early Authentication Check - Must be first to prevent unauthorized access -->
<script>
// Immediate authentication check before any page rendering
(function() {
// Check if user is logged in
const isLoggedIn = localStorage.getItem('isLoggedIn');
if (!isLoggedIn || isLoggedIn !== 'true') {
// Not logged in - redirect to login
window.location.replace('login.html');
}
// Check hasVmAccess to determine which view to show
const userInfo = localStorage.getItem('userInfo');
let hasVmAccess = true; // Default to true
if (userInfo) {
try {
const parsedInfo = JSON.parse(userInfo);
hasVmAccess = parsedInfo?.hasVmAccess ?? true;
} catch (e) {
console.error('Error parsing userInfo:', e);
}
}
// Store hasVmAccess for use after page loads
window.__hasVmAccess = hasVmAccess;
})();
</script>
<script src="./js/dynamic-favicon.js"></script>
<script src="./js/tab-visibility.js"></script>
<!-- Add showdown library -->
<script src="https://cdn.jsdelivr.net/npm/showdown/dist/showdown.min.js"></script>
<!-- Add DOMPurify for XSS protection -->
<script src="https://cdn.jsdelivr.net/npm/dompurify@3.0.8/dist/purify.min.js"></script>
<!-- Add Monaco Editor -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.44.0/min/vs/loader.min.js"></script>
<!-- Add PostEventSource library -->
<script src="./stream-post-client.js"></script>
<!-- Add domain config FIRST - must load before all other scripts -->
<script src
Open service 2600:9000:26db:e400:1:eba8:2dc0:93a1:80 · kline.siya.com
2026-01-09 08:38
HTTP/1.1 301 Moved Permanently Server: CloudFront Date: Fri, 09 Jan 2026 08:38:04 GMT Content-Type: text/html Content-Length: 167 Connection: close Location: https://kline.siya.com/ X-Cache: Redirect from cloudfront Via: 1.1 f620f5422d3678dbdbb8544d75a30f78.cloudfront.net (CloudFront) X-Amz-Cf-Pop: MUC50-P3 X-Amz-Cf-Id: LVyUSHtfDYsbwkTURqxZOFIp9TE-uTKQC52bxQ1Omt1MidlZwtfLkg== Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body> <center><h1>301 Moved Permanently</h1></center> <hr><center>CloudFront</center> </body> </html>
Open service 18.173.154.55:443 · kline.siya.com
2026-01-09 08:38
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 88159
Connection: close
Date: Fri, 09 Jan 2026 08:38:05 GMT
Last-Modified: Fri, 09 Jan 2026 07:21:31 GMT
x-amz-version-id: null
ETag: "40f5f050437d6c3346c31ff8bbbfc356"
Server: AmazonS3
X-Cache: Miss from cloudfront
Via: 1.1 18d0e038a55eccdc9f0ad716edf64962.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: MUC50-P3
X-Amz-Cf-Id: 42GuD5NSbBJTReF7XqBRNoKJ5vCTwBhPdxuqsX_fu2JNs9O62PpPEA==
Page title: SIYA
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>SIYA</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
<link rel="stylesheet" href="./styles.css">
<link rel="stylesheet" href="./mobile.css">
<link rel="stylesheet" href="./index.css">
<link rel="stylesheet" href="./css/mcp-loader.css">
<link rel="stylesheet" href="./css/agent-selector.css">
<link rel="stylesheet" href="./css/power-toggle.css">
<link rel="stylesheet" href="./css/model-selector.css">
<link rel="stylesheet" href="./css/profile-dropdown.css">
<link rel="stylesheet" href="./css/settings-menu.css">
<link rel="stylesheet" href="./css/history-sidebar.css">
<link rel="stylesheet" href="./css/dropdown-menu.css">
<link rel="stylesheet" href="./css/file-viewer.css">
<link rel="stylesheet" href="./css/scroll-buttons.css">
<link rel="stylesheet" href="./css/automations-modal.css">
<link rel="stylesheet" href="./css/voice-recording.css">
<link rel="stylesheet" href="./css/session-prompt.css">
<link rel="stylesheet" href="./css/landing.css">
<link rel="icon" href="assets/siya-icon.png" type="image/png" />
<!-- Initial Loader Styles - Must load immediately -->
<style id="initial-loader-animation">
@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}
#initial-health-loader {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: white;
display: flex;
justify-content: center;
align-items: center;
z-index: 99998;
}
#initial-health-loader .spinner {
width: 40px;
height: 40px;
border: 3px solid #e3f2fd;
border-top: 3px solid #2196F3;
border-radius: 50%;
animation: spin 0.8s linear infinite;
}
body.loading {
display: none !important;
}
</style>
<!-- Early Authentication Check - Must be first to prevent unauthorized access -->
<script>
// Immediate authentication check before any page rendering
(function() {
// Check if user is logged in
const isLoggedIn = localStorage.getItem('isLoggedIn');
if (!isLoggedIn || isLoggedIn !== 'true') {
// Not logged in - redirect to login
window.location.replace('login.html');
}
// Check hasVmAccess to determine which view to show
const userInfo = localStorage.getItem('userInfo');
let hasVmAccess = true; // Default to true
if (userInfo) {
try {
const parsedInfo = JSON.parse(userInfo);
hasVmAccess = parsedInfo?.hasVmAccess ?? true;
} catch (e) {
console.error('Error parsing userInfo:', e);
}
}
// Store hasVmAccess for use after page loads
window.__hasVmAccess = hasVmAccess;
})();
</script>
<script src="./js/dynamic-favicon.js"></script>
<script src="./js/tab-visibility.js"></script>
<!-- Add showdown library -->
<script src="https://cdn.jsdelivr.net/npm/showdown/dist/showdown.min.js"></script>
<!-- Add DOMPurify for XSS protection -->
<script src="https://cdn.jsdelivr.net/npm/dompurify@3.0.8/dist/purify.min.js"></script>
<!-- Add Monaco Editor -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.44.0/min/vs/loader.min.js"></script>
<!-- Add PostEventSource library -->
<script src="./stream-post-client.js"></script>
<!-- Add domain config FIRST - must load before all other scripts -->
<script src
Open service 18.173.154.10:443 · kline.siya.com
2026-01-09 08:38
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 88159
Connection: close
Date: Fri, 09 Jan 2026 08:38:06 GMT
Last-Modified: Fri, 09 Jan 2026 07:21:31 GMT
x-amz-version-id: null
ETag: "40f5f050437d6c3346c31ff8bbbfc356"
Server: AmazonS3
X-Cache: Miss from cloudfront
Via: 1.1 66e1af4a9e82225c770ca97b3baaf86e.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: MUC50-P3
X-Amz-Cf-Id: 6UPYRPIhfzEcZksnoFo_xIpAIub_WOVpdLkBVvPc5r79VsdkXGfl7w==
Page title: SIYA
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>SIYA</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
<link rel="stylesheet" href="./styles.css">
<link rel="stylesheet" href="./mobile.css">
<link rel="stylesheet" href="./index.css">
<link rel="stylesheet" href="./css/mcp-loader.css">
<link rel="stylesheet" href="./css/agent-selector.css">
<link rel="stylesheet" href="./css/power-toggle.css">
<link rel="stylesheet" href="./css/model-selector.css">
<link rel="stylesheet" href="./css/profile-dropdown.css">
<link rel="stylesheet" href="./css/settings-menu.css">
<link rel="stylesheet" href="./css/history-sidebar.css">
<link rel="stylesheet" href="./css/dropdown-menu.css">
<link rel="stylesheet" href="./css/file-viewer.css">
<link rel="stylesheet" href="./css/scroll-buttons.css">
<link rel="stylesheet" href="./css/automations-modal.css">
<link rel="stylesheet" href="./css/voice-recording.css">
<link rel="stylesheet" href="./css/session-prompt.css">
<link rel="stylesheet" href="./css/landing.css">
<link rel="icon" href="assets/siya-icon.png" type="image/png" />
<!-- Initial Loader Styles - Must load immediately -->
<style id="initial-loader-animation">
@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}
#initial-health-loader {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: white;
display: flex;
justify-content: center;
align-items: center;
z-index: 99998;
}
#initial-health-loader .spinner {
width: 40px;
height: 40px;
border: 3px solid #e3f2fd;
border-top: 3px solid #2196F3;
border-radius: 50%;
animation: spin 0.8s linear infinite;
}
body.loading {
display: none !important;
}
</style>
<!-- Early Authentication Check - Must be first to prevent unauthorized access -->
<script>
// Immediate authentication check before any page rendering
(function() {
// Check if user is logged in
const isLoggedIn = localStorage.getItem('isLoggedIn');
if (!isLoggedIn || isLoggedIn !== 'true') {
// Not logged in - redirect to login
window.location.replace('login.html');
}
// Check hasVmAccess to determine which view to show
const userInfo = localStorage.getItem('userInfo');
let hasVmAccess = true; // Default to true
if (userInfo) {
try {
const parsedInfo = JSON.parse(userInfo);
hasVmAccess = parsedInfo?.hasVmAccess ?? true;
} catch (e) {
console.error('Error parsing userInfo:', e);
}
}
// Store hasVmAccess for use after page loads
window.__hasVmAccess = hasVmAccess;
})();
</script>
<script src="./js/dynamic-favicon.js"></script>
<script src="./js/tab-visibility.js"></script>
<!-- Add showdown library -->
<script src="https://cdn.jsdelivr.net/npm/showdown/dist/showdown.min.js"></script>
<!-- Add DOMPurify for XSS protection -->
<script src="https://cdn.jsdelivr.net/npm/dompurify@3.0.8/dist/purify.min.js"></script>
<!-- Add Monaco Editor -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.44.0/min/vs/loader.min.js"></script>
<!-- Add PostEventSource library -->
<script src="./stream-post-client.js"></script>
<!-- Add domain config FIRST - must load before all other scripts -->
<script src
Open service 18.173.154.97:443 · kline.siya.com
2026-01-09 08:38
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 88159
Connection: close
Date: Fri, 09 Jan 2026 08:38:06 GMT
Last-Modified: Fri, 09 Jan 2026 07:21:31 GMT
x-amz-version-id: null
ETag: "40f5f050437d6c3346c31ff8bbbfc356"
Server: AmazonS3
X-Cache: Miss from cloudfront
Via: 1.1 08cfbbb6f1b1bf4bc1e8ab1a071b4154.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: MUC50-P3
X-Amz-Cf-Id: quGTNQs_kSuGIjfzfkPe6w6UcOsw2t4aw_lemZmcWTnlzSNyGJnIbA==
Page title: SIYA
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>SIYA</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
<link rel="stylesheet" href="./styles.css">
<link rel="stylesheet" href="./mobile.css">
<link rel="stylesheet" href="./index.css">
<link rel="stylesheet" href="./css/mcp-loader.css">
<link rel="stylesheet" href="./css/agent-selector.css">
<link rel="stylesheet" href="./css/power-toggle.css">
<link rel="stylesheet" href="./css/model-selector.css">
<link rel="stylesheet" href="./css/profile-dropdown.css">
<link rel="stylesheet" href="./css/settings-menu.css">
<link rel="stylesheet" href="./css/history-sidebar.css">
<link rel="stylesheet" href="./css/dropdown-menu.css">
<link rel="stylesheet" href="./css/file-viewer.css">
<link rel="stylesheet" href="./css/scroll-buttons.css">
<link rel="stylesheet" href="./css/automations-modal.css">
<link rel="stylesheet" href="./css/voice-recording.css">
<link rel="stylesheet" href="./css/session-prompt.css">
<link rel="stylesheet" href="./css/landing.css">
<link rel="icon" href="assets/siya-icon.png" type="image/png" />
<!-- Initial Loader Styles - Must load immediately -->
<style id="initial-loader-animation">
@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}
#initial-health-loader {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: white;
display: flex;
justify-content: center;
align-items: center;
z-index: 99998;
}
#initial-health-loader .spinner {
width: 40px;
height: 40px;
border: 3px solid #e3f2fd;
border-top: 3px solid #2196F3;
border-radius: 50%;
animation: spin 0.8s linear infinite;
}
body.loading {
display: none !important;
}
</style>
<!-- Early Authentication Check - Must be first to prevent unauthorized access -->
<script>
// Immediate authentication check before any page rendering
(function() {
// Check if user is logged in
const isLoggedIn = localStorage.getItem('isLoggedIn');
if (!isLoggedIn || isLoggedIn !== 'true') {
// Not logged in - redirect to login
window.location.replace('login.html');
}
// Check hasVmAccess to determine which view to show
const userInfo = localStorage.getItem('userInfo');
let hasVmAccess = true; // Default to true
if (userInfo) {
try {
const parsedInfo = JSON.parse(userInfo);
hasVmAccess = parsedInfo?.hasVmAccess ?? true;
} catch (e) {
console.error('Error parsing userInfo:', e);
}
}
// Store hasVmAccess for use after page loads
window.__hasVmAccess = hasVmAccess;
})();
</script>
<script src="./js/dynamic-favicon.js"></script>
<script src="./js/tab-visibility.js"></script>
<!-- Add showdown library -->
<script src="https://cdn.jsdelivr.net/npm/showdown/dist/showdown.min.js"></script>
<!-- Add DOMPurify for XSS protection -->
<script src="https://cdn.jsdelivr.net/npm/dompurify@3.0.8/dist/purify.min.js"></script>
<!-- Add Monaco Editor -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.44.0/min/vs/loader.min.js"></script>
<!-- Add PostEventSource library -->
<script src="./stream-post-client.js"></script>
<!-- Add domain config FIRST - must load before all other scripts -->
<script src
Open service 2600:9000:26db:7200:1:eba8:2dc0:93a1:443 · kline.siya.com
2026-01-09 08:38
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 88159
Connection: close
Date: Fri, 09 Jan 2026 08:38:05 GMT
Last-Modified: Fri, 09 Jan 2026 07:21:31 GMT
x-amz-version-id: null
ETag: "40f5f050437d6c3346c31ff8bbbfc356"
Server: AmazonS3
X-Cache: Miss from cloudfront
Via: 1.1 d11d7fba872e54649066e59f703ad3e6.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: MUC50-P3
X-Amz-Cf-Id: B6ZelBkp_bIljkIAObMeGcTwSbW1neXUArmYOVl2rmXo0XWxDXjW_Q==
Page title: SIYA
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>SIYA</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
<link rel="stylesheet" href="./styles.css">
<link rel="stylesheet" href="./mobile.css">
<link rel="stylesheet" href="./index.css">
<link rel="stylesheet" href="./css/mcp-loader.css">
<link rel="stylesheet" href="./css/agent-selector.css">
<link rel="stylesheet" href="./css/power-toggle.css">
<link rel="stylesheet" href="./css/model-selector.css">
<link rel="stylesheet" href="./css/profile-dropdown.css">
<link rel="stylesheet" href="./css/settings-menu.css">
<link rel="stylesheet" href="./css/history-sidebar.css">
<link rel="stylesheet" href="./css/dropdown-menu.css">
<link rel="stylesheet" href="./css/file-viewer.css">
<link rel="stylesheet" href="./css/scroll-buttons.css">
<link rel="stylesheet" href="./css/automations-modal.css">
<link rel="stylesheet" href="./css/voice-recording.css">
<link rel="stylesheet" href="./css/session-prompt.css">
<link rel="stylesheet" href="./css/landing.css">
<link rel="icon" href="assets/siya-icon.png" type="image/png" />
<!-- Initial Loader Styles - Must load immediately -->
<style id="initial-loader-animation">
@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}
#initial-health-loader {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: white;
display: flex;
justify-content: center;
align-items: center;
z-index: 99998;
}
#initial-health-loader .spinner {
width: 40px;
height: 40px;
border: 3px solid #e3f2fd;
border-top: 3px solid #2196F3;
border-radius: 50%;
animation: spin 0.8s linear infinite;
}
body.loading {
display: none !important;
}
</style>
<!-- Early Authentication Check - Must be first to prevent unauthorized access -->
<script>
// Immediate authentication check before any page rendering
(function() {
// Check if user is logged in
const isLoggedIn = localStorage.getItem('isLoggedIn');
if (!isLoggedIn || isLoggedIn !== 'true') {
// Not logged in - redirect to login
window.location.replace('login.html');
}
// Check hasVmAccess to determine which view to show
const userInfo = localStorage.getItem('userInfo');
let hasVmAccess = true; // Default to true
if (userInfo) {
try {
const parsedInfo = JSON.parse(userInfo);
hasVmAccess = parsedInfo?.hasVmAccess ?? true;
} catch (e) {
console.error('Error parsing userInfo:', e);
}
}
// Store hasVmAccess for use after page loads
window.__hasVmAccess = hasVmAccess;
})();
</script>
<script src="./js/dynamic-favicon.js"></script>
<script src="./js/tab-visibility.js"></script>
<!-- Add showdown library -->
<script src="https://cdn.jsdelivr.net/npm/showdown/dist/showdown.min.js"></script>
<!-- Add DOMPurify for XSS protection -->
<script src="https://cdn.jsdelivr.net/npm/dompurify@3.0.8/dist/purify.min.js"></script>
<!-- Add Monaco Editor -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.44.0/min/vs/loader.min.js"></script>
<!-- Add PostEventSource library -->
<script src="./stream-post-client.js"></script>
<!-- Add domain config FIRST - must load before all other scripts -->
<script src
Open service 2600:9000:26db:800:1:eba8:2dc0:93a1:80 · kline.siya.com
2026-01-09 08:38
HTTP/1.1 301 Moved Permanently Server: CloudFront Date: Fri, 09 Jan 2026 08:38:04 GMT Content-Type: text/html Content-Length: 167 Connection: close Location: https://kline.siya.com/ X-Cache: Redirect from cloudfront Via: 1.1 bc5539655ffc88be2596a0239ddfae52.cloudfront.net (CloudFront) X-Amz-Cf-Pop: MUC50-P3 X-Amz-Cf-Id: izo_8ArvcW-wueYcxJ_9rhzkNgS0R5WuPNoghk1bdDek8li24OPXOg== Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body> <center><h1>301 Moved Permanently</h1></center> <hr><center>CloudFront</center> </body> </html>
Open service 18.173.154.97:80 · kline.siya.com
2026-01-09 08:38
HTTP/1.1 301 Moved Permanently Server: CloudFront Date: Fri, 09 Jan 2026 08:38:04 GMT Content-Type: text/html Content-Length: 167 Connection: close Location: https://kline.siya.com/ X-Cache: Redirect from cloudfront Via: 1.1 50cfe0dc07dec77718bfa8346e608936.cloudfront.net (CloudFront) X-Amz-Cf-Pop: MUC50-P3 X-Amz-Cf-Id: CnSeMyjYaJVdjUPEUOoI8g374L1AwzF7GRCeZWAL6P1s2sfuoXdY_g== Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body> <center><h1>301 Moved Permanently</h1></center> <hr><center>CloudFront</center> </body> </html>
2600:9000:26db:c200:1:eba8:2dc0:93a1 1 2600:9000:26db:2000:1:eba8:2dc0:93a1 1 2600:9000:26db:3000:1:eba8:2dc0:93a1 1 18.173.154.55 1 18.173.154.10 1 2600:9000:26db:f200:1:eba8:2dc0:93a1 1 18.173.154.97 1 2600:9000:26db:9e00:1:eba8:2dc0:93a1 1 2600:9000:26db:6a00:1:eba8:2dc0:93a1 1 2600:9000:26db:f800:1:eba8:2dc0:93a1 1 18.173.154.15 1 2600:9000:26db:cc00:1:eba8:2dc0:93a1 1 2600:9000:26db:0:1:eba8:2dc0:93a1 1 2600:9000:26db:e400:1:eba8:2dc0:93a1 1 2600:9000:26db:800:1:eba8:2dc0:93a1 1 2600:9000:26db:e200:1:eba8:2dc0:93a1 1 2600:9000:26db:7e00:1:eba8:2dc0:93a1 1 2600:9000:26db:5000:1:eba8:2dc0:93a1 1 2600:9000:26db:d000:1:eba8:2dc0:93a1 1 2600:9000:26db:7200:1:eba8:2dc0:93a1 1