Skip to main content
For registry pricing and lease lifecycle (initialize registry, purchase, renew, claim expired), use the registrar commands.

Prerequisites

  • CLI setup with keys and RPC endpoint configured
  • Name service program ID available (defaults to config value)
  • Fee payer funded for signer costs

Command Overview

Init Root Registrar

Create a base registrar for a root name

Register Subdomain

Add subdomains under a registrar or domain

Manage Records

Append or delete key/value records on a domain

Unregister Subdomain

Remove a subdomain under a registrar or domain

Resolve & List

Read domain metadata and records

Derive Addresses

Calculate registrar, domain, lease, and config addresses

Init Root Registrar

Set up a base registrar on the name service program for a root (for example, thru). The registrar address can be derived automatically from the root name.
thru-cli nameservice init-root $root_name [OPTIONS]
root_name
string
required
Root segment to manage (1-64 characters)
--name-service-program
string
Override base name service program address
--registrar-account
string
Explicit registrar account address; derived from the root name if omitted
--authority
string
default:"fee payer"
Authority address for root management, formatted as a 46-char ta... address or 64-char hex pubkey. Key names are not accepted. Must match the fee payer address because only the fee payer signature is included.
--proof
string
Hex state proof for registrar account creation; auto-generated if omitted
--fee-payer
string
default:"default"
Signer for the transaction
Example:
thru-cli nameservice init-root thru

Register Subdomain

Create a subdomain under a parent registrar or domain. The CLI can derive the domain account address from the parent and name.
thru-cli nameservice register-subdomain \
  $domain_name \
  $parent_account \
  [OPTIONS]
domain_name
string
required
Subdomain segment (1-64 characters)
parent_account
string
required
Registrar or parent domain address
--name-service-program
string
Override base name service program address
--domain-account
string
Explicit domain account address; derived if omitted
--owner
string
default:"fee payer"
Domain owner address, formatted as a 46-char ta... address or 64-char hex pubkey. Key names are not accepted. Must match the fee payer address because only the fee payer signature is included.
--authority
string
default:"fee payer"
Authority address for subdomain registration, formatted as a 46-char ta... address or 64-char hex pubkey. Key names are not accepted. Must match the fee payer address because only the fee payer signature is included.
--proof
string
Hex state proof for domain creation; auto-generated if omitted
--fee-payer
string
default:"default"
Signer for the transaction

Manage Records

Append or delete records on a domain.
thru-cli nameservice append-record \
  $domain_account \
  $key \
  $value \
  [--owner $owner] [--fee-payer $fee_payer] [--name-service-program $program]

thru-cli nameservice delete-record \
  $domain_account \
  $key \
  [--owner $owner] [--fee-payer $fee_payer] [--name-service-program $program]
domain_account
string
required
Domain account address
key
string
required
Record key (<= 32 bytes)
value
string
required
Record value (<= 256 bytes) for append-record
--owner
string
default:"fee payer"
Owner address authorizing the record change, formatted as a 46-char ta... address or 64-char hex pubkey. Key names are not accepted. Must match the fee payer address because only the fee payer signature is included.
--fee-payer
string
default:"default"
Signer for the transaction
--name-service-program
string
Override base name service program address

Unregister Subdomain

Delete a subdomain under a registrar or domain.
thru-cli nameservice unregister-subdomain \
  $domain_account \
  [--owner $owner] [--fee-payer $fee_payer] [--name-service-program $program]
domain_account
string
required
Domain account address to remove
--owner
string
default:"fee payer"
Owner address authorizing unregister, formatted as a 46-char ta... address or 64-char hex pubkey. Key names are not accepted. Must match the fee payer address because only the fee payer signature is included.
--fee-payer
string
default:"default"
Signer for the transaction
--name-service-program
string
Override base name service program address

Resolve and List

Fetch domain metadata and records.
thru-cli nameservice resolve $domain_account [--key $key] [--name-service-program $program]
thru-cli nameservice list-records $domain_account [--name-service-program $program]
domain_account
string
required
Domain account to inspect
--key
string
Record key to fetch when resolving
--name-service-program
string
Override base name service program address

Derive Addresses

Helpers to compute deterministic addresses.
thru-cli nameservice derive-domain-account $parent_account $domain_name [--name-service-program $program]
thru-cli nameservice derive-registrar-account $root_name [--name-service-program $program]
thru-cli nameservice derive-config-account [--thru-registrar-program $program]
thru-cli nameservice derive-lease-account $domain_name [--thru-registrar-program $program]
parent_account
string
required
Registrar or parent domain address for domain derivation
domain_name
string
required
Domain segment (1-64 characters)
root_name
string
required
Root segment (for registrar derivation)
--name-service-program
string
Override base name service program address for derive-domain-account and derive-registrar-account
--thru-registrar-program
string
Override thru registrar program address for derive-config-account and derive-lease-account

Common Flow

  1. Use thru-cli registrar initialize-registry and purchase-domain to create a .thru lease (see Registrar Commands).
  2. (Optional) Register subdomains with thru-cli nameservice register-subdomain.
  3. Manage and query records with append-record, delete-record, resolve, and list-records.