Skip to main content

Guru CLI

gurud is the all-in-one command-line interface (CLI). It allows you to run a Guru node, manage wallets and interact with the Guru network through queries and transactions. This introduction will explain how to install the gurud binary onto your system and guide you through some simple examples how to use gurud.

Prerequisites

Go

Guru is built using Go version 1.24.6+. Check your version with:

go version

Once you have installed the right version, confirm that your GOPATH is correctly configured by running the following command and adding it to your shell startup script:

export PATH=$PATH:$(go env GOPATH)/bin

jq

Guru scripts are using jq version 1.6+. Check your version with:

jq --version

Installation

You can download the latest binaries from the repo and install them, or you can build and install the gurud binaries from source or using Docker.

Download the binaries

  • Go to the releases section of the repository
  • Choose the desired release or pre-release you want to install on your machine
  • Select and download from the Assets dropdown the corresponding tar or zip file for your OS
  • Extract the files. The gurud binaries is located in the bin directory of the extrated files
  • Add the gurud binaries to your path, e.g. you can move it to $(go env GOPATH)/bin

After installation is done, check that the gurud binaries have been successfully installed:

gurud version

Build From Source

Clone and build the Guru from source using git. The <tag> refers to a release tag on Github. Check the latest Guru version on the releases section of the repository:

git clone https://github.com/gurufinglobal/guru.git
cd guru
git fetch
git checkout <tag>
make install

After installation is done, check that the gurud binaries have been successfully installed:

gurud version
info

If the gurud: command not found error message is returned, confirm that you have configured Go correctly.

Docker

When it comes to using Docker with Guru, there are two options available: Build a binary of the Guru daemon inside a dockerized build environment or build a Docker image, that can be used to spin up individual containers running the Guru binary. For information on how to achieve this, proceed to the dedicated page on working with Docker.

Run an Guru node

To become familiar with Guru, you can run a local blockchain node that produces blocks and exposes EVM and Cosmos endpoints. This allows you to deploy and interact with smart contracts locally or test core protocol functionality.

Run the local node by executing the local_node.sh script in the base directory of the repository:

./local_node.sh

The script stores the node configuration including the local default endpoints under ~/.gurud/config/config.toml. If you have previously run the script, the script allows you to overwrite the existing configuration and start a new local node.

Once your node is running you will see it validating and producing blocks in your local Guru blockchain:

12:59PM INF executed block height=1 module=state num_invalid_txs=0 num_valid_txs=0 server=node
# ...
1:00PM INF indexed block exents height=7 module=txindex server=node

For more information on how to customize a local node, head over to the Single Node page.

Using gurud

After installing the gurud binary, you can run commands using:

gurud [command]

There is also a -h, --help command available

gurud -h

It is possible to maintain multiple node configurations at the same time. To specify a configuration use the --home flag. In the following examples we will be using the default config for a local node, located at ~/.gurud.

Manage wallets

You can manage your wallets using the gurud binary to store private keys and sign transactions over CLI. To view all keys use:

gurud keys list \
--home ~/.gurud \
--keyring-backend test

# Example Output:
# - address: guru19xnmslvl0pcmydu4m52h2gf0std5ee5pfgpyuf
# name: dev0
# pubkey: '{"@type":"/cosmos.evm.crypto.v1.ethsecp256k1.PubKey","key":"AzKouyoUL0UUS1qRUZdqyVsTPkCAFWwxx3+BTOw36nKp"}'
# type: local

You can generate a new key/mnemonic with a $NAME with:

gurud keys add [name] \
--home ~/.gurud \
--keyring-backend test

To export your guru key as an Ethereum private key

gurud keys unsafe-export-eth-key [name] \
--home ~/.gurud \
--keyring-backend test

For more about the available key commands, use the --help flag

gurud keys -h
tip

For more information about the Keyring and its backend options, click here.

Interact with a Network

You can use gurud to query information or submit transactions on the blockchain. Queries and transactions are requests that you send to an Guru node through the CometBFT RPC.

tip

To use the CLI, you will need to provide a CometBFT RPC address for the --node flag.

Set Network Config

In the local setup the node is set to tcp://localhost:26657. You can view your node configuration with:

gurud config view client \
--home ~/.gurud

###############################################################################
### Client Configuration ###
###############################################################################

# The network chain ID
chain-id = "guru_631-1"

# The keyring's backend, where the keys are stored (os|file|kwallet|pass|test|memory)
keyring-backend = "test"

# Default key name, if set, defines the default key to use for signing transaction when the --from flag is not specified
keyring-default-keyname = ""

# CLI output format (text|json)
output = "text"

# <host>:<port> to CometBFT RPC interface for this chain
node = "tcp://localhost:26657"

# Transaction broadcasting mode (sync|async)
broadcast-mode = "sync"

You can set your node configuration to send requests to a different network by changing the endpoint. Learn about more node configurations here.

Queries

You can query information on the blockchain using gurud query (short gurud q). To view the account balances by its address stored in the bank module, use:

gurud q bank balances [address] \
--home ~/.gurud

# Example Output:
balances:
- amount: "1000000000000000000000"
denom: agxn
pagination:
total: "1"

To view other available query commands, use:

# for all Queries
gurud q

# for querying commands in the bank module
gurud q bank

Transactions

You can submit transactions to the network using gurud tx. This creates, signs and broadcasts a tx in one command. To send tokens from an account in the keyring to another address with the bank module, use:

gurud tx bank send [from_key_or_address] [to_address] [amount] \
--home ~/.gurud \
--fees 50000000000agxn \
-b block

# Example Output:
# ...
# txhash: 7BA2618295B789CC24BB13E654D9187CDD264F61FC446EB756EAC07AF3E7C40A

To view other available transaction commands, use:

# for all transaction commands
gurud tx

# for Bank transaction subcommands
gurud tx bank

Now that you've learned the basics of how to run and interact with an Guru network, head over to configurations for futher customization.