> ## Documentation Index
> Fetch the complete documentation index at: https://docs.cowboy.inc/llms.txt
> Use this file to discover all available pages before exploring further.

# cowboy runner

> Register and manage compute runners

A runner is a machine that does off-chain work for actors. `cowboy runner` reads the runners on a network and lets an operator register and update one.

```text theme={"system"}
cowboy runner [OPTIONS] <COMMAND>
```

| Command | Description |
| - | - |
| [`get`](#cowboy-runner-get) | Get runner information by address |
| [`list`](#cowboy-runner-list) | List all active runners |
| [`register`](#cowboy-runner-register) | Register a new runner |
| [`update-capabilities`](#cowboy-runner-update-capabilities) | Complete replacement of this runner's on-chain capabilities; fields are not merged. |
| [`update-rate-card`](#cowboy-runner-update-rate-card) | Update this runner's LLM token prices, preserving other rates. |
| [`update-endpoint`](#cowboy-runner-update-endpoint) | Update this runner's advertised CIP-15 route-serving endpoint in place and wait for committed execution. |
| [`deregister`](#cowboy-runner-deregister) | Deregister this runner and refund its stake (CIP-9 §5.1.1). |
| [`submit-tee-attestation`](#cowboy-runner-submit-tee-attestation) | Submit a job-scoped TEE attestation record |

## cowboy runner get

Get runner information by address

```text theme={"system"}
cowboy runner get [OPTIONS] --address <ADDRESS>
```

| Option | Description |
| - | - |
| `-a, --address <ADDRESS>` | Runner address (hex format) |

## cowboy runner list

List all active runners

```text theme={"system"}
cowboy runner list [OPTIONS]
```

## cowboy runner register

Register a new runner

```text theme={"system"}
cowboy runner register [OPTIONS] --grant-identity-json <GRANT_IDENTITY_JSON>
```

| Option | Description |
| - | - |
| `--grant-identity-json <GRANT_IDENTITY_JSON>` | JSON file containing a signing-key byte array and a recipient-key codec-hex string |
| `--stake <STAKE>` | Stake amount (in CBY, e.g., 50000). Default: `50000`. |
| `--nonce <NONCE>` | Transaction nonce (0 = auto). Default: `0`. |
| `--encryption-pubkey <ENCRYPTION_PUBKEY>` | X25519 encryption public key (hex, 32 bytes) for receiving ECDH-sealed volume keys |
| `--route-serving-endpoint <ROUTE_SERVING_ENDPOINT>` | Public base URL for this runner's CIP-15 off-chain route-serving endpoint |
| `--statusz-url <STATUSZ_URL>` | Operator-advertised /statusz base URL (CIP-42 discovery) |
| `--job-types <JOB_TYPES>` | Job types this runner advertises (comma-separated). Defaults to "llm,http,mcp,agent". Default: `llm http mcp agent`. |
| `--models <MODELS>` | CIP-2: model names this runner serves for llm/agent jobs (comma-separated), in the namespace jobs request (e.g. "claude-sonnet-5,gpt-5"). "\*" = any model — the default, written on-chain explicitly; the registry rejects llm/agent runners that advertise no models. Default: `*`. |
| `--llm-input-token-price <LLM_INPUT_TOKEN_PRICE>` | Input token price in CBY wei per token. Default: `1000`. |
| `--llm-output-token-price <LLM_OUTPUT_TOKEN_PRICE>` | Output token price in CBY wei per token. Default: `2000`. |
| `--container-tiers <CONTAINER_TIERS>` | CIP-10: isolation tiers the container sandbox provides (comma-separated: standard, strong). Requires "container" in `--job-types`; advertises all protocol base images and the `--container-max-`\* capacity |
| `--container-max-cpu-millicores <CPU_MILLICORES>` | Largest CPU reservation (millicores) one container job may hold. Default: `2000`. |
| `--container-max-memory-mib <MEMORY_MIB>` | Largest memory reservation (MiB) one container job may hold. Default: `2048`. |
| `--container-max-scratch-disk-mib <SCRATCH_DISK_MIB>` | Largest scratch-disk reservation (MiB) one container job may hold. Default: `2048`. |
| `--container-max-gpu-count <GPU_COUNT>` | GPUs one container job may reserve. Default: `0`. |
| `--serves-registered-images` | advertise that this runner provisions + digest-verifies REGISTERED images locally (digest-ref jobs only match runners with this flag). Requires `--container-tiers` |
| `--structured-output` | CIP-45: advertise that this runner serves structured LLM jobs (`runner.llm(..., response_model=...)`) through an OpenAI-compatible provider. Requires "llm" in `--job-types`. A runner whose registration states it without serving them refuses to start |
| `--inference` | Advertise `inference.chat_completions` in `provides`, so the chain can assign this runner to inference sessions (`cowboy session open --model`) |

## cowboy runner update-capabilities

Complete replacement of this runner's on-chain capabilities; fields are not merged. Waits for committed execution. Takes effect at the next block's selection; in-flight assignments are unaffected

```text theme={"system"}
cowboy runner update-capabilities [OPTIONS] --capabilities-json <CAPABILITIES_JSON> --grant-identity-json <GRANT_IDENTITY_JSON>
```

| Option | Description |
| - | - |
| `--capabilities-json <CAPABILITIES_JSON>` | Local JSON file containing the complete desired RunnerCapabilities (without identity keys) |
| `--grant-identity-json <GRANT_IDENTITY_JSON>` | JSON file containing a signing-key byte array and a recipient-key codec-hex string |

Example:

```bash theme={"system"}
cowboy runner update-capabilities --capabilities-json ./capabilities.json --grant-identity-json ./grant-identity.json
```

The capabilities document must explicitly include every RunnerCapabilities field, including false, empty arrays and null to clear settings. Identity keys come only from the local grant identity file.

## cowboy runner update-rate-card

Update this runner's LLM token prices, preserving other rates. Waits for committed execution; the rate-card cooldown applies

```text theme={"system"}
cowboy runner update-rate-card [OPTIONS] --llm-input-token-price <LLM_INPUT_TOKEN_PRICE> --llm-output-token-price <LLM_OUTPUT_TOKEN_PRICE>
```

| Option | Description |
| - | - |
| `--llm-input-token-price <LLM_INPUT_TOKEN_PRICE>` | Input token price in CBY wei per token |
| `--llm-output-token-price <LLM_OUTPUT_TOKEN_PRICE>` | Output token price in CBY wei per token |

## cowboy runner update-endpoint

Update this runner's advertised CIP-15 route-serving endpoint in place and wait for committed execution. No deregister/re-register. Omit `--route-serving-endpoint` to CLEAR it

```text theme={"system"}
cowboy runner update-endpoint [OPTIONS]
```

| Option | Description |
| - | - |
| `--route-serving-endpoint <ROUTE_SERVING_ENDPOINT>` | Public https base URL where the gateway proxies this runner's `Target::Runner` routes (e.g. [https://runner-01.example.ts.net:8080](https://runner-01.example.ts.net:8080)). Omit to clear the advertised endpoint |

## cowboy runner deregister

Deregister this runner and refund its stake (CIP-9 §5.1.1). Rejected while the runner has assigned jobs, active delegated stake, or is inside the post-settlement dispute window

```text theme={"system"}
cowboy runner deregister [OPTIONS]
```

| Option | Description |
| - | - |
| `--nonce <NONCE>` | Transaction nonce (0 = auto). Default: `0`. |

## cowboy runner submit-tee-attestation

Submit a job-scoped TEE attestation record

```text theme={"system"}
cowboy runner submit-tee-attestation [OPTIONS] --job-id <JOB_ID> --tee-type <TEE_TYPE> --measurement-hash <MEASUREMENT_HASH> --attestation-data <ATTESTATION_DATA> --quote-signature <QUOTE_SIGNATURE> --expires-at-block <EXPIRES_AT_BLOCK>
```

| Option | Description |
| - | - |
| `--job-id <JOB_ID>` | Job ID, 32-byte hex |
| `--tee-type <TEE_TYPE>` | TEE type: sgx, tdx, sev-snp (alias amd-sev-snp), or nitro |
| `--measurement-hash <MEASUREMENT_HASH>` | Measurement hash, 32-byte hex |
| `--attestation-data <ATTESTATION_DATA>` | Vendor quote/report bytes as hex |
| `--quote-signature <QUOTE_SIGNATURE>` | Native quote signature slot JSON, with its algorithm-tagged inline key. ECDSA signatures use raw low-S r\|\|s; Nitro uses Ed25519 |
| `--expires-at-block <EXPIRES_AT_BLOCK>` | Attestation expiry block |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.