Skip to main content

CLI reference

caravel is one CLI for every template. Each command finds lane.toml in the current directory (or -f) and uses its default deployment (or --env). Every command takes --json, which prints JSON on stdout for scripts while progress goes to stderr.

These pages are generated from caravel help, so they match the binary they were built from.

Deploy and change a lane​

CommandWhat it does
caravel planShow what apply would change on Stellar and on the host. Changes nothing
caravel applyMake Stellar and the host match the deployment. Shows the plan and asks first, unless --yes. Running it again changes nothing. Given a saved plan (caravel plan --out FILE), applies exactly that plan
caravel statusA deployment's health: height, the last accepted checkpoint, when a freeze would be possible, the relayer's XLM, TTL horizons, and whether it matches the lane file
caravel destroyWind a lane down for good: drain, stop the sequencer and relayer, export every exit with its proof to exit.json, then freeze once the contract allows it. A frozen lane can't be restarted
caravel graphThe deployment's resources and what each depends on, as Graphviz DOT (caravel graph | dot -Tsvg > lane.svg), or as JSON. Dashed edges restart their target when their source changes

Check a lane file​

CommandWhat it does
caravel validateCheck the lane file without Stellar or a host: each deployment's rules, the genesis, and the identities it names
caravel renderThe deployment as plan reads it: includes, inheritance, vars and expressions resolved. With --genesis, the genesis document the template hashes and the hosts get as lane.toml
caravel envThe lane file's deployments
caravel outputA deployment's addresses and URLs, from the lane file and its keys; one of them with NAME
caravel doctorCheck that this machine can run the deployment: the Stellar CLI, Node.js, the template, the release and the identities
caravel versionThis CLI, the templates it finds and the Stellar CLI it needs

Run the nodes​

CommandWhat it does
caravel startStart nodes that aren't running (all when none is named). Refuses if the deployment differs from the lane file in anything else: that's apply's
caravel stopStop nodes (all of them when none is named) and leave the lane as it is: no checkpoint is posted while the sequencer is down, and after the contract's escape timeout anyone may freeze the lane
caravel restartStop and start nodes (all when none is named)
caravel logsA node's log: the last lines, then with --follow what it writes
caravel waitWait until something holds (exit 4 if the time runs out)
caravel apiGET a path of the lane's API (or a validator's) and print the JSON
caravel replayReplay the lane from Stellar alone (spec §16), with the deployment's contract, network and engine; optionally an account's proofs

Use a lane​

CommandWhat it does
caravel accountA user's Stellar account for the lane: an identity on the network with a trustline to the settlement token, and some of it
caravel balanceAn account's settlement token on Stellar, and its lane account (a C… contract's on Stellar only)
caravel depositDeposit into the lane; returns once the lane has credited it
caravel txSign a lane transaction with SEP-53 through the Stellar CLI keystore and send it; waits until a block takes it and prints its result
caravel withdrawWithdraw from the lane: the transaction, then its leaf in an accepted checkpoint, then the claim on Stellar
caravel claimClaim every unclaimed withdrawal of an account on Stellar
caravel force-withdrawAsk the settlement contract for a withdrawal the lane must include (when it won't take one), then claim it
caravel escapeAfter a freeze: claim an account's withdrawals and its share of the lane's last checkpoint

Start a lane​

CommandWhat it does
caravel initStart a lane: write DIR/lane.toml from a template's example, and create the Stellar CLI identities it names (<name>-<role>)
caravel keysThe Stellar CLI identities a deployment names