ipfs/kubo · error

supernode routing was never fully implemented and has been r

Error message

supernode routing was never fully implemented and has been removed

What it means

The `--routing=supernode` CLI option is rejected because supernode routing was never fully implemented and has been removed from kubo. Only the remaining routing options (default, auto, autoClient, dhtclient, dhtserver, none, delegated, custom) are valid.

Source

Thrown at cmd/ipfs/kubo/daemon.go:492

		// and they will show up at https://crt.sh/?q=libp2p.direct
		enableAutoTLS := cfg.AutoTLS.Enabled.WithDefault(config.DefaultAutoTLSEnabled)
		if enableAutoTLS {
			if cfg.AutoTLS.Enabled != config.Default {
				// hard fail if someone tries to explicitly enable both
				return errors.New("private networking (swarm.key / LIBP2P_FORCE_PNET) does not work with AutoTLS.Enabled=true, update config to remove this message")
			} else {
				// print error and disable autotls if user runs on default settings
				log.Error("private networking (swarm.key / LIBP2P_FORCE_PNET) is not compatible with AutoTLS. Set AutoTLS.Enabled=false in config to remove this message.")
				cfg.AutoTLS.Enabled = config.False
			}
		}
	}

	// Use config for routing construction

	switch routingOption {
	case routingOptionSupernodeKwd:
		return errors.New("supernode routing was never fully implemented and has been removed")
	case routingOptionDefaultKwd, routingOptionAutoKwd:
		ncfg.Routing = libp2p.ConstructDefaultRouting(cfg, libp2p.DHTOption)
	case routingOptionAutoClientKwd:
		ncfg.Routing = libp2p.ConstructDefaultRouting(cfg, libp2p.DHTClientOption)
	case routingOptionDHTClientKwd:
		ncfg.Routing = libp2p.DHTClientOption
	case routingOptionDHTKwd:
		ncfg.Routing = libp2p.DHTOption
	case routingOptionDHTServerKwd:
		ncfg.Routing = libp2p.DHTServerOption
	case routingOptionNoneKwd:
		ncfg.Routing = libp2p.NilRouterOption
	case routingOptionDelegatedKwd:
		ncfg.Routing = libp2p.ConstructDelegatedOnlyRouting(cfg)
	case routingOptionCustomKwd:
		if cfg.Routing.AcceleratedDHTClient.WithDefault(config.DefaultAcceleratedDHTClient) {
			return errors.New("Routing.AcceleratedDHTClient option is set even tho Routing.Type is custom, using custom .AcceleratedDHTClient needs to be set on DHT routers individually")
		}

View on GitHub (pinned to 329838acdf)

Solutions

  1. Replace --routing=supernode with a supported value such as --routing=default (full DHT) or --routing=auto
  2. If delegated-only behavior is desired, use --routing=delegated with Routing.Routers configured
  3. Update automation scripts to remove the supernode keyword

Example fix

// before
ipfs daemon --routing=supernode
// after
ipfs daemon --routing=default
Defensive patterns

Strategy: validation

Validate before calling

VALID_ROUTING = {"default","auto","autoclient","dhtclient","dhtserver","none","delegated","custom"}
if routingFlag == "supernode" {
    panic("--routing=supernode was removed; use default/delegated/custom")
}

Prevention

When it happens

Trigger: Running `ipfs daemon --routing=supernode` (routingOptionSupernodeKwd).

Common situations: Old scripts or documentation referencing the supernode routing flag from early kubo versions; copying legacy deployment configs.

Related errors


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