id = "hsd" name = "HSD" homepage = "https://github.com/handshake-org/hsd" description = "Handshake daemon and full node" executables = ["hsd", "hsd-cli", "hsw-cli"] platforms = ["macos", "linux"] [dotfiles] # Handshake's configuration guide documents the default mainnet node and # wallet config files in ~/.hsd; these files can contain API keys. # https://hns.dev/guides/config.html paths = [] secret = ["~/.hsd/hsd.conf", "~/.hsd/hsw.conf"] side_effect = false [commands] format = 1 label = "Start hsd" description = "Start the Handshake node with DNS ports and inbound connections configured. API keys, mining and wallet options are left out." quality = "ai-draft" parser = { end_of_options = "--", interleave = "permute", long_equals = true, short_attached = false, short_bundles = false } [[commands.source]] id = "readme" kind = "manual" url = "https://raw.githubusercontent.com/handshake-org/hsd/HEAD/README.md" revision = "2026-10-27" evidence = """$ hsd --ns-port 5300 $ hsd --rs-host 0.0.0.0 --rs-port 53 # Warning: public! To accept inbound connections, add the `--listen` flag. $ hsd --listen --max-inbound 50 $ hsd --listen --public-host [my-public-ip-address] --max-inbound 50 $ hsd --http-host '::' --api-key 'hunter2' \ --coinbase-address 'ts1qsu62stru80svj5xk6mescy65v0lhg8xxtweqsr'""" [[commands.field]] id = "ns_port" label = "Authoritative DNS port" description = "Default 5349." type = "integer" option = ["--ns-port"] sources = ["readme"] [[commands.field]] id = "rs_host" label = "Recursive DNS host" description = "0.0.0.0 makes the resolver public." type = "string" option = ["--rs-host"] sources = ["readme"] [[commands.field]] id = "rs_port" label = "Recursive DNS port" description = "Default 5350." type = "integer" option = ["--rs-port"] sources = ["readme"] [[commands.field]] id = "listen" label = "Accept inbound connections" type = "boolean" option = ["--listen"] sources = ["readme"] [[commands.field]] id = "max_inbound" label = "Max inbound peers" type = "integer" option = ["--max-inbound"] sources = ["readme"] [[commands.field]] id = "public_host" label = "Public host" description = "Advertise this address to peers." type = "string" option = ["--public-host"] sources = ["readme"] [[commands.field]] id = "http_host" label = "HTTP host" type = "string" option = ["--http-host"] sources = ["readme"] [[commands.field]] id = "coinbase_address" label = "Coinbase address" type = "string" option = ["--coinbase-address"] sources = ["readme"] [[commands.task]] id = "dns" label = "Custom DNS ports" fields = ["ns_port", "rs_host", "rs_port"] required = ["ns_port"] [[commands.task]] id = "inbound" label = "Accept inbound peers" fields = ["listen", "max_inbound", "public_host"] required = ["listen"] set = { listen = [true] } [[commands.group]] id = "basic" label = "Basic" fields = ["ns_port", "rs_host", "rs_port", "listen", "max_inbound", "public_host"] [[commands.group]] id = "advanced" label = "Advanced" fields = ["http_host", "coinbase_address"]