The service behind prometheus.x � standalone .x site that accepts app listings, scans binaries, and attaches signed scan reports.
Find a file
Local Dev 7950430aa0 prometheus: Dockerfile + docker-compose for the sidecar deploy
The VPS runs Caddy inside Docker as part of the Hephaestus stack (not
system-wide angie as the earlier deploy/README assumed), so the shape
of the deploy is: Prometheus runs as its own small docker-compose that
attaches to Hephaestus's existing network, and Hephaestus's Caddy
reverse-proxies prometheus.x → prometheus:3700.

Dockerfile: node:22-alpine base (keeps the image ~55 MB and gives us
node:sqlite stable), tini for signal handling, non-root `node` user,
one /data volume holding the DB + ed25519 service key + uploads +
snapshot build output.

docker-compose: one service, attaches hephaestus_default as external
network, env sourced from an .env file alongside the compose. The .env
is NOT committed (contains ADMIN_PUBLISHER, optional VirusTotal key,
optional payment config). Healthcheck polls /healthz.

The deploy/prometheus-service.service systemd unit from the earlier
commit is now unused on this host (kept for anyone deploying natively
on a non-dockered box).
2026-10-09 00:47:40 +02:00
deploy prometheus: Dockerfile + docker-compose for the sidecar deploy 2026-10-09 00:47:40 +02:00
public prometheus: scaffold the standalone service — pages, routing, static assets 2026-10-05 22:22:47 +02:00
scripts prometheus: weekly s3 snapshot of the browse surface to bns/prometheus 2026-10-08 21:42:54 +02:00
service prometheus: BCH payments — invoices, price oracle, admin reconcile 2026-10-08 21:52:01 +02:00
.gitignore prometheus: upload + ClamAV scan + signed scan reports 2026-10-05 22:41:55 +02:00
package-lock.json prometheus: signed listings — BIP-137 publisher sign, SQLite index 2026-10-08 01:48:12 +02:00
package.json prometheus: signed listings — BIP-137 publisher sign, SQLite index 2026-10-08 01:48:12 +02:00
README.md prometheus: scaffold the standalone service — pages, routing, static assets 2026-10-05 22:22:47 +02:00

Prometheus

The service behind prometheus.x — a standalone website that accepts app listings, scans the binaries, generates APS1 records for publishers to sign, and serves the browse pages.

The architecture decisions and the reasoning behind them live at _coordination/sessions/prometheus-x-architecture.md. Read that before touching the code; it answers the questions this directory otherwise invites ("why isn't this on Sia?", "why isn't the admin on another subdomain?", "why Node?").

service/     Node HTTP server, templates, scanner, storage, payments
public/      Static assets served under /static/
content/     Prose content in a form the templates render into pages

Run it locally

cd Prometheus
npm install          # none yet; placeholder for when deps show up
node service/server.js

Opens on http://127.0.0.1:3700 by default. Override with PORT=xxxx.

Layout

The server is one node:http listener behind a trivial map-based router. Pages are plain functions that return {title, description, body} and layout() wraps them in the common document shell. Static files under public/ are served directly.

There's no framework and no templating engine on purpose — a site this small does not earn a dependency surface, and the response-rendering path is short enough to read at a glance.