[serve] interval_secs = 300 prune_days = 30 listen = "100.106.221.39:9100" peer_heartbeat_secs = 60 route_check_interval_secs = 300 dashboard = true # api_token loaded from POM_API_TOKEN env var # The database is at a fixed absolute path, not wherever XDG_DATA_HOME happens # to point. The unit sets XDG_DATA_HOME=/var/lib and an interactive shell does # not, so before this was configured `pom serve` and a hand-run `pom test` on # this host opened two different files and neither said so: the suites ran, # passed, and reported into a database nothing served. [storage] db_path = "/var/lib/pom/pom.db" [instance] name = "astra" [targets.mnw] label = "Makenotwork Production" expected_routes = ["/", "/discover", "/login", "/docs"] [[targets.mnw.dns]] name = "makenot.work" record_type = "A" expected = [] [[targets.mnw.dns]] name = "forums.makenot.work" record_type = "A" expected = [] [[targets.mnw.dns]] name = "git.makenot.work" record_type = "A" expected = [] [targets.mnw.whois] domain = "makenot.work" warn_days = 30 [targets.mnw.health] url = "https://makenot.work/api/health" timeout_secs = 10 [targets.mnw.health.expect] status_code = 200 json_fields = { "status" = "operational" } [targets.mnw.health.trending] baseline_window_hours = 168 spike_threshold = 2.0 [targets.mnw.tls] host = "makenot.work" [targets.mnw.tests] command = "/var/lib/pom/staging/run-ci.sh mnw" timeout_secs = 5400 staleness_days = 7 [targets.mt] label = "Multithreaded Forum" expected_routes = ["/"] [targets.mt.health] url = "https://forums.makenot.work/api/health" timeout_secs = 10 [targets.mt.health.expect] status_code = 200 json_fields = { "status" = "operational" } [targets.mt.tls] host = "forums.makenot.work" [targets.mt.tests] command = "/var/lib/pom/staging/run-ci.sh mt" timeout_secs = 2700 staleness_days = 7 [targets.mnw-cli] label = "MNW CLI SSH Server" [[targets.mnw-cli.dns]] name = "cli.makenot.work" record_type = "A" expected = [] [targets.mnw-cli.ssh_banner] host = "5.78.144.244" port = 22 timeout_secs = 5 [targets.htpy] label = "htpy.app" [[targets.htpy.dns]] name = "htpy.app" record_type = "A" expected = [] [targets.htpy.whois] domain = "htpy.app" warn_days = 30 [targets.htpy.health] # See the same block in pom-hetzner.toml: htpy-web listens on 3200, not 8080, and # /archive/ 308s to /viewer/. The stale address is why this target # has carried an open incident since 2026-03-29 while the site served fine. url = "http://100.99.153.68:3200/viewer/S_2" timeout_secs = 10 [targets.htpy.health.expect] status_code = 200 body_contains = "htpy" [targets.htpy.tls] host = "htpy.app" [targets.go] label = "GoingsOn" [targets.go.tests] command = "/var/lib/pom/staging/run-ci.sh go" timeout_secs = 2700 staleness_days = 7 [targets.bb] label = "Balanced Breakfast" [targets.bb.tests] command = "/var/lib/pom/staging/run-ci.sh bb" timeout_secs = 2700 staleness_days = 7 [targets.af] label = "AudioFiles" [targets.af.tests] command = "/var/lib/pom/staging/run-ci.sh af" timeout_secs = 2700 staleness_days = 7 [targets.sk] label = "SyncKit SDK" [targets.sk.tests] command = "/var/lib/pom/staging/run-ci.sh sk" timeout_secs = 1200 staleness_days = 7 [peers.hetzner] # By tailnet name. The label stays `hetzner` because that is what the MCP # tools address an instance by; only the address moves. address = "alpha-west-1:9100" on_missing = "alert" # token = "" [peers.macbook] # `mbp`, not 100.100.246.136. That address was NOT IN THE TAILNET when this was # checked on 2026-08-23 -- mbp answers on 100.83.193.59 -- so this peer had been # pointing at nothing, quietly, for as long as nobody looked. `on_missing` is # "log" here, which is exactly why nobody did. address = "mbp:9100" on_missing = "log" # token = "" [alerts] # postmark_token loaded from POM_POSTMARK_TOKEN env var to = "pom-alerts@makenot.work" # MNW operator-log sink: also pushes alerts to POST {mnw_url}/api/internal/alerts. # Caddy answers 404 to /api/internal/* on the public edge, so this addresses the # app port over the tailnet instead (measured 2026-08-15 from astra: 401 without # a token, so the route is reachable and only auth is missing). # # Inert until POM_ALERTS_INGEST_TOKEN is added to /etc/pom/env here, holding the # same value as ALERTS_INGEST_TOKEN in MNW prod's /etc/mnw/makenotwork.env. The # sink no-ops when either half is missing, so this line alone changes nothing. mnw_url = "http://100.120.174.96:3000"