The Forest CLI allows for operations to interact with a Filecoin node and the blockchain.

Environment Variables

For nodes not running on a non-default port, or when interacting with a node remotely, you will need to provide the multiaddress information for the node. You will need to either set the environment variable FULLNODE_API_INFO, or prepend it to the command, like so:

FULLNODE_API_INFO="..." forest wallet new -s bls

On Linux, you can set the environment variable with the following syntax

export FULLNODE_API_INFO="..."

Setting your API info this way will limit the value to your current session. Look online for ways to persist this variable if desired.

The syntax for the FULLNODE_API_INFO variable is as follows:

<admin_token>:/ip4/<ip of host>/tcp/<port>/http

This will use IPv4, TCP, and HTTP when communicating with the RPC API. The admin token can be found when starting the Forest daemon. This will be needed to create tokens with certain permissions such as read, write, sign, or admin.

Token flag

For nodes running on default port and when you are interacting locally, the admin token can also be set using --token flag:

forest-cli --token eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJBbGxvdyI6WyJyZWFkIiwid3JpdGUiLCJzaWduIiwiYWRtaW4iXSwiZXhwIjoxNjczMjEwMTkzfQ.xxhmqtG9O3XNTIrOEB2_TWnVkq0JkqzRdw63BdosV0c <subcommand>

Sending Filecoin tokens from your wallet

For sending Filecoin tokens, the Forest daemon must be running. You can do so by running:

forest --chain calibnet

Next, send Filecoin tokens to a wallet address:

forest-cli --token <admin_token> send <wallet-address> <amount in attoFIL>

where 1 attoFIL = $10^{−18}$ FIL.


Filecoin wallets are stored under the Forest data directory (e.g., ~/.local/share/forest in the case of Linux) in a keystore file.

All wallet commands require write permissions and an admin token (--token) to interact with the keystore. The admin token can be retrieved from forest startup logs or by running it with --save-token <PATH>.

Balance Retrieve the FIL balance of a given address Usage: forest-cli wallet balance <address>

Default Get the default, persisted address from the keystore Usage: forest-cli wallet default

Has Check if an address exists in the keystore shows true/false if exists or doesn't Usage: forest-cli wallet has <address>

List Display the keys in the keystore Usage: forest-cli wallet list

New Create a new wallet The signature type can either be secp256k1 or bls. Defaults to use bls Usage: forest-cli wallet new <bls/secp256k1>

Set-default Set an address to be the default address of the keystore Usage: forest-cli wallet set-default <address>

Import Import a private key to the keystore and create a new address. The default format for importing keys is hex encoded JSON. Use the export command to get formatted keys for importing. Usage: forest-cli wallet import <hex encoded json key>

Export Export a key by address. Use a wallet address to export a key. Returns a formatted key to be used to import on another node, or into a new keystore. Usage: forest-cli wallet export

Sign Use an address to sign a vector of bytes Usage: forest-cli wallet sign -m <hex message> -a <address>

Verify Verify the message's integrity with an address and signature Usage: forest-cli wallet verify -m <hex message> -a <address> -s <signature>


The chain-sync CLI can mark blocks to never be synced, provide information about the state of the syncing process, and check blocks that will never be synced (and for what reason).

Wait Wait for the sync process to be complete Usage: forest-cli sync wait Permissions: Read

Status Check the current state of the syncing process, displaying some information Usage: forest-cli sync status Permissions: Read

Check Bad Check if a block has been marked by, identifying the block by CID Usage: forest-cli sync check-bad -c <block cid> Permissions: Read

Mark Bad Mark a block as bad, the syncer will never sync this block Usage: forest-cli sync mark-bad -c <block cid> Permissions: Admin