xone setup walks a new operator through a first follower node: it asks for the network, the install method, the datadir and the RPC endpoint, shows the config and the exact next commands, and writes them only after you confirm. It can speak English, Hindi or Marathi, and it can write a JSON-lines event stream for scripts. It never sets up a validator. The command came in PR #1049, the events in PR #1052 and the languages in PR #1081, all on 2026-11-15, so it is on main and not in v0.1.0.

For the manual path, see how to run and verify xOneRS and choosing a sync mode.

What does xone setup ask?

From the prompt catalog in crates/xone-node/src/setup.rs:

REFERENCE TABLEScroll to explore all columns →
Prompt Choices
Network mainnet, apothem, devnet, net2040
Role follower only
Install method bare, systemd, docker
Datadir a path; consensus data goes under <datadir>/xone
HTTP endpoint address and port, default 127.0.0.1:8545
Operator workspace a directory outside the chain data, default ./xone-operator
Confirm "Apply this configuration? (y/N)"

The answers become a config file and a list of next commands in the workspace. The rendered config loads and validates as a follower, with mining off.

The network prompt lists mainnet, and mainnet is also the default answer in the code, but the support matrix does not list mainnet as qualified for any role yet. We filed issue #1164 so that setup defaults to Apothem and warns or refuses on an unqualified network. Until then, answer the network prompt yourself.

How do I try it without changing anything?

xone setup --dry-run --datadir /var/lib/xone --workspace ./xone-operator
REFERENCE TABLEScroll to explore all columns →
Option Effect
--dry-run Shows the config and the next commands, writes nothing
--yes Applies without the confirmation prompt (not together with --dry-run)
--plain, or NO_COLOR set Plain output with no cursor controls
--http-addr, --http-port Preset the endpoint

A refused confirmation, --dry-run or typing cancel leaves the previous configuration unchanged, and the command says so: setup cancelled; previous configuration is unchanged.

Why does it refuse a validator role?

Because a validator needs more than a config: a key, a safety record, and on mainnet the project's Gate D. The setup refuses a producer, masternode or validator role, so a first-time operator cannot start signing by accident. For a validator, see signer setup and the net2040 validator guide.

Can the prompts be in Hindi or Marathi?

Yes. --lang hi or --lang mr (or XONE_LANG) shows the prompts in Hindi or Marathi; for example the confirmation is "यह विन्यास लागू करें? (y/N)" in Hindi and "हे विन्यास लागू करायचे? (y/N)" in Marathi. A missing translation falls back to English. The choice is saved in the workspace and used again next time.

Only the human text changes. Command names, error messages, JSON keys and the event stream stay the same in every language, so a script that drives xone setup works whatever the operator reads.

How does a script follow the setup?

--events <file> (or - for stderr) writes one JSON object per line (PR #1052):

  • The fields are fixed English names: v (version), step, state, outcome.
  • The steps are collect-answers, render-config and apply-config. Each step that starts ends with a final state, or leaves a setup-progress.json checkpoint in the workspace that a later run resumes from.
  • Secrets never appear in events: mnemonics, passwords, the ethstats secret and any user name or password in a URL are left out.
  • The human preview stays on stdout, apart from the events.

Frequently asked questions

How do I set up my first XDC node with xOne?

Run xone setup --dry-run to see the plan, then xone setup to apply it, on a build from main after 2026-11-15.

Can xone setup create a validator?

No. It sets up followers only and refuses a validator role.

Does xone setup support Hindi?

Yes, with --lang hi. Marathi is --lang mr. Missing strings fall back to English.

Can I automate xone setup?

Yes. Use --yes to skip the prompt and --events for a JSON-lines progress stream with fixed field names.

Sources