> ## 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.

# deploy

```bash theme={null}
telnyx-acp deploy --dry-run
telnyx-acp deploy
```

| Flag | Meaning |
| - | - |
| `--yes` | Skip the confirmation. In a script without a terminal, `deploy` exits 2 without it. |
| `--dry-run` | Print the plan and ship nothing. It still looks each phone number up in the account and stops if one is missing or not yet active. It never asks for `TELNYX_PUBLIC_KEY`; a missing one is a line of the plan. |

The first `deploy` registers the function through `telnyx-edge new-func`. Every `deploy` generates `.telnyx/` inside the project, which [The Generated Code](/docs/agent-sdk/inside/generated-code) opens, links `@telnyx/acp` and `@telnyx/edge-runtime` into `.telnyx/node_modules` from the CLI's own copies, bundles the entry's module graph on this machine and ships one file. The platform builds it, typically about ten minutes the first time (`deploy` waits up to 25), and every `deploy` after that is a new revision, listed by [versions](/docs/agents/cli/versions). What it set up, the function, the mount URL, the actor type, the artifacts and the revision, is recorded under `deployed` in `agent.json`, which every later verb reads.

Around the function it sets up what `agent.json` declares. Each phone number is put on a Call Control application and a messaging profile, created when the number is bare. An email inbox is found or created and its domain subscribed to `email.received`. Each artifact's webhook is pointed at the function, with the previous webhook remembered so that `remove` and `delete` can restore it. It ends by printing the channels, the address, and the page URL and embed tag when `web` is set. A number's line ends with what its texting cannot do when the number's features say so, `domestic texts only: …` for one that can neither receive nor send international SMS. A messaging profile `deploy` creates is open to every destination.

A project with a phone number, an email inbox or a channel needs the `TELNYX_PUBLIC_KEY` secret, and `deploy` asks for it once on a terminal; in a script it stops and names the secret, so `add secret TELNYX_PUBLIC_KEY` first. [Deploy and Operate](/docs/agents/deploy-and-operate) walks through a deploy and [what to do when one fails](/docs/agents/deploy-and-operate#when-a-deploy-fails).
