Node CLI
Node CLI
xe is the unified command-line interface for the XE network. It replaces the separate xe-node, cli, xe-tool, and xe-lease-tool binaries. Source: cmd/xe/main.go.
Commands
xe node [flags] Start a node daemon
xe wallet create Create a new wallet
xe wallet balance Show wallet balance
xe fund Claim XUSD via proof of work (testnet only)
xe send <addr> <amount> Send funds
xe receive Receive pending sends
xe providers List compute providers
xe lease [flags] Create a lease
xe lease status <hash> Check lease status
xe vm <hash> Get VM info
xe ssh <hash> SSH into a leased VM
xe keygen Generate ed25519 SSH keypair
xe sign-block <seed> Sign a block from stdin
xe version Print version
xe help Show helpGlobal configuration
Configuration is via environment variables:
Variable
Default
Description
XE_NODE
https://ldn.core.test.network
Node API URL for client commands
XE_WALLET
~/.xe/wallet.seed
Wallet seed file path
XE_SSH_HOST
ldn.test.network
SSH gateway hostname
XE_SSH_PORT
2222
SSH gateway port
Node
xe node [flags]
Starts a node daemon. Runs until SIGINT/SIGTERM. No interactive REPL — use xe subcommands against the API instead.
Flag
Default
Description
-port
9000
libp2p TCP listen port
-api-port
8080
HTTP API listen port
-api-bind
127.0.0.1
API bind address
-dial
(none)
Bootstrap multiaddr(s), comma-separated
-data
./data
Storage directory
-cors-origin
(none)
Allowed CORS origin
-provide
false
Enable provider mode
-vcpus
2
vCPUs to offer (provider mode)
-memory
2048
Memory in MB (provider mode)
-disk
20
Disk in GB (provider mode)
-ssh-port
0
SSH gateway listen port (0 = disabled)
-limactl-path
(PATH)
Path to limactl binary
# Start a node and connect to testnet
xe node -port 9000 -api-port 8080 \
-dial /ip4/45.77.226.208/tcp/9000/p2p/12D3KooW...
# Start a provider node
xe node -provide -vcpus 4 -memory 4096 -disk 40 \
-ssh-port 2222 -dial ...[!WARNING] Provider requirements Provider nodes require
sys.timekeepersto be configured in the state chain. The node will refuse to start in provider mode without trusted timekeepers — attestations are mandatory for lease acceptance and settlement.
Wallet
xe wallet create
Generates a new ed25519 keypair and saves the seed to the wallet file (~/.xe/wallet.seed by default). Prints the account address.
xe wallet balance
Shows the current balance for all assets (XE, XUSD) for the wallet's account.
Transactions
xe fund
Claims 100 XUSD via proof-of-work. One claim per account per 24 hours. Uses all available CPU cores.
[!WARNING] Testnet only The claim mechanism is a testnet funding tool. It will be replaced by a proper token emission model in production.
xe send <address> <amount> [--asset XUSD]
Creates and submits a send block. Default asset is XUSD. The block is signed with the wallet's key, PoW is computed, and it's submitted to the node.
xe receive
Creates receive blocks for all pending incoming sends addressed to the wallet.
Compute
xe providers
Lists all compute providers registered on the network, showing total and available resources, XUSD balance, and active lease counts.
xe lease [flags]
Creates a lease on a compute provider. Generates an SSH key (if not already created), finds a suitable provider, submits the lease block, and waits for acceptance.
Flag
Default
Description
--vcpus
1
vCPUs
--memory
1024
Memory in MB
--disk
1
Disk in GB
--duration
300
Duration in seconds
--provider
(auto)
Provider address (auto-selects best fit if omitted)
The provider is selected automatically based on available resources and XUSD balance for staking. The lease block is submitted to a bootstrap node (not the provider directly) so gossip triggers the provider's auto-accept.
xe lease status <hash>
Shows the lease record: consumer, provider, resources, cost, stake, start time, settlement status.
xe vm <hash>
Shows VM status for a lease. Works via any node — bootstrap nodes proxy the request to the provider via libp2p.
xe ssh <hash>
Opens an SSH session to a leased VM. The connection goes through the SSH gateway (ProxyJump) with end-to-end encryption:
ssh client → gateway (lease key auth) → libp2p tunnel → provider → VM sshdThe SSH key is per-wallet: derived from the wallet file path (e.g., ~/.xe/wallet.lease_key). Each wallet gets its own key, preventing cross-wallet VM access.
Tools
xe keygen
Generates a new ed25519 keypair. Writes the private key in OpenSSH PEM format to ./lease_key and prints the public key hex.
xe sign-block <seed-hex>
Reads an unsigned block as JSON from stdin, signs it with the given seed, computes PoW, and writes the signed block to stdout. For scripting and low-level block construction.
Data directory
When running xe node, the -data flag controls persistent storage:
Path
Content
host.key
libp2p identity key (peer ID)
node.key
Node account ed25519 key
ledger/
BadgerDB database
lima/
Lima VM state (provider only)
ssh_host_key
SSH gateway host key