The service behind prometheus.x � standalone .x site that accepts app listings, scans binaries, and attaches signed scan reports.
Find a file
Local Dev a6606d0c49 prometheus: rework snapshot timer unit for the docker deploy
The .service unit assumed a native systemd install (ExecStart=/usr/bin/node
/opt/prometheus/scripts/snapshot.mjs --upload) that does not match how the
service actually runs on p2pexchange — it is a docker-compose sibling of
Hephaestus's Caddy stack, not a user=prometheus host process.

Two phases now:
  1. docker exec into the running prometheus container, render the static
     mirror into /data/build (which is in the container's data volume on
     the host at /var/lib/docker/volumes/prometheus_data/_data/build).
  2. On the host, aws --profile sia-storage s3 sync that directory to
     bns/prometheus/, using the operator's existing sia-storage credentials
     per [[sia-storage-credentials-location]].

Keeping aws CLI out of the service image is a deliberate trade — adding
it would bloat the image by ~100 MB for a once-a-week job the host is
already set up to run.

Not yet installed on the VPS. To enable:
  install -m644 ~/prometheus/deploy/prometheus-snapshot.{service,timer} \
    /etc/systemd/system/
  systemctl daemon-reload
  systemctl enable --now prometheus-snapshot.timer
2026-10-11 00:58:53 +02:00
deploy prometheus: rework snapshot timer unit for the docker deploy 2026-10-11 00:58:53 +02:00
public prometheus: standalone identity + first-wave Silent Mode listings 2026-10-09 01:23:21 +02:00
scripts prometheus: standalone identity + first-wave Silent Mode listings 2026-10-09 01:23:21 +02:00
service prometheus: standalone identity + first-wave Silent Mode listings 2026-10-09 01:23:21 +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.