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>
|
|
|
|
|
|
2026-10-03 20:42:21 +02:00
|
|
|
<div id="locked" class="signin" hidden>
|
|
|
|
|
<div class="card signin-card">
|
|
|
|
|
<img src="icon.svg" alt="" width="48" height="48">
|
|
|
|
|
<h1>Pithos is locked</h1>
|
|
|
|
|
<p class="muted">Unlock your Theseus vault with your PIN or master password to open Pithos.</p>
|
|
|
|
|
<button class="btn primary" type="button" id="unlock-btn">Unlock</button>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
|
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
|
|
|
<div id="app" class="app" hidden>
|
|
|
|
|
<aside class="sidebar">
|
2026-10-04 02:16:09 +02:00
|
|
|
<div class="brand"><img src="icon.svg" alt="" width="28" height="28"><span>Pithos</span><span class="here" id="here"></span></div>
|
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
|
|
|
<nav id="nav">
|
Pithos: navigation in setup order, with the account on top
The menu listed Overview, Drives, Users & keys, Account, Settings, Logs:
the Sia account that everything depends on came fourth, and Drives came
before the users that own them. It now follows the order you set things
up in: Accounts (a card naming the account, with its free space),
Overview, Users & keys, Drives; Settings and Logs, which are about s3d
itself, sit under an "s3d" heading. Same order on desktop and in the
☰ menu; the card updates when the account is renamed or switched.
2026-10-04 14:12:01 +02:00
|
|
|
<a href="#/account" data-view="account" data-title="Accounts" class="nav-account" title="Your Sia account: the storage everything here is kept in">
|
|
|
|
|
<span class="na-label">Accounts</span>
|
|
|
|
|
<span class="na-name" id="na-name">Sia account</span>
|
|
|
|
|
<span class="na-space" id="na-space" hidden></span>
|
|
|
|
|
</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="#/users" data-view="users">Users & keys</a>
|
Pithos: navigation in setup order, with the account on top
The menu listed Overview, Drives, Users & keys, Account, Settings, Logs:
the Sia account that everything depends on came fourth, and Drives came
before the users that own them. It now follows the order you set things
up in: Accounts (a card naming the account, with its free space),
Overview, Users & keys, Drives; Settings and Logs, which are about s3d
itself, sit under an "s3d" heading. Same order on desktop and in the
☰ menu; the card updates when the account is renamed or switched.
2026-10-04 14:12:01 +02:00
|
|
|
<a href="#/buckets" data-view="buckets">Drives</a>
|
|
|
|
|
<div class="nav-group" role="presentation">s3d</div>
|
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="#/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>
|
Pithos 0.3.8: ☰ menu, one Account page, compact file rows
In the sidebar the menu now drops down from a ☰ in the top-right
corner, opposite the Pithos name, and holds every page plus Open as
full page, instead of pushing the page down.
Get started and Sia connection become one Account page: the guide
until an account is connected, then the account with its label, Add
another account (the guide, titled Add a Sia account) and the other
accounts on this computer, each one click to switch back to.
On narrow screens file rows show Download and Share as icons, hide
the size, and wrap names to two lines at most.
2026-10-04 03:00:58 +02:00
|
|
|
<button class="nav-toggle" id="nav-toggle" type="button" aria-label="Menu" aria-haspopup="menu" aria-expanded="false" aria-controls="nav">☰</button>
|
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
|
|
|
</aside>
|
|
|
|
|
<main id="main"></main>
|
|
|
|
|
</div>
|
|
|
|
|
|
2026-10-04 02:38:19 +02:00
|
|
|
<footer class="brandfoot" id="brandfoot" hidden>
|
|
|
|
|
<a class="brandlink" id="brandlink" href="https://pithos.sia/" target="_blank" rel="noopener" title="Open pithos.sia"><img src="icon.svg" alt="" width="13" height="13"><span>pithos.sia</span></a>
|
|
|
|
|
<span class="brandfoot-right">
|
|
|
|
|
<button class="brandcheck" id="brandcheck" type="button" title="Check for updates" aria-label="Check for updates" hidden>↻</button>
|
|
|
|
|
<button class="brandupd" id="brandupd" type="button" hidden></button>
|
|
|
|
|
<span class="brandver" id="brandver"></span>
|
|
|
|
|
</span>
|
|
|
|
|
</footer>
|
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
|
|
|
<div id="modal-root"></div>
|
|
|
|
|
<div id="toasts" class="toasts" aria-live="polite"></div>
|
|
|
|
|
<script type="module" src="app.js"></script>
|
|
|
|
|
</body>
|
|
|
|
|
</html>
|