CLI¶
Introduction¶
@parity/dotns-cli is the command-line tool for interacting with the dotNS registry: registering a .dot name, updating its contenthash, and transferring ownership. It is the canonical tool for these operations; the higher-level Register and Publish flow wraps it for the Polkadot Product setup track.
Names carry the TLD of the network the CLI targets: .dot on Polkadot, and .paseo on the Paseo TestNet. Registrations do not expire and there is no renewal step. A name stays with its owner until it is transferred or deliberately released.
A Product developer building a typical publishing pipeline rarely calls the CLI directly — the setup track handles the common path. The CLI is the right tool when you need a fine-grained, scriptable interaction (CI publishing, batch operations across multiple names, debugging a registration failure).
CLI version
This page targets @parity/dotns-cli 1.0.0, aligned with dotNS contracts 1.0.0 and compatible with 0.8.0. Before it reads or signs, the CLI checks the protocol release the network declares, and it refuses a network that declares any release other than 0.8.0 or 1.0.0, or declares none. The CLI is in active development and breaking changes between versions are expected.
Command Families¶
The CLI groups its commands into five families that map onto the dotNS contract responsibilities:
-
Registration: Commands that create a name record:
- Register a name on the public path. Registration checks
PopRuleseligibility for the label and account before it commits, so an ineligible name fails before any transaction is sent. - Register a subname beneath a name you own.
- Resume, inspect, or discard a commitment left by an interrupted registration.
- Register a name on the public path. Registration checks
-
Records management: Commands that read or change an existing name's records:
- Set the
contenthashto a new CID. This is what a Product owner runs after publishing a new bundle, so the.dotname points at the new version. - Set text records, and choose the primary name shown for an account.
- Look up a name's owner and records, and check an account's personhood status.
- Set the
-
Lifecycle: Commands that change who controls a name or its escrow position:
- Transfer a name that is not soulbound to another account.
- Let another account manage and transfer a name on your behalf, and revoke that delegation.
- Release a name into escrow, inspect its position, redeem it, withdraw the deposit, and claim it. See Escrow and Deposits.
-
Accounts: Commands that manage the signing account and its on-chain mapping:
- Manage the encrypted keystore the CLI signs with.
- Show balances, map a Substrate account to its EVM address, and check a name's governance grant.
-
Bulletin storage: Commands that upload a Product bundle to the Bulletin Chain and track what was uploaded, producing the CID a
contenthashpoints at.
Installing and Authenticating¶
The CLI is distributed as an npm package and installs the dotns command. Install it globally or run it with npx. It targets one environment at a time, set with --env or DOTNS_ENV: polkadot (the default), paseo-v2, or previewnet. On polkadot, registrations, transfers, and Bulletin uploads spend DOT, so pass --env paseo-v2 to work on the TestNet.
Operations that mutate state (registration, record updates, transfers) need an account that can sign the resulting Polkadot Hub transaction. The CLI signs with one of the following:
- An encrypted keystore: The default.
dotns authcreates and manages keystore accounts, and--accountselects one. - A mnemonic or key URI: Passed with
--mnemonicor--key-uri, or through the matching environment variables, which suits CI pipelines. - The Polkadot App:
--signer qrpairs the CLI with the Polkadot App by QR code, so the App signs each transaction. This signer is experimental.
With none of these configured, a command that signs stops before it connects. The CLI signs with the shared development account only when you pass --allow-dev-account or set DOTNS_ALLOW_DEV_ACCOUNT=1.
The PopRules check reads the personhood status of the account the name is registered to: the signing account, or the account passed with register domain --owner.
Command Surface¶
The table lists every command in 1.0.0. Run dotns <command> --help for each command's flags.
| Command | Subcommands | Purpose |
|---|---|---|
register | domain, subname, retry, clear, list | Register a name or subname, and manage commitments cached by an interrupted registration. |
lookup | name, owner-of, transfer | Show a name's records and owner, and transfer a name. |
content | view, set | Read and set a name's contenthash. |
text | view, set | Read and set a name's text records. |
primary | set, status | Set and show the primary name for an account. |
delegate | set, revoke, status, records, records-status | Let another account manage a name, or edit records on all of an owner's names. |
escrow | status, positions, release, redeem, withdraw, claim-withdrawal, balance, refunds list, refunds claim, refunds claim-batch | Manage deposits, the release lifecycle, the pull-payment balance, and the time-locked refund ledger. |
pop | info | Show an account's personhood status. There is no command to set a tier. |
store | claim, info, list, names, cids, get, set, delete, sync | Manage the account's User Store and the names in its label store. |
account | address, info, map, is-mapped, grant | Show account details and balances, map a Substrate account to its EVM address, and show a name's governance grant. |
auth | set, list, use, remove, clear | Manage the encrypted keystore. |
bulletin | authorize, refresh, upload, status, history, history:remove, history:clear, verify | Upload content to the Bulletin Chain and track the uploads. |
Where to Go Next¶
-
Guide Register and Publish
The higher-level publishing flow that wraps the most common CLI operations.
-
Learn MainNet Contracts
The Polkadot contract addresses the CLI targets by default.
-
Learn TestNet Contracts
The Paseo TestNet contract addresses the CLI targets with
--env paseo-v2.
| Created: June 16, 2026