Repository navigation
Advertise an announced gateway origin in capability ads and /api/nodes - #151
Merged
Merged
Conversation
A gateway whose operator set gateway.announce now puts its public origin in its capability ad (`gateway`), and the node board publishes it as `gateway` on /nodes and /api/nodes. Opt-in (nothing without the setting, never in private mode, only with the gateway role), re-validated by the aggregator to a bare http(s) origin with no credentials. This is how a client that is not a libp2p peer (the Moshpit c0mpute edge, profullstack/moshpit-proxy#31) finds gateways to fetch /s/<site>/ from, without a central list. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ThreatCrush Security Scan12 finding(s) HIGH/CRITICAL: 1 | MEDIUM: 8 | LOW: 3
Snippets are redacted; ThreatCrush never prints matched credential material. |
sh1pt-actions-fleet Bot
pushed a commit
that referenced
this pull request
Nov 9, 2026
Ships podcasting + podcasts (and #151 gateway addresses in /api/nodes). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ralyodio
added a commit
that referenced
this pull request
Nov 9, 2026
* feat(podcasting,podcasts): p2p podcasts on top of hosting podcasting: `c0mpute podcasting publish <folder|files> --name <show>` builds an RSS 2.0 + iTunes + Podcasting 2.0 feed (enclosures with length+type, guid, pubDate, podcast:guid = uuid v5 of the site id, podcast:locked, optional podcast:value), an episode page and the audio, and publishes it as a hosting site (three self-healing copies, served at /s/<site_id>/feed.xml). podcasts: subscribe to c0mpute shows (via a gateway or --p2p) or any RSS feed (net_guard on every redirect hop), list, download and play episodes. Subscriptions in <data_dir>/podcasts/subscriptions.json. quick-xml reader. hosting: feed.xml/rss.xml serve as application/rss+xml; audio MIME types. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * bump v0.2.75 Ships podcasting + podcasts (and #151 gateway addresses in /api/nodes). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * bump v0.2.76 v0.2.75 was taken by #153; ships podcasting + podcasts. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
capabilities.rs:announced_gateway(config)/gateway_origin(raw). A node with the gateway role andgateway.announceset puts"gateway": "<scheme://host[:port]>"in its hardware blob. Nothing without the setting, never in private mode.status_aggregator.rs:NodeRow.gateway, re-validated throughgateway_origin(http/https, host present, no userinfo, <= 200 chars).apps/web/src/lib/nodes.ts:gateway?: string | nullonNodeRow(passed through bypublicRow).docs/hosting.md: Moshpit names section updated + "Finding gateways".Why
Today
/api/nodeshas no gateway addresses, so nothing outside libp2p can find a gateway to fetch/s/<site_id>/from. The Moshpit c0mpute edge (profullstack/moshpit-proxy#31, registry side moshcoder/moshcode#600) discovers gateways here, with seeds as a fallback. Published only by operator opt-in: the operator typed this address, the same one d1sks already lists, so it stays within the board's no-addresses rule.No version bump. The Moshpit design does not need the hosting DNS verifier to query dns.moshcode.sh (the edge fetches
/s/<site_id>/, no Host check), so that change is not included.Tests (docker, rust:1.92)
capabilities::tests::gateway_origins_are_sanitized,gateway_is_advertised_only_when_announced_and_public(new)status_aggregator::tests::node_board_ranks_by_bench_and_counts_referrersextended: valid gateway published as a bare origin, invalid dropped, absent when not announcedcargo test -p c0mpute-core --lib -- gateway node_board: 12 passed;cargo build --workspace --all-targets --locked: clean🤖 Generated with Claude Code