someguy

command module
v0.11.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 20, 2025 License: Apache-2.0, MIT Imports: 76 Imported by: 0

README

🤷 Someguy

Official Part of IPFS Project Discourse Forum Matrix CI Code Coverage GitHub Release Go Reference

Someguy is an HTTP Delegated Routing V1 server that proxies requests to the Amino DHT and other Delegated Routing servers such as the Network Indexer.

Someguy is also hosted as a public utility at https://delegated-ipfs.dev/routing/v1.

Build

go build -o someguy

Install

go install github.com/ipfs/someguy@latest
Docker

Automated Docker container releases are available from the Github container registry:

  • 🟢 Releases
    • latest always points at the latest stable release
    • vN.N.N point at a specific release tag
  • 🟠 Unreleased developer builds
    • main-latest always points at the HEAD of the main branch
    • main-YYYY-DD-MM-GITSHA points at a specific commit from the main branch
  • ⚠️ Experimental, unstable builds
    • staging-latest always points at the HEAD of the staging branch
    • staging-YYYY-DD-MM-GITSHA points at a specific commit from the staging branch
    • This tag is used by developers for internal testing, not intended for end users

When using Docker, make sure to pass necessary config via -e:

$ docker pull ghcr.io/ipfs/someguy:main-latest
$ docker run --rm -it --net=host ghcr.io/ipfs/someguy:main-latest

See /docs/environment-variables.md.

Usage

You can use someguy as a client, or as a server.

Server

You can start the server with someguy start. This will, by default, run a Delegated Routing V1 server that proxies requests to the IPFS Amino DHT and the cid.contact indexer (IPNI) node.

For more details run someguy start --help.

Client

If you don't want to run a server yourself, but want to query some other server, you can run someguy ask and choose any of the subcommands and ask for a provider, a peer, or even an IPNS record.

For more details run someguy ask --help.

AutoConf

Automatic configuration of bootstrap peers and delegated routing endpoints. When enabled (default), the auto placeholder is replaced with network-recommended values fetched from a remote URL.

Configuration:

Endpoint flags (default to auto):

To use custom endpoints instead of auto:

someguy start --ipns-endpoints https://example.com

See environment-variables.md for URL formats and configuration details.

Deployment

Suggested method for self-hosting is to run a prebuilt Docker image.

Release

  1. Create a PR from branch release-vX.Y.Z against main that:
    1. Tidies the CHANGELOG.md with the changes for the current release
    2. Updates the version.json file
  2. Once the release checker creates a draft release, copy-paste the changelog into the draft
  3. Merge the PR, the release will be automatically created once the PR is merged

License

Dual-licensed under MIT + Apache 2.0

Documentation

Overview

autoconf.go implements automatic configuration for someguy.

Autoconf fetches network configuration from a remote JSON endpoint to automatically configure bootstrap peers and delegated routing endpoints.

The autoconf system:

  • Fetches configuration from a remote URL (configurable)
  • Caches configuration locally and refreshes periodically
  • Falls back to embedded defaults if fetching fails
  • Expands "auto" placeholder in endpoint configuration
  • Filters out endpoints for systems running natively (e.g., DHT)
  • Validates and normalizes endpoint URLs

See https://github.com/ipfs/someguy/blob/main/docs/environment-variables.md for configuration options and defaults.

server_delegated_routing.go implements HTTP delegated routing for the server.

This file contains code for creating and managing HTTP clients that talk to remote delegated routing endpoints (e.g., cid.contact, delegated-ipfs.dev). The server uses these HTTP clients to perform content, peer, and IPNS lookups when delegated routing is enabled.

Key components:

  • newDelegatedRoutingClient: creates HTTP client with consistent options
  • collectEndpoints: deduplicates URLs and aggregates capabilities
  • createDelegatedHTTPRouters: creates one client per unique base URL

Directories

Path Synopsis
internal
fd
Package fd provides filesystem descriptor count for different architectures.
Package fd provides filesystem descriptor count for different architectures.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL