All notable changes to this project will be documented in this file.
Note:
- The format is based on Keep a Changelog.
- This project adheres to Semantic Versioning.
The following emojis are used to highlight certain changes:
- 🛠 - BREAKING CHANGE. Action is required if you use this functionality.
- ✨ - Noteworthy change to be aware of.
- boxo v0.39.0
- go-libp2p v0.48.0
- go-libp2p-kad-dht v0.39.1
- bumped Docker workflow actions (
setup-qemu-action,setup-buildx-action,login-action,build-push-action) to latest majors - Docker image builder bumped to
golang:1.26-bookworm - clearer
--helpdescriptions forsomeguy,someguy start, andsomeguy ask(including per-subcommand short descriptions and correctUSAGElines) - README,
docs/environment-variables.md,docs/metrics.md, anddocs/tracing.mdrewritten for clarity (active voice, removed duplicated wording)
docs/environment-variables.md: replaced the self-referential default forSOMEGUY_LIBP2P_LISTEN_ADDRSwith a pointer tosomeguy start --helpso the docs cannot drift from the CLI defaultdocs/metrics.md: fixed "Prometheus Glient" typo, corrected plural/subject-verb agreement, and documented the previously-undocumentedsomeguy_cached_addr_book_probed_peerscounterdocs/tracing.md: corrected the example port (8090→8190, matchingSOMEGUY_LISTEN_ADDRESSdefault), replaced brokenheaders.mdlinks with inline descriptions, and clarified that tracing covers inbound HTTP routing requests (not "gateway" requests)
- Added support for IPIP-476:
/routing/v1/peers/closest/{key}endpoint for finding DHT-closest peers (#124, #127)- Returns DHT-closest peers to a given CID or PeerID
- Accepts both CID and legacy PeerID formats (e.g.,
12D3KooW...) - Uses WAN DHT only for more reliable results
- Includes cached addresses in results when available
- Properly returns HTTP 500 when DHT is disabled
- AutoConf support: automatic configuration of bootstrap peers and delegated routing endpoints (#123). When enabled (default), the
autoplaceholder is replaced with network-recommended values.- All endpoint flags (
--provider-endpoints,--peer-endpoints,--ipns-endpoints) default toauto - See environment-variables.md for configuration details
- All endpoint flags (
- Fixed multiple race conditions and deadlocks in iterator implementations (#119)
- Automatic generation of peer IDs for HTTP block providers when not explicitly configured (#117)
- When
SOMEGUY_HTTP_BLOCK_PROVIDER_ENDPOINTSare configured but noSOMEGUY_HTTP_BLOCK_PROVIDER_PEERIDSare configured, synthetic PeerIDs will now be autogenerated. These are deterministic placeholders derived from endpoint URLs, used only for routing system compatibility with HTTP-based trustless gateways - no libp2p cryptographic operations are performed with these IDs
- When
- Added exporting of routing http client metrics: the endpoint will now include
someguy_routing_http_client_*metrics when delegated routing clients are used:- Histogram: the latency of operations by the routing HTTP client
someguy_routing_http_client_latency_bucket{code,error,host,operation,le}someguy_routing_http_client_latency_sum{code,error,host,operation}someguy_routing_http_client_latency_count{code,error,host,operation}
- Histogram: the number of elements in a response collection
someguy_routing_http_client_length_bucket{host,operation,le}someguy_routing_http_client_length_sum{host,operation}someguy_routing_http_client_length_count{host,operation}
- See docs/metrics.md for more details.
- Histogram: the latency of operations by the routing HTTP client
- Added
http-block-provider-endpointsandhttp-block-provider-peeridsoptions to enable using a trustless HTTP gateway as a source for synthetic content routing records.- When the configured gateway responds with HTTP 200 to an HTTP HEAD request for a block (
HEAD /ipfs/{cid}?format=raw),FindProvidersreturns a provider record containing a predefined PeerID and the HTTP gateway as a multiaddr with/tls/httpsuffix.
- When the configured gateway responds with HTTP 200 to an HTTP HEAD request for a block (
accelerated-dhtoption was removed and replaced with adhtoption which enables toggling between the standard client, accelerated client and being disabled- boxo v0.30.0
- go-libp2p v0.41.1
- go-libp2p-kad-dht v0.32.0
This release includes a number of dependency updates that include bug fixes and improvements.
- Enabled CORS for PUT requests to
/routing/v1/ipns.
- Fix a bug whereby, cached peers with private multiaddrs were returned in
/routing/v1/providersresponses, as they were not passing throughsanitizeRouter.
- Peer addresses are cached for 48h to match provider record expiration on Amino DHT.
- In the background, someguy probes cached peers at most once per hour (
PeerProbeThreshold) by attempting to dial them to keep their multiaddrs up to date. If a peer is not reachable, an exponential backoff is applied to reduce the frequency of probing. If a cached peer is unreachable for more than 48h (MaxBackoffDuration), it is removed from the cache. - Someguy now augments providers missing addresses in
FindProviderswith cached addresses. If a peer is encountered with no cached addresses,FindPeeris dispatched in the background and the result is streamed in the reponse. Providers for which no addresses can be found, are omitted from the response.- This can be enabled via
SOMEGUY_CACHED_ADDR_BOOK=true|false(enabled by default) - Two additional configuration options for the
cachedAddrBookimplementation:SOMEGUY_CACHED_ADDR_BOOK_ACTIVE_PROBINGwhether to actively probe cached peers in the background to keep their multiaddrs up to date.SOMEGUY_CACHED_ADDR_BOOK_RECENT_TTLto adjust the TTL for cached addresses of recently connected peers.
- This can be enabled via
- Add request tracing with sampling or require token for requests with Traceparent header. See tracing.md for more details.
- go-libp2p-kad-dht updated to v0.28.1
- Metrics
someguy_http_request_duration_secondsandsomeguy_http_response_size_byteswere replaced withdelegated_routing_server_http_request_duration_secondsanddelegated_routing_server_http_response_size_bytesfrom upstreamboxo/routing/http/server.
- default config: restore proxying of all results from IPNI at
cid.contact#83
- Added support for IPIP-484 which allows filtering network transports (addresses) and transfer protocols (bitswap, etc) in
/routing/v1/responses. #82
- go-libp2p-kad-dht v0.26.1 fixes a bug where
FindPeerdid not return results for peers behind NAT which only have p2p-circuit multiaddrs. #80
SOMEGUY_LIBP2P_LISTEN_ADDRSconfig environment variable for customizing the interfaces, ports, and transports of the libp2p host created by someguy. #79
- enabled NAT port map and Hole Punching to increase connectivity in non-public network topologies #79
- libp2p identify agentVersion correctly indicates someguy version
- boxo 0.21
routing/httpfixes (release notes) - go-libp2p 0.35
--versionnow includes the release tagstartcommand supports a graceful shutdown and improved handling of interrupt signals
- The resource manager's defaults have been improved based on Rainbow's and Kubo's defaults. In addition, you can now customize a few options using flags, or environment variables.
- The
/routing/v1/peersendpoint correctly filters out private addresses.
- Upgraded Boxo with fix to ensure that
/routing/v1/peersendpoint accepts all variants of Peer IDs that are seen in the wild.