Skip to main content

Envio Command Line Interface

This comprehensive reference guide covers all available commands and options in the Envio CLI tool. Use this documentation to explore the full capabilities of the envio command and its subcommands for managing your indexing projects.

Getting Started

The Envio CLI provides a powerful set of tools for creating, developing, and managing your indexers. Whether you're starting a new project, running a development server, or deploying to production, the CLI offers commands to simplify and automate your workflow.

Command Overview

The commands are organized into the following categories:

Initialization Commands

Development Commands

  • envio dev - Run in development mode with hot reloading
  • envio codegen - Generate code from configuration files
  • envio start - Start the indexer without code generation

Environment Management

Analysis Tools

Global Command

envio

The base command that provides access to all Envio functionality.

Usage: envio [OPTIONS] <COMMAND>

Options:
  • -d, --directory <DIRECTORY> — The directory of the project. Defaults to current dir ("./")
  • -o, --output-directory <OUTPUT_DIRECTORY> — The directory within the project that generated code should output to (Default: generated)
  • --config <CONFIG> — The file in the project containing config (Default: config.yaml)

Initialization Commands

These commands help you create and set up new indexing projects quickly.

envio init

Initialize an indexer with one of the initialization options.

Usage: envio init [OPTIONS] [COMMAND]

Subcommands:
  • contract-import — Initialize Evm indexer by importing config from a contract for a given chain
  • template — Initialize Evm indexer from an example template
  • fuel — Initialization option for creating Fuel indexer
Options:
  • -n, --name <NAME> — The name of your project
  • -l, --language <LANGUAGE> — The language used to write handlers (Options: javascript, typescript, rescript)
  • --api-token <API_TOKEN> — The hypersync API key to be initialized in your templates .env file

envio init contract-import

Initialize Evm indexer by importing config from a contract for a given chain.

Usage: envio init contract-import [OPTIONS] [COMMAND]

Subcommands:
  • explorer — Initialize by pulling the contract ABI from a block explorer
  • local — Initialize from a local json ABI file
Options:
  • -c, --contract-address <CONTRACT_ADDRESS> — Contract address to generate the config from
  • --single-contract — If selected, prompt will not ask for additional contracts/addresses/networks
  • --all-events — If selected, prompt will not ask to confirm selection of events on a contract

envio init contract-import explorer

Initialize by pulling the contract ABI from a block explorer.

Usage: envio init contract-import explorer [OPTIONS]

Options:
  • -b, --blockchain <BLOCKCHAIN> — Network to import the contract from (Options include ethereum-mainnet, polygon, arbitrum-one, etc.)

envio init contract-import local

Initialize from a local json ABI file.

Usage: envio init contract-import local [OPTIONS]

Options:
  • -a, --abi-file <ABI_FILE> — The path to a json abi file
  • --contract-name <CONTRACT_NAME> — The name of the contract
  • -b, --blockchain <BLOCKCHAIN> — Name or ID of the contract network
  • -r, --rpc-url <RPC_URL> — The rpc url to use if the network id used is unsupported by our hypersync
  • -s, --start-block <START_BLOCK> — The start block to use on this network

envio init template

Initialize Evm indexer from an example template.

Usage: envio init template [OPTIONS]

Options:
  • -t, --template <TEMPLATE> — Template to use (Options: greeter, erc20)

envio init fuel

Initialization option for creating Fuel indexer.

Usage: envio init fuel [COMMAND]

Subcommands:
  • contract-import — Initialize Fuel indexer by importing config from a contract
  • template — Initialize Fuel indexer from an example template

envio init fuel contract-import

Initialize Fuel indexer by importing config from a contract for a given chain.

Usage: envio init fuel contract-import [OPTIONS] [COMMAND]

Subcommands:
  • local — Initialize from a local json ABI file
Options:
  • -c, --contract-address <CONTRACT_ADDRESS> — Contract address to generate the config from
  • --single-contract — If selected, prompt will not ask for additional contracts/addresses/networks
  • --all-events — If selected, prompt will not ask to confirm selection of events on a contract

envio init fuel contract-import local

Initialize from a local json ABI file.

Usage: envio init fuel contract-import local [OPTIONS]

Options:
  • -a, --abi-file <ABI_FILE> — The path to a json abi file
  • --contract-name <CONTRACT_NAME> — The name of the contract

envio init fuel template

Initialize Fuel indexer from an example template.

Usage: envio init fuel template [OPTIONS]

Options:
  • -t, --template <TEMPLATE> — Name of the template (Options: greeter)

Development Commands

These commands help you develop, test, and run your indexers locally.

envio dev

Development commands for starting, stopping, and restarting the indexer with automatic codegen for any changed files.

Usage: envio dev

envio stop

Stop the local environment - delete the database and stop all processes (including Docker) for the current directory.

Usage: envio stop

envio codegen

Generate indexing code from user-defined configuration & schema files.

Usage: envio codegen

envio start

Start the indexer without any automatic codegen.

Usage: envio start [OPTIONS]

Options:
  • -r, --restart — Clear your database and restart indexing from scratch
  • -b, --bench — Saves benchmark data to a file during indexing

Environment Management Commands

These commands help you manage your local development environment.

envio local

Prepare local environment for envio testing.

Usage: envio local <COMMAND>

Subcommands:
  • docker — Local Envio and ganache environment commands
  • db-migrate — Local Envio database commands

envio local docker

Local Envio and ganache environment commands.

Usage: envio local docker <COMMAND>

Subcommands:
  • up — Create docker images required for local environment
  • down — Delete existing docker images on local environment

envio local docker up

Create docker images required for local environment.

Usage: envio local docker up

envio local docker down

Delete existing docker images on local environment.

Usage: envio local docker down

envio local db-migrate

Local Envio database commands.

Usage: envio local db-migrate <COMMAND>

Subcommands:
  • up — Migrate latest schema to database
  • down — Drop database schema
  • setup — Setup database by dropping schema and then running migrations

envio local db-migrate up

Migrate latest schema to database.

Usage: envio local db-migrate up

envio local db-migrate down

Drop database schema.

Usage: envio local db-migrate down

envio local db-migrate setup

Setup database by dropping schema and then running migrations.

Usage: envio local db-migrate setup

Analysis Tools

These commands help you analyze and optimize your indexer's performance.

envio benchmark-summary

Prints a summary of the benchmark data after running the indexer with envio start --bench flag or setting 'ENVIO_SAVE_BENCHMARK_DATA=true'.

Usage: envio benchmark-summary

Command Reference Table

CommandDescriptionCommon Use Case
envio initCreate new indexerStarting a new project
envio devRun in development modeLocal development with hot reload
envio startStart indexerProduction or testing runs
envio stopStop all processesCleaning up environment
envio codegenGenerate codeAfter changing config or schema
envio local docker upStart Docker containersSetting up environment
envio local db-migrate setupInitialize databaseBefore first run

Advanced Usage Examples

Creating a New Indexer from an Existing Contract

envio init contract-import explorer -b ethereum-mainnet -c 0x1234...

Starting the Indexer in Development Mode

envio dev

Running Benchmarks

envio start --bench
envio benchmark-summary