Skip to main content

The Leo Command Line Interface

The Leo CLI is a command line interface tool that comes equipped with the Leo compiler. It contains a number of helpful

tip

You can print the list of commands by running leo --help

Commands

  • account - Create a new Aleo account, sign and verify messages.
  • new - Create a new Leo project in a new directory.
  • build - Compile the current project.
  • deploy - Generate proving and verifying keys and produce a transaction contianing the deployment.
  • run - Run a program without producing a proof.
  • execute - Execute a program and produce a transaction containing a proof.
  • debug - Run the interactive debugger in the current package.
  • query - Retrieve metadata and state from the network.
  • add - Add a new on-chain or local dependency to the current project.
  • remove - Remove a dependency from the current project.
  • clean - Clean the build and output artifacts.
  • update - Update to the latest version of Leo.

leo account

Back to Top

To create a new Aleo account, run:

leo account new

Private Key APrivateKey1zkp...
View Key AViewKey1...
Address aleo1...
danger

We urge you to exercise caution when managing your private keys. leo account cannot be used to recover lost keys.

To import an existing Aleo account, run:

leo account import {$PRIVATE_KEY}

To create a new account and save it to your .env file, run:

leo account new --write

leo account has a number of additional subomcommands. To list all options, run:

leo account --help

# Output:
Create a new Aleo account, sign and verify messages

Usage: leo account [OPTIONS] <COMMAND>

Commands:
new Generates a new Aleo account
import Derive an Aleo account from a private key
sign Sign a message using your Aleo private key
verify Verify a message from an Aleo address
help Print this message or the help of the given subcommand(s)

Options:
-d Print additional information for debugging
-q Suppress CLI output
--path <PATH> Optional path to Leo program root folder
--home <HOME> Optional path to aleo program registry.
-h, --help Print help

To learn more about how to use leo account to sign and verify messages, check out Sign and Verify.

leo new

Back to Top

To create a new project, run:

leo new {$NAME}

Valid project names are snake_case: lowercase letters and numbers separated by underscores. This command will create a new directory with the given project name.

See Project Layout for more details .

leo build

Back to Top

To compile your program into Aleo Instructions and verify that it builds properly, run:

leo build

This will populate the directory build/ (creating it if it doesn't exist) with an Aleo instructions file .aleo.

console output:
     Leo ✅ Compiled 'main.leo' into Aleo instructions

leo deploy

Back to Top

tip

Use this command to deploy a program to the Aleo network. This requires having a funded account.

To deploy the project in the current working directory.

leo deploy // Defaults to using key information in `.env`, and deploys to `testnet3` via endoint `http://api.explorer.provable.com/v1`.
leo deploy --endpoint "{$ENDPOINT}" --private-key "{$PRIVATE_KEY}" // To deploy using custom private key, to a custom endpoint (e.g. local devnet `http://0.0.0.0:3030`).

See Deploy for more details.

leo run

Back to Top

tip

Use this command to run your program before executing it.

To run a Leo transition function with inputs from the command line. {$INPUTS} should be a list of inputs to the program separated by spaces.

leo run {$TRANSITION} {$INPUTS}

This command does not synthesize the program circuit or generate proving and verifying keys.

console output:
 Leo ✅ Compiled 'main.leo' into Aleo instructions

⛓ Constraints
'hello.aleo/main' - 33 constraints (called 1 time)

➡️ Output
• 3u32

Leo ✅ Finished 'hello.aleo/main' (in "/hello/build")

leo execute

Back to Top

tip

Use this command to execute your program and generate a transaction object.

To execute a Leo transition function with inputs from the command line. {$INPUTS} should be a list of inputs to the program separated by spaces.

leo execute {$TRANSITION} {$INPUTS}

This command synthesizes the program circuit and generates proving and verifying keys.

console output:
 Leo ✅ Compiled 'main.leo' into Aleo instructions

⛓ Constraints
'hello.aleo/main' - 33 constraints (called 1 time)

➡️ Output
• 3u32

{"type":"execute","id":"at1 ... (transaction object truncated for brevity)

Leo ✅ Executed 'hello.aleo/main' (in "/hello/build")

See Execute for more details.

leo debug

Back to Top

To start the interactive debugger, run leo debug in a Leo project.

> leo debug
Leo ✅ Compiled sources for 'workshop'
This is the Leo Interpreter. Try the command `#help`.

? Command? ›

See Debugging for more details.

leo query

Back to Top

Use leo query to get data from a network supporting the canonical snarkOS endpoints.

Query live data from the Aleo network

Usage: leo query [OPTIONS] <COMMAND>

Commands:
block Query block information
transaction Query transaction information
program Query program source code and live mapping values
stateroot Query the latest stateroot
committee Query the current committee
mempool Query transactions and transmissions from the memory pool
peers Query peer information
help Print this message or the help of the given subcommand(s)

Options:
-d Print additional information for debugging
-e, --endpoint <ENDPOINT> Endpoint to retrieve network state from. Defaults to entry in `.env`.
-n, --network <NETWORK> Network to use. Defaults to entry in `.env`.
-q Suppress CLI output
--path <PATH> Path to Leo program root folder
--home <HOME> Path to aleo program registry
-h, --help Print help

leo add

Back to Top

tip

Use this command to add a dependency to your program. This is a precursor to being able to import a program inside the leo source code file.

The command can be used to add an already deployed program as a project dependency. {$PROGRAM} should be the name of the program to add as a dependency.

leo add {$PROGRAM} // {$NETWORK} defaults to `testnet`.
leo add -n {$NETWORK} {$PROGRAM} // To pull from a custom network.

The command can be used to add a local Leo program as a project dependency. {$PATH} should be the relative path to the project directory.

leo add -l {$PATH} {$PROGRAM} 

See Dependency Management for more details.

leo remove

Back to Top

Removes the dependency, local or remote, from the project.

leo remove credits.aleo

See Dependency Management for more details.

leo clean

Back to Top

To clean the build directory, run:

leo clean
console output:
  Leo 🧹 Cleaned the outputs directory (in "...")
Leo 🧹 Cleaned the build directory (in "...")

leo update

Back to Top

To download and install the latest Leo version run:

leo update
console output:
Checking target-arch... x86_64-apple-darwin

Checking current version... v1.8.3

Checking latest released version... v1.8.3

Updating Leo is on the latest version 1.9.0

leo example

Back to Top

danger

leo example has been deprecated and will no longer be supported.