Pithos: a control panel for s3d, the Sia S3 gateway
s3d is driven entirely by a CLI and a two-route admin API, which keeps
Sia storage out of reach for anyone who does not live in a terminal.
Pithos wraps it: install the pinned s3d release (checksum verified),
start/stop and logs, indexer login, users and access keys, a bucket and
object browser with share links and public-read policies, and the
upload pipeline stats.
One control server (core/) serves one UI (ui/), and three hosts run it:
a web console, an Electron desktop window and a Theseus add-on, so a
feature lands everywhere at once. The server binds loopback, rejects
foreign Host headers, and signs views in with a one-time secret that
becomes a SameSite=Strict cookie. s3d login reads the recovery phrase
with term.ReadPassword, so it is driven through a pty, with a console
window fallback where the pty module is not shipped.
2026-10-03 19:02:50 +02:00
|
|
|
<!doctype html>
|
|
|
|
|
<html lang="en">
|
|
|
|
|
<head>
|
|
|
|
|
<meta charset="utf-8">
|
|
|
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
|
|
|
<title>Pithos</title>
|
|
|
|
|
<link rel="icon" href="icon.svg" type="image/svg+xml">
|
|
|
|
|
<link rel="stylesheet" href="app.css">
|
|
|
|
|
</head>
|
|
|
|
|
<body>
|
|
|
|
|
<div id="signin" class="signin" hidden>
|
|
|
|
|
<form class="card signin-card" id="signin-form">
|
|
|
|
|
<img src="icon.svg" alt="" width="48" height="48">
|
|
|
|
|
<h1>Pithos</h1>
|
|
|
|
|
<p class="muted" id="signin-hint">Enter the console password.</p>
|
|
|
|
|
<input type="password" id="signin-password" autocomplete="current-password" placeholder="Password" required>
|
|
|
|
|
<button class="btn primary" type="submit">Sign in</button>
|
|
|
|
|
<p class="error" id="signin-error" hidden></p>
|
|
|
|
|
</form>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div id="app" class="app" hidden>
|
|
|
|
|
<aside class="sidebar">
|
|
|
|
|
<div class="brand"><img src="icon.svg" alt="" width="28" height="28"><span>Pithos</span></div>
|
|
|
|
|
<nav id="nav">
|
2026-10-03 20:23:42 +02:00
|
|
|
<a href="#/start" data-view="start">Get started</a>
|
Pithos: a control panel for s3d, the Sia S3 gateway
s3d is driven entirely by a CLI and a two-route admin API, which keeps
Sia storage out of reach for anyone who does not live in a terminal.
Pithos wraps it: install the pinned s3d release (checksum verified),
start/stop and logs, indexer login, users and access keys, a bucket and
object browser with share links and public-read policies, and the
upload pipeline stats.
One control server (core/) serves one UI (ui/), and three hosts run it:
a web console, an Electron desktop window and a Theseus add-on, so a
feature lands everywhere at once. The server binds loopback, rejects
foreign Host headers, and signs views in with a one-time secret that
becomes a SameSite=Strict cookie. s3d login reads the recovery phrase
with term.ReadPassword, so it is driven through a pty, with a console
window fallback where the pty module is not shipped.
2026-10-03 19:02:50 +02:00
|
|
|
<a href="#/overview" data-view="overview">Overview</a>
|
|
|
|
|
<a href="#/buckets" data-view="buckets">Buckets</a>
|
|
|
|
|
<a href="#/users" data-view="users">Users & keys</a>
|
|
|
|
|
<a href="#/setup" data-view="setup">Sia connection</a>
|
|
|
|
|
<a href="#/settings" data-view="settings">Settings</a>
|
|
|
|
|
<a href="#/logs" data-view="logs">Logs</a>
|
|
|
|
|
</nav>
|
|
|
|
|
<div class="daemon-pill" id="daemon-pill"><span class="dot"></span><span class="label">…</span></div>
|
|
|
|
|
</aside>
|
|
|
|
|
<main id="main"></main>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div id="modal-root"></div>
|
|
|
|
|
<div id="toasts" class="toasts" aria-live="polite"></div>
|
|
|
|
|
<script type="module" src="app.js"></script>
|
|
|
|
|
</body>
|
|
|
|
|
</html>
|