ipfs/kubo · error

no delegated routers or publishers configured for 'delegated

Error message

no delegated routers or publishers configured for 'delegated' routing mode

What it means

Routing.Type is set to 'delegated' (HTTP-only routing, no DHT) but the config contains no delegated routers and no IPNS delegated publishers to use; there is nothing to route with, so node construction fails.

Source

Thrown at core/node/libp2p/routingopt.go:204

// ConstructDelegatedOnlyRouting returns routers used when Routing.Type is set to "delegated"
// This provides HTTP-only routing without DHT, using only delegated routers and IPNS publishers.
// Useful for environments where DHT connectivity is not available or desired
func ConstructDelegatedOnlyRouting(cfg *config.Config) RoutingOption {
	return func(args RoutingOptionArgs) (routing.Routing, error) {
		// Use only HTTP routers (includes both read and write capabilities) - no DHT
		var routers []*routinghelpers.ParallelRouter

		// Add HTTP delegated routers (includes both router and publisher capabilities)
		addrFunc := httpRouterAddrFunc(args.Host, cfg.Addresses)
		httpRouters, err := constructDefaultHTTPRouters(cfg, addrFunc)
		if err != nil {
			return nil, err
		}
		routers = append(routers, httpRouters...)

		// Validate that we have at least one router configured
		if len(routers) == 0 {
			return nil, fmt.Errorf("no delegated routers or publishers configured for 'delegated' routing mode")
		}

		routing := routinghelpers.NewComposableParallel(routers)
		return routing, nil
	}
}

// ConstructDefaultRouting returns routers used when Routing.Type is unset or set to "auto"
func ConstructDefaultRouting(cfg *config.Config, routingOpt RoutingOption) RoutingOption {
	return func(args RoutingOptionArgs) (routing.Routing, error) {
		// Defined routers will be queried in parallel (optimizing for response speed)
		// Different trade-offs can be made by setting Routing.Type = "custom" with own Routing.Routers
		var routers []*routinghelpers.ParallelRouter

		dhtRouting, err := routingOpt(args)
		if err != nil {
			return nil, err
		}

View on GitHub (pinned to 329838acdf)

Solutions

  1. Configure at least one HTTP delegated router under Routing.DelegatedRouters (or Routers) in the config
  2. Or configure Ipns.DelegatedPublishers if you only need IPNS publish over HTTP
  3. Or switch Routing.Type back to 'autorb'/'dht' to use the DHT
  4. Reference: docs/config.md Routing section
Defensive patterns

Strategy: fallback

When it happens

Trigger: Thrown at core/node/libp2p/routingopt.go:204 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of ipfs/kubo@329838acdf (2026-09-03). Data as JSON: /api/errors/75b2688818cdd38b. Report an issue: GitHub.