{"address":"172.104.20.35","domain":"net.classifying.space","hostName":"172-104-20-35.ip.linodeusercontent.com","live":true,"services":{"auth":{"depends":[],"description":"Kanidm — the net's issuer: persons, groups, one OAuth2 client per service","health":1,"host":"auth","hostName":"auth.net.classifying.space","identity":null,"kind":"auth","port":8444,"routes":[],"secrets":["kanidm/admin.password","kanidm/idm_admin.password"],"stateDir":"/var/lib/kanidm","stores":[],"unit":"kanidm.service","user":"kanidm"},"caddy":{"depends":[],"description":"the front door: TLS for the canonical name, one route per declared prefix","health":0,"host":null,"hostName":null,"identity":null,"kind":"daemon","port":null,"routes":[],"secrets":[],"stateDir":null,"stores":[],"unit":"caddy.service","user":"caddy"},"check":{"depends":["net.git"],"description":"net-eval: safe nix calculations against the composition root; the checker builds every proposal and writes a verdict","health":2,"host":null,"hostName":null,"identity":null,"kind":"check","port":null,"routes":[],"secrets":[],"stateDir":"/var/lib/net-check","stores":["net"],"unit":"net-check.service","user":"net-check"},"dns":{"depends":[],"description":"Knot: the net's zone net.classifying.space, generated from this manifest","health":1,"host":null,"hostName":null,"identity":null,"kind":"daemon","port":53,"routes":[],"secrets":[],"stateDir":"/var/lib/knot","stores":[],"unit":"knot.service","user":"knot"},"instructions":{"depends":["instructions.git"],"description":"the instructions store's MCP server: blocks rendered per consumer, proposals as branches","health":3,"host":"instructions","hostName":"instructions.net.classifying.space","identity":null,"kind":"face","port":8000,"routes":[{"port":8000,"prefix":"/","site":"legacy"}],"secrets":["instructions.env"],"stateDir":"/var/lib/instructions","stores":["instructions"],"unit":"instructions-mcp.service","user":"instructions"},"instructions.git":{"depends":[],"description":"bare repository /srv/git/instructions.git, served by the git user over ssh and to group git over the filesystem","health":0,"host":null,"hostName":null,"identity":null,"kind":"store","port":null,"routes":[],"secrets":[],"stateDir":"/srv/git/instructions.git","stores":[],"unit":"net-stores.service","user":"git"},"net.git":{"depends":[],"description":"bare repository /srv/git/net.git, served by the git user over ssh and to group git over the filesystem","health":0,"host":null,"hostName":null,"identity":null,"kind":"store","port":null,"routes":[],"secrets":[],"stateDir":"/srv/git/net.git","stores":[],"unit":"net-stores.service","user":"git"},"nihil.git":{"depends":[],"description":"bare repository /srv/git/nihil.git, served by the git user over ssh and to group git over the filesystem","health":0,"host":null,"hostName":null,"identity":null,"kind":"store","port":null,"routes":[],"secrets":[],"stateDir":"/srv/git/nihil.git","stores":[],"unit":"net-stores.service","user":"git"},"oauth2-proxy":{"depends":[],"description":"GitHub sign-in in front of the promotion page — the interim gate until the net's issuer","health":0,"host":null,"hostName":null,"identity":null,"kind":"auth","port":4180,"routes":[],"secrets":["oauth2-proxy.env"],"stateDir":null,"stores":[],"unit":"oauth2-proxy.service","user":"oauth2-proxy"},"promote":{"depends":["oauth2-proxy","net.git","instructions.git","nihil.git"],"description":"proposals on every store, promoted by a tap; shows the deploy and the checker's verdicts","health":5,"host":"promote","hostName":"promote.net.classifying.space","identity":null,"kind":"page","port":8001,"routes":[{"port":4180,"prefix":"/promote","site":"legacy"},{"port":4180,"prefix":"/oauth2","site":"legacy"}],"secrets":[],"stateDir":"/var/lib/promote","stores":["net","instructions","nihil"],"unit":"promote.service","user":"promote"},"reconciler":{"depends":["net.git"],"description":"deploys main of /srv/git/net.git: switch, health check, record or roll back","health":0,"host":null,"hostName":null,"identity":null,"kind":"daemon","port":null,"routes":[],"secrets":[],"stateDir":"/var/lib/net","stores":[],"unit":"net-reconcile.service","user":"root"},"tarpit":{"depends":[],"description":"endlessh-go: an ssh tarpit on a decoy port","health":0,"host":null,"hostName":null,"identity":null,"kind":"daemon","port":2222,"routes":[],"secrets":[],"stateDir":null,"stores":[],"unit":"endlessh-go.service","user":null}}}