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
|
|
|
{
|
|
|
|
|
"name": "pithos",
|
2026-10-04 22:02:15 +02:00
|
|
|
"version": "0.3.17",
|
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
|
|
|
"description": "A control panel for s3d, the Sia S3 gateway: daemon, users and keys, buckets, upload pipeline.",
|
|
|
|
|
"license": "MPL-2.0",
|
|
|
|
|
"type": "module",
|
|
|
|
|
"main": "core/server.js",
|
2026-10-03 19:34:53 +02:00
|
|
|
"bin": {
|
|
|
|
|
"pithos-web": "bin/pithos-web.js"
|
|
|
|
|
},
|
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
|
|
|
"scripts": {
|
|
|
|
|
"web": "node bin/pithos-web.js",
|
|
|
|
|
"desktop": "electron desktop/main.cjs",
|
2026-10-04 20:45:04 +02:00
|
|
|
"test": "node --test test/*.test.js",
|
|
|
|
|
"icons": "electron scripts/make-icons.cjs",
|
|
|
|
|
"dist:win": "electron-builder --win nsis portable",
|
|
|
|
|
"dist:linux": "electron-builder --linux AppImage tar.gz",
|
|
|
|
|
"dist:mac": "electron-builder --mac dmg zip"
|
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
|
|
|
},
|
2026-10-03 19:34:53 +02:00
|
|
|
"engines": {
|
|
|
|
|
"node": ">=20"
|
|
|
|
|
},
|
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
|
|
|
"dependencies": {
|
|
|
|
|
"yaml": "^2.9.1"
|
|
|
|
|
},
|
|
|
|
|
"optionalDependencies": {
|
|
|
|
|
"@lydell/node-pty": "1.2.0-beta.15"
|
|
|
|
|
},
|
|
|
|
|
"devDependencies": {
|
2026-10-04 20:45:04 +02:00
|
|
|
"electron": "^44.5.1",
|
|
|
|
|
"electron-builder": "^25.1.8"
|
|
|
|
|
},
|
|
|
|
|
"author": "Silent Mode",
|
|
|
|
|
"homepage": "https://silentmode.st/pithos/",
|
|
|
|
|
"build": {
|
|
|
|
|
"appId": "st.silentmode.pithos",
|
|
|
|
|
"productName": "Pithos",
|
|
|
|
|
"artifactName": "Pithos-${version}-${arch}.${ext}",
|
|
|
|
|
"extraMetadata": {
|
|
|
|
|
"main": "desktop/main.cjs"
|
|
|
|
|
},
|
|
|
|
|
"directories": {
|
|
|
|
|
"output": "dist/desktop",
|
|
|
|
|
"buildResources": "desktop/icons"
|
|
|
|
|
},
|
|
|
|
|
"asar": true,
|
|
|
|
|
"asarUnpack": [
|
|
|
|
|
"node_modules/@lydell/**"
|
|
|
|
|
],
|
|
|
|
|
"npmRebuild": false,
|
|
|
|
|
"files": [
|
|
|
|
|
"core/**/*",
|
|
|
|
|
"ui/**/*",
|
|
|
|
|
"desktop/**/*",
|
|
|
|
|
"LICENSE",
|
|
|
|
|
"package.json",
|
|
|
|
|
"node_modules/**/*",
|
|
|
|
|
"!**/*.md",
|
|
|
|
|
"!**/*.map",
|
|
|
|
|
"!**/*.d.ts"
|
|
|
|
|
],
|
|
|
|
|
"win": {
|
|
|
|
|
"icon": "desktop/icons/icon.ico",
|
|
|
|
|
"target": [
|
|
|
|
|
"nsis",
|
|
|
|
|
"portable"
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
"nsis": {
|
|
|
|
|
"oneClick": false,
|
|
|
|
|
"perMachine": false,
|
|
|
|
|
"allowToChangeInstallationDirectory": true,
|
|
|
|
|
"installerIcon": "desktop/icons/icon.ico",
|
|
|
|
|
"uninstallerIcon": "desktop/icons/icon.ico",
|
|
|
|
|
"installerHeaderIcon": "desktop/icons/icon.ico",
|
|
|
|
|
"shortcutName": "Pithos",
|
|
|
|
|
"artifactName": "Pithos-Setup-${version}.${ext}"
|
|
|
|
|
},
|
|
|
|
|
"portable": {
|
|
|
|
|
"artifactName": "Pithos-${version}-portable.${ext}"
|
|
|
|
|
},
|
|
|
|
|
"linux": {
|
|
|
|
|
"icon": "desktop/icons/icon.png",
|
|
|
|
|
"category": "Utility",
|
|
|
|
|
"synopsis": "Decentralized cloud storage you own, on Sia"
|
|
|
|
|
},
|
|
|
|
|
"mac": {
|
|
|
|
|
"icon": "desktop/icons/icon.png",
|
|
|
|
|
"category": "public.app-category.utilities"
|
|
|
|
|
}
|
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
|
|
|
}
|
|
|
|
|
}
|