-
released this
2026-09-21 21:59:51 -05:00 | 45 commits to main since this releaseThe weather tenant is deployed.
weather.mcp.jrendar.orghas its own Forgejo OAuth
application, its own stack service with its own NFS export, its own certificate and its own
NPM proxy host, and it answered a realget_forecast_gridcall the evening it went up:
/points/<coord>followed by/gridpoints/OKX/42,40, 167 KB of grid, with the coordinate
redacted in the log exactly as designed. Tenant #7 in the code, the fifth deployed. It was
parked besidesubscriptionsfor one release rather than for thirty-six.The one code-adjacent change is a line that should have been there from 0.57.0.
weather.confsaid NPM's access log was "the one place a coordinate could still land;
leave it off for this host" — and nothing implemented it. NPM has no per-host access-log
switch in its UI and no conf indeploy/nginx/carried anaccess_logdirective, so the
instruction was an intention for as long as it existed. Found while writing the standup
steps, which is an argument for writing them down.Added
access_log off;indeploy/nginx/weather.conf, and deliberately nowhere else. On
the other four hostnames the request names a folder or a course and the response is the
private half, so their logs are worth having. Here every tool takes a latitude and a
longitude: the request is the sensitive half and the response is public data. The tenant
redacts its own URLs before they reach its log; nginx would have written the unredacted
one, which made NPM the only remaining place a coordinate could land.
Changed
docs/operations.md's standup list is now six and carries two steps it was missing.
Issue the certificate before pasting the Advanced block — HTTP-01 fetches
/.well-known/acme-challenge/<token>and every conf here has alocation /.well-known/
ending indeny all; longest-prefix matching should save it, but that depends on the NPM
version and a failed issuance is rate-limited. The same applies at renewal, now with the
allowlist in place. Andaccess_log offbelongs in the conf when the request is the
sensitive half, per above.deploy/README.md: six files, five deployed, and whyweather.confis the only one
carryingaccess_log off.CLAUDE.md's status block: five tenants, withweather
moved out of the paragraph that files it alongsidesubscriptions.
docs/weather-plan.md's deployment item is closed, which is what was blocking W2.
Notes
- The live pass has started and has already earned its budget twice, in the first
minutes rather than the first week. 0.57.2 was the boot check probing an HTML landing
page; this release is the access-log line. Neither was reachable from a green suite, which
is the entire argument for the A8 step thatCLAUDE.mdrequires of every tenant. - What the deployment did not need. No DNS change, no secret, no credential rotation and
nothing on a provider's side — every upstream here is a public read endpoint. The whole
job was the identity layer in front, which is what makessubscriptions' remaining
absence a decision rather than an obstacle.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads