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