Download & setup

The Harmony CLI tool is used to interact with the Harmony blockchain.

Throughout this guide, we will use the following syntax:

  • ./hmy: This is the CLI program

  • ./hmy.sh -- : This is the command to use the CLI with a shell wrapper (for macOS)

  • <argument>: This is a required argument

  • [argument]: This is an optional argument

  • $ : This is the start of a line in the shell

  • / : This is a line break, used to break up a line while writing a command

Download Harmony CLI tool

1. For Linux

Enter the following command into your shell of choice:

$ curl -LO https://harmony.one/hmycli && mv hmycli hmy && chmod +x hmy

If you have permission issues, enter the commands with "sudo" at the beginning, i.e. "sudo curl -LO https://harmony.one/hmycli && mv hmycli hmy && chmod +x hmy"

2. For MacOS

hmy depends on some dynamic libraries, hence we recommend using the shell wrapper. Enter there commands into your terminal:

$ curl -O https://raw.githubusercontent.com/harmony-one/go-sdk/master/scripts/hmy.sh
$ chmod u+x hmy.sh
$ ./hmy.sh -d

Now you can use hmy.sh as a wrapper over hmy and you should assume that all references to hmy in these documents refer to hmy.sh. For example, the command ./hmy becomes ./hmy.sh -- .

Note that since hmy is not statically linked, you cannot arbitrarily move hmy.sh to anywhere on your filesystem like you could with a single binary.

3. Compiling from source

If you are interested in compiling from source, then the process is more involved.

Steps:

  1. Clone the repository at the same level as the main Harmony repo:

Have mcl, bls all built and prepared. This may require you to see instructions in the harmony repo's readme.

$ cd /Users/edgar/Repos/harmony-work/src/github.com/harmony-one
$ ls
bls harmony mcl
$ git clone https://github.com/harmony-one/go-sdk.git

2. Then setup the build flags:

$ source harmony/scripts/setup_bls_build_flags.sh

3. Call make in the go-sdk repo. This builds a binary named hmy:

$ cd go-sdk
$ make

Congratulations! You can now use the binary to run the CLI.