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.

Installation​

Install Leo

Global Flags​

  • -d, --debug - Enables debugging mode
  • -h, --help - Prints help information
  • -V, --version - Prints version information

List of Commands:​

tip

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

  • example - Create a new Leo package from an example program.
  • new - Create a new Leo package in a new directory.
  • build - Compile the current package as a program.
  • run - Run a program with input variables.
  • execute - Execute a program with input variables.
  • clean - Clean the output directory.
  • update - Update to the latest version of Leo.
  • account - Create a new Aleo account.

leo example​

To list all available example programs, run:

leo example

# Output:

Create a new Leo example package in a new directory

Usage: leo example [OPTIONS] <COMMAND>

Commands:
lottery A public lottery program
tictactoe A standard tic-tac-toe game program
token A transparent & shielded custom token program
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
-h, --help Print help

To create a new Leo package from an example program, run:

leo example {$NAME}

leo new​

To create a new package, run:

leo new {$NAME}

Valid package names are snake_case: lowercase letters and numbers separated by underscores. This command will create a new directory with the given package name. The new package will have a directory structure as follows:

package/
β”œβ”€β”€ .env # Your program environment
β”œβ”€β”€ program.json # Your program manifest
β”œβ”€β”€ README.md # Your program description
β”œβ”€β”€ build/
β”œβ”€β”€ inputs/
β”‚ β”œβ”€β”€ hello.in # Your program inputs
└── src/
└── main.leo # Your program file

leo build​

info

This command is deprecated as of Leo v1.9.0. It will be removed in a future release.

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 run​

tip

Use this command to run your program before executing it.

To run a Leo transition function using inputs from the program input .in file.

leo run {$TRANSITION}

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' - 35 constraints (called 1 time)

➑️ Output
β€’ 3u32

Leo βœ… Finished 'hello.aleo/main' (in "/hello/build")

leo execute​

tip

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

To execute a Leo transition function using inputs from the program input .in file.

leo execute {$TRANSITION}

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' - 35 constraints (called 1 time)

➑️ Output
β€’ 3u32

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

Leo βœ… Executed 'hello.aleo/main' (in "/hello/build")

leo clean​

To clean the build directory, run:

leo clean
console output:
  Leo cleaned the build directory (in "/build/")

leo update​

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 account​

To create a new Aleo account, run:

leo account new

# Output:
Private Key APrivateKey1zkp...
View Key AViewKey1...
Address aleo1...

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

To list all options

leo account --help

# Output:
Create a new Aleo account

Usage: leo account [OPTIONS] <COMMAND>

Commands:
new Generates a new Aleo account
import Derive an Aleo account from a private key
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
-h, --help Print help