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
- Replace --routing=supernode with a supported value such as --routing=default (full DHT) or --routing=auto
- If delegated-only behavior is desired, use --routing=delegated with Routing.Routers configured
- 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
- Audit deployment scripts for removed flags when upgrading kubo
- Use `ipfs daemon --help` to confirm accepted --routing values
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
- unrecognized routing option: %s
- Routing.AcceleratedDHTClient option is set even tho Routing.
- private networking (swarm.key / LIBP2P_FORCE_PNET) does not
- closing plugins: %w
- serveHTTPApi: GetConfig() failed: %s
AI-assisted analysis of ipfs/kubo@329838acdf (2026-09-03).
Data as JSON: /api/errors/46eb6ad59c9379b3.
Report an issue: GitHub.