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/
└── 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 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

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")

leo add

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.

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.

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

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

leo deploy

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`).

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