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

usage
xe node [flags]           Start a node daemonxe wallet create          Create a new walletxe wallet balance         Show wallet balancexe fund                   Claim XUSD via proof of work (testnet only)xe send <addr> <amount>   Send fundsxe receive                Receive pending sendsxe providers              List compute providersxe lease [flags]          Create a leasexe lease status <hash>    Check lease statusxe vm <hash>              Get VM infoxe ssh <hash>             SSH into a leased VMxe keygen                 Generate ed25519 SSH keypairxe sign-block <seed>      Sign a block from stdinxe version                Print versionxe help                   Show help

#Global configuration

Configuration is via environment variables:

VariableDefaultDescription
XE_NODEhttps://ldn.core.test.networkNode API URL for client commands
XE_WALLET~/.xe/wallet.seedWallet seed file path
XE_SSH_HOSTldn.test.networkSSH gateway hostname
XE_SSH_PORT2222SSH gateway port

#Node

#xe node [flags]

Starts a node daemon. Runs until SIGINT/SIGTERM. No interactive REPL — use xe subcommands against the API instead.

FlagDefaultDescription
-port9000libp2p TCP listen port
-api-port8080HTTP API listen port
-api-bind127.0.0.1API bind address
-dial(none)Bootstrap multiaddr(s), comma-separated
-data./dataStorage directory
-cors-origin(none)Allowed CORS origin
-providefalseEnable provider mode
-vcpus2vCPUs to offer (provider mode)
-memory2048Memory in MB (provider mode)
-disk20Disk in GB (provider mode)
-ssh-port0SSH gateway listen port (0 = disabled)
-limactl-path(PATH)Path to limactl binary
xe
# Start a node and connect to testnetxe node -port 9000 -api-port 8080 \  -dial /ip4/45.77.226.208/tcp/9000/p2p/12D3KooW... # Start a provider nodexe node -provide -vcpus 4 -memory 4096 -disk 40 \  -ssh-port 2222 -dial ...

#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.

#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.

FlagDefaultDescription
--vcpus1vCPUs
--memory1024Memory in MB
--disk1Disk in GB
--duration300Duration 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:

diagram
ssh client → gateway (lease key auth) → libp2p tunnel → provider → VM sshd

The 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:

PathContent
host.keylibp2p identity key (peer ID)
node.keyNode account ed25519 key
ledger/BadgerDB database
lima/Lima VM state (provider only)
ssh_host_keySSH gateway host key

#See also