s3d has no rename command, so a user named once kept that name. A user is
one row in s3d's database (id, name) and keys and drives point at the id,
so Pithos stops s3d (gently, after any upload), changes the name in
place, updates its own public-link records and starts s3d again: access
keys, secrets and drives stay as they are and S3 apps keep working.
Checked against s3d v0.2.0: the old key still lists the same drives,
taken and invalid names are refused.
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.