Skip to main content

Overview

Cowboy configuration lives in three layers:
  1. Validator — a per-validator YAML file plus genesis.json, generated by the setup binary (./scripts/run_build.sh for a local devnet)
  2. Node environment variables — runtime knobs for the RPC server
  3. CLI project config.cowboy/config.json in your project, created by cowboy init

Validator config file (YAML)

Generated as test/<validator-pubkey>.yaml on a local devnet. Key fields:

Identity and keys

Network

Storage, runtime, logging

Chain and services

Genesis (genesis.json)

Node environment variables

Consensus timing (leader timeout, certification timeout, fetch limits) is compiled into the validator binary and is not file-configurable.

CLI project config (.cowboy/config.json)

Created by cowboy init <network>; supports multiple named environments:
Resolution order (first match wins):
  • Private key: --private-key flag → COWBOY_PRIVATE_KEY env → key_file of the active environment → legacy .cowboy/key
  • RPC URL: --rpc-url flag → COWBOY_RPC_URL env → active environment’s rpc_urlhttp://localhost:4000
cowboy init local targets a local validator; cowboy init dev targets the hosted devnet. See cowboy init.

Runner daemon

The off-chain runner reads its executor credentials from the environment — OPENAI_API_KEY, ANTHROPIC_API_KEY, and LLM_MODEL for the LLM executor — generates its key material on first run, and registers on-chain with a stake (cowboy runner register --stake 50000, denominated in CBY). Stake gates eligibility twice: registration requires stake ≥ 1.5× the runner’s declared maximum job value, and at dispatch a runner is only a candidate for jobs whose price its effective stake covers at 1.5×. See cowboy runner and CIP-2.

Further reading