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

# Utilities

Five verbs that stand on their own.

## numbers

```bash theme={null}
telnyx-acp numbers
```

The phone numbers in the account and what each is attached to, which is where `add phone` and `text --from` pick from.

## models

```bash theme={null}
telnyx-acp models
```

The inference models the account can use, the hosted ones first, then the ones that need the user's own key as a secret. `create --model`, `set model` and the wizard take any of them.

## login

```bash theme={null}
telnyx-acp login
```

Signs in once, through `telnyx-edge`, and every other verb reuses the session. A script sets `TELNYX_API_KEY` in the environment instead. The access token lives under an hour; when a verb finds it expired, or within a minute of it, the CLI renews it from the refresh token and writes the new tokens back where `telnyx-edge` keeps them, so no verb, `dev` included, sends you to `login` every hour. A renewal the platform refuses, a revoked refresh token for example, ends the verb with exit 4, "Your session has expired.", the refusal in the hint and `telnyx-acp login` as the fix.

## validate

```bash theme={null}
telnyx-acp validate
```

Checks `agent.json` and the project against the spec, and every problem names the field and the fix. `dev` and `deploy` run the same checks before they act, `deploy` adding one, `TELNYX_PUBLIC_KEY` when the agent answers webhooks; `set` and `unset` check the schema only.

## update

```bash theme={null}
telnyx-acp update
telnyx-acp update --yes
```

Updates the CLI to its latest release. It asks the npm registry first, taking the newest of the `latest` and `beta` tags of `@telnyx/acp`, compares it with the running build, asks once, then runs `npm install -g @telnyx/acp@<version> --prefer-online` with the terminal handed over, using the npm that launched it, else the one beside the running node, else `npm` on PATH. When the registry does not list the package or cannot be reached, it falls back to the newest `agent-cli-v*` GitHub Release through `gh release list`, the channel of the internal installer, and runs that installer pinned to the version.

```text theme={null}
✓ telnyx-acp 0.1.0-beta.12 is current (npm is 0.1.0-beta.12)
✓ telnyx-acp 0.1.0-beta.12 → 0.1.0-beta.13
```

`--yes` skips the confirmation; without it and without a terminal the verb exits 2 when there is something to install. `--json` answers `{ package, current, latest, source, updated }`, `source` being `npm` or `github`. A registry that cannot be reached falls through to GitHub; when neither yields a release, or `npm install -g` fails, or on the GitHub path `gh` is missing or signed out, the verb ends with exit 1 naming what stood in the way, and the command to run by hand as the fix. On Windows the GitHub installer needs bash, under WSL or Git Bash.

```bash theme={null}
gh api -H 'Accept: application/vnd.github.raw' repos/team-telnyx/edge-compute-statefulactor/contents/packages/agent-cli/install.sh > /tmp/telnyx-acp-install.sh && bash /tmp/telnyx-acp-install.sh
```

That one-liner is the internal installer run by hand, for a Telnyx machine where the registry is not the channel.

### The Newer-Version Notice

After any verb on a terminal, `--version` and `--help` included, the CLI prints one line on stderr when a newer release exists:

```text theme={null}
telnyx-acp 0.1.0-beta.7 is available (you have 0.1.0-beta.6): telnyx-acp update
```

The check runs beside the verb and holds the exit by at most a second; its result is kept for a day in `~/.telnyx-acp/update-check.json`, so most runs spawn nothing, and a check that failed is kept too rather than retried on every run. `TELNYX_ACP_HOME` moves that directory. The notice is off under `--json`, off a terminal, in `CI`, for `update` and `export`, and with `TELNYX_ACP_NO_UPDATE_CHECK=1`.
