> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.elacity.ai/llms.txt.
> For full documentation content, see https://docs.elacity.ai/llms-full.txt.

# Environment Setup

This guide walks you through setting up the core building blocks of Elacity: a prompt registry, an environment, and optionally a fleet and LLM provider. By the end you'll have a working foundation for versioning and deploying prompts.

## Set up a Prompt Registry

A registry is where your versioned prompt artifacts live — think of it as a package repository scoped to your organization.

<Steps>
  <Step title="Navigate to Registries">
    From your organization dashboard, click **Registries** in the sidebar.

    ![Navigate to the Registries page](https://files.buildwithfern.com/elacity.docs.buildwithfern.com/53d63e2f0e85c2ffcd982bf28dc33eb4c556533d9e20f3a66b0646e4d0b8de7c/docs/assets/screenshots/registries-sidebar.png)
  </Step>

  <Step title="Create a new registry">
    Click **Create Registry** and fill in:

    * **Name** — a human-readable label (e.g. "Production Prompts")
    * **Visibility** — choose **Public** or **Private**

    ![Create a new registry](https://files.buildwithfern.com/elacity.docs.buildwithfern.com/2f666ff1ef608fafd8fe283f61ce60ad41974513135067a1cb68ef6335d7ed1b/docs/assets/screenshots/create-registry.png)
  </Step>
</Steps>

### Public vs Private Registries

|                | Public                                                    | Private                                                       |
| -------------- | --------------------------------------------------------- | ------------------------------------------------------------- |
| **Access**     | Anyone can read without authentication                    | Restricted to org members and API keys                        |
| **Use case**   | Open-source prompts, community templates, shared examples | Proprietary prompts, internal agent logic, production systems |
| **API access** | No `X-API-Key` header required                            | Requires a valid `X-API-Key` header                           |

**Accessing a public registry** — no authentication needed:

```bash
curl "https://elacity.ai/api/registries/artifact-versions/content?\
registryRef=your-org/public-prompts&\
promptName=greeting&\
version=1.0.0&\
model=generic"
```

**Accessing a private registry** — requires your API key:

```bash
curl -H "X-API-Key: YOUR_API_KEY" \
  "https://elacity.ai/api/registries/artifact-versions/content?\
registryRef=your-org/internal-prompts&\
promptName=greeting&\
version=1.0.0&\
model=generic"
```

<Note>
  Public registries are great for sharing prompt templates with the community or across teams. Use private registries for anything you don't want exposed outside your organization.
</Note>

## Add an Environment

Environments let you isolate provider credentials, variables, and configuration per deployment stage. A typical setup includes `dev`, `staging`, and `prod` environments.

<Steps>
  <Step title="Navigate to Environments">
    Click **Environments** in the sidebar.

    ![Navigate to the Environments page](https://files.buildwithfern.com/elacity.docs.buildwithfern.com/1e2b8fae8cd6cbe06f6b211afd873bce6bdb1fa5d2baf74488287e2ec66821b5/docs/assets/screenshots/environments-sidebar.png)
  </Step>

  <Step title="Create an environment">
    Click **Create Environment** and give it a name (e.g. `dev`).

    ![Create a new environment](https://files.buildwithfern.com/elacity.docs.buildwithfern.com/07a542a6e5390036e200dcebbe4891a6810b304e3e2898cd9adad76e67b24dd4/docs/assets/screenshots/create-environment.png)
  </Step>

  <Step title="Configure a provider">
    Within your new environment, set up a deployment provider (e.g. VAPI, Ultravox, or Telnyx). Add the provider's API credentials so Elacity can deploy agents on your behalf.

    ![Configure a provider in the environment](https://files.buildwithfern.com/elacity.docs.buildwithfern.com/073473b11dc4c2dbfedb0d053644ce8caf787b39f368a6e5337d444e9cd1a765/docs/assets/screenshots/configure-provider.png)
  </Step>

  <Step title="Add variables">
    Define key-value pairs that get injected into your prompts at deployment time. For example:

    | Variable           | Value                                                |
    | ------------------ | ---------------------------------------------------- |
    | `COMPANY_NAME`     | Acme Corp                                            |
    | `SUPPORT_URL`      | [https://support.acme.com](https://support.acme.com) |
    | `ESCALATION_PHONE` | +1-555-0100                                          |

    Variables are resolved during prompt compilation, so your prompt templates stay generic while each environment fills in the right values.

    ![Add environment variables](https://files.buildwithfern.com/elacity.docs.buildwithfern.com/aeb4ad230499ebcf751a89f817ea743fb34c2685f649055298fb420aa84af30e/docs/assets/screenshots/add-environment-variables.png)
  </Step>
</Steps>

### Why use environments?

* **Safe testing** — validate changes in `dev` before they reach `prod`
* **Separate credentials** — each environment can use its own provider API keys
* **Variable substitution** — the same prompt template produces different output per environment (e.g. different support URLs, company names, or escalation contacts)
* **Approval gates** — optionally require team approval before deploying to sensitive environments

## Create a Fleet (Optional)

Fleets are logical groupings of agents that share default configuration. If you only have a few agents, you can skip this step and come back later.

<Steps>
  <Step title="Navigate to Fleets">
    Click **Fleets** in the sidebar, then click **Create Fleet**.

    ![Create a new fleet](https://files.buildwithfern.com/elacity.docs.buildwithfern.com/277d43008a9142288214eeb183ed95d12188ef660ac2eb780d3f9615abe03649/docs/assets/screenshots/create-fleet.png)
  </Step>

  <Step title="Configure the fleet">
    Give your fleet a name and description. Optionally set default configuration (provider, model, temperature) that all agents in the fleet inherit.

    ![Configure fleet defaults](https://files.buildwithfern.com/elacity.docs.buildwithfern.com/736edb1e4227d06462be6527b60086157e7578a280611d47816f71cc8da57f8e/docs/assets/screenshots/configure-fleet-defaults.png)
  </Step>
</Steps>

### Why use fleets?

* **Inherited defaults** — set a default model and provider once; every agent in the fleet picks it up
* **Bulk operations** — deploy or update all agents in a fleet at once
* **Organization** — group agents by function (e.g. "Customer Support", "Sales Outbound", "Internal Tools")

## Set up an LLM Provider (Optional)

LLM providers give Elacity access to language models for the playground and prompt compilation previews. This is separate from the deployment provider credentials you set in an environment.

<Steps>
  <Step title="Navigate to LLM Providers">
    Go to **Settings → LLM Providers**.

    ![Navigate to LLM Providers settings](https://files.buildwithfern.com/elacity.docs.buildwithfern.com/deff980f8acad51163cffb3de4f1e8dc6a28d0c6aeefb0319b97a9ce265db4eb/docs/assets/screenshots/llm-providers-settings.png)
  </Step>

  <Step title="Add a provider">
    Click **Add Provider** and select your provider (OpenAI, Anthropic, Google, Groq, etc.). Enter your API key and optionally set it as the default.

    ![Add an LLM provider](https://files.buildwithfern.com/elacity.docs.buildwithfern.com/37d227c5a62d0c880c25cef889f14f13393c355074b22d252cf37bbdc8749be4/docs/assets/screenshots/add-llm-provider.png)
  </Step>

  <Step title="Test connectivity">
    Click **Test** to verify the API key works. You should see a list of available models.

    ![Test provider connectivity](https://files.buildwithfern.com/elacity.docs.buildwithfern.com/1c38b2c03565c0b548bc301365c668dc718bd133b4c4732f0d2869e4ffc8eebc/docs/assets/screenshots/test-provider-connectivity.png)
  </Step>
</Steps>

### Why set up an LLM provider?

* **Playground** — test prompts interactively against real models before deploying
* **Model discovery** — browse available models from each provider
* **Encrypted storage** — API keys are encrypted at rest, not stored in plaintext
* **Shared access** — team members can use the playground without needing their own API keys

## Next steps

<CardGroup cols={3}>
  <Card title="Using the Prompt Registry" icon="duotone box-archive" href="/using-the-prompt-registry">
    Author, version, and pull prompts at runtime
  </Card>

  <Card title="Deploying Agents" icon="duotone rocket" href="/deploying-agents">
    Deploy a voice agent with tools to VAPI
  </Card>

  <Card title="API Reference" icon="duotone code" href="/api-reference">
    Explore the full API
  </Card>
</CardGroup>