Skip to main content

Environment Configuration


Taqueria Environments provide a powerful and flexible way to develop Tezos projects in multiple contexts. These environments can be used throughout the life cycle of a project from development to production.


To target an environment for a stateful task such as taq originate, add the --env flag with the name of the environment you would like to target. For example, to target an environment named kathmandu_env for an origination, you would use the following command:

taq originate --env kathmandu_env

Example Environments

Environments are declared in .taq/config.json

    "environmentDefault": "development",
"environments": {
"development": {
"type": "flextesa",
"label": "Local Tezos Sandbox"
"testing": {
"type": "simple",
"label": "ghostnet",
"rpcUrl": ""
"production": {
"type": "simple",
"label": "mainnet",
"rpcUrl": ""

The above example shows 3 environments: development, testing, and production.

Each environment has a type. The development environment is flextesa which uses the flextesa plugin for a local sandbox. The testing and production environments are both the simple type which use only the rpcUrl.

Other environment types can be created with a plugin and it can define additional environment fields as needed.

The Default Environment

In the above example, the default environment is development. For most taq commands the default environment will be used unless the --env flag is provided.

Local Config

Each environment also has a config.local... file.

Going back to the example config.json above, it has three environments. So, each would have their own config.local... file:

  • config.local.development.json
  • config.local.testing.json
  • config.local.production.json

These local config files are intended to store custom settings that are specific to a single developer's context.

For example, when deploying a contract to a sandbox or a test environment, the config.local... file could contain the address of a contract deployed by a developer. Since each developer working on the same project would each have their own config.local... file for each environment, they will have an isolated context when working.

The config.local... files should be excluded from git commits, and are listed in the .gitignore by default.

On the other hand, the main config.json contains settings that belong to the project itself and should be shared by all developers working on that project since those settings are common.

Deploying and Transferring with Mainnet


Improvements are on the way. However, we currently only support signing in memory and we require a mnemonic to be written in the config file, so do not commit this file or delete the mnemonic before doing so. This is not the safest way to interact with mainnet so proceed with caution

Add the accounts field to the config.local.production.json file. For example:

"networkName": "mainnet",
"accounts": {
"tempUser": {
"mnemonic": <12-24 words mnemonic generated via a wallet>

To interact with mainnet using tempUser, users must include the --env and the --sender flags. E.g. taq deploy counter --env production --sender tempUser