Skip to main content

Vision

The Cowboy CLI (cowboy) is the primary tool for developers building on the Cowboy blockchain. It handles project scaffolding, wallet management, actor development, token operations, data feeds, and deployment — all from a single binary. Design principles:
  • Zero-config startcowboy init local creates a ready-to-code project with a funded wallet in one command.
  • Convention over configuration — Keys live in .cowboy/, actors live in actors/, and the CLI finds them automatically.
  • Explicit over magic — Every command shows what it does. No hidden state, no surprise network calls.
  • Network-aware — Commands target local or dev. The network choice affects defaults (RPC URL, faucet, chain ID).

Command Overview

CommandPurpose
cowboy versionPrint CLI version
cowboy init <network>Scaffold a project, generate wallet, fund via faucet
cowboy walletCreate and manage secp256k1 wallets (create, address, balance, upgrade, mnemonic)
cowboy accountQuery account info (balance, nonce, info)
cowboy actor new <name>Scaffold a new actor from a template
cowboy actor deployDeploy an actor to the chain
cowboy actor executeCall an actor handler
cowboy actor getQuery actor state
cowboy actor addressCompute actor address without deploying
cowboy actor logsFetch actor event log
cowboy transferTransfer CBY between accounts
cowboy transactionSubmit and query transactions (submit, get, status)
cowboy blockQuery blocks (by-height, by-hash, latest)
cowboy queryBulk queries (blocks, transactions)
cowboy runnerRunner operations (get, list, register)
cowboy jobOff-chain compute jobs (get, status, runners, results, verified, submit)
cowboy tokenCIP-20 token operations (create, transfer, approve, mint, burn, freeze, unfreeze, info, balance, list)
cowboy watchtowerData feed operations (init, new feed, publish, subscribers, list, feeds)
All commands that need a private key or RPC URL use auto-discovery.

Project Structure

After cowboy init local, the directory looks like this:
my-project/
├── .cowboy/
│   ├── keys/
│   │   └── local              # secp256k1 private key (PEM format)
│   └── config.json            # Network config (environments, active network)
├── actors/
│   ├── hello/
│   │   └── main.py            # Starter actor
│   └── feed-subscriber/
│       └── main.py            # Feed subscriber template
└── cowboy.toml                # Project manifest (future use)

Key conventions

  • .cowboy/keys/<network> — Per-environment private keys in PEM format.
  • .cowboy/config.json — Stores environments, RPC URLs, and the active network. Commands use this instead of requiring --rpc-url every time.
  • actors/ — Each subdirectory is one actor. The directory name is the actor name.

Networks

NetworkRPC URLFaucet
localhttp://localhost:4000Built-in (POST /faucet)
devhttp://rpc-01.mesa.cowboylabs.net:4000Built-in (POST /faucet)
summitTBDTBD

Zero-Config Workflow

After running cowboy init local, all commands work without any flags:
cowboy actor deploy --code actors/hello/main.py    # key + rpc auto-discovered
cowboy actor execute --actor 0x... --handler inc --payload 0x  # same
cowboy transfer --to 0x... --amount 100            # same
cowboy wallet balance                              # same
Explicit --private-key and --rpc-url flags still work and take priority. See individual spec files for detailed behavior: