Skip to navigation

Environment Setup

Set up your registries, environments, and providers
View as Markdown

This guide walks you through setting up the core building blocks of Ellaworx: 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.

Registries, environments, and secrets are managed by organization owners and admins. Other members don’t see these pages in the sidebar.

2

Create a new registry

Click New registry and fill in:

  • Visibility — choose Public or Private
  • Registry Name — letters, numbers, dots, underscores, and hyphens only (e.g. production-prompts)

Then click Create Registry.

Create a new registry

Public vs Private Registries

PublicPrivate
AccessAnyone on the internet can pull prompts without authenticationRestricted to org members and API keys from your organization
Use caseOpen-source prompts, community templates, shared examplesProprietary prompts, internal agent logic, production systems
API accessNo API key header requiredRequires X-API-Key or Authorization: Bearer (see API Keys)

Prompts are pulled from /api/prompts/{org-slug}/{registry-name}/{prompt-name}/{version}, with an optional model query parameter (defaults to generic).

Accessing a public registry — no authentication needed:

curl "https://platform.ellaworx.ai/api/prompts/your-org/public-prompts/greeting/1.0.0?model=generic"

Accessing a private registry — requires an API key from the registry’s organization (X-API-Key or Authorization: Bearer; if both are sent, X-API-Key wins):

curl -H "X-API-Key: YOUR_API_KEY" \
"https://platform.ellaworx.ai/api/prompts/your-org/internal-prompts/greeting/1.0.0?model=generic"
curl -H "Authorization: Bearer YOUR_API_KEY" \
"https://platform.ellaworx.ai/api/prompts/your-org/internal-prompts/greeting/1.0.0?model=generic"

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. Requests for a private registry without valid access return 404 Not found, so the registry’s existence isn’t revealed.

Add an Environment

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

Every organization also has a Global environment, created automatically. Its variables and provider credentials are the base for every other environment; an individual environment only needs to define the values it overrides.

2

Create an environment

Click Create Environment and give it a Name (e.g. development). The name * is reserved for the Global environment.

Create a new environment

3

Configure a provider

Under Providers, select a deployment provider, click Add, and fill in its credentials so Ellaworx can deploy agents on your behalf:

ProviderCredentials
Vapi, Retell, ElevenLabs, TelnyxAPI key (see Vapi and ElevenLabs)
AWS Bedrock AgentsAWS Access Key ID, AWS Secret Access Key, AWS Region, and an optional Session Token (see AWS Bedrock)

Credentials are never stored inline: pick an existing secret or create a new one in place. The environment stores a reference such as ${VAPI_API_KEY}, and the encrypted value lives on the Secrets page (under Delivery), where you can rotate it without editing each environment.

Providers configured on the Global environment apply to every environment automatically — add the same provider to an individual environment only to override its credentials there.

Configure a provider in the environment

4

Add variables

Under Variables, click Add Variable to define key-value pairs that get injected into your prompts at deployment time. Names may contain letters, numbers, dashes, and underscores. For example:

KeyValue
COMPANY_NAMEAcme Corp
SUPPORT_URLhttps://support.acme.com
ESCALATION_PHONE+1-555-0100

Reference a variable in a prompt as {{env.variables.COMPANY_NAME}}. Ellaworx substitutes the values when it compiles the prompt for a deployment, so your prompt templates stay generic while each environment fills in the right values. Variables inherited from the Global environment are labeled Inherited from Global; setting the same key here overrides it.

Add environment variables

5

Save

Optionally configure an approval gate and drift detection (see below), then click Save.

When the same variable is set at several levels, the most specific value wins: Agent overrides Fleet, which overrides the Environment, which overrides Global.

Approval gates

Turn on Approval Gate for an environment and choose Required approvers from your organization’s members. Deployments to that environment are then held as pending approval, and run only after every required approver has approved. Approval gates are available on every environment except Global.

When an integration such as Ellavox names the person who requested a deployment, that person cannot approve it, even if they are a required approver. They are not asked to: the deployment waits only for the other required approvers. If the requester is the environment’s only required approver, the deployment is refused, so add a second approver to environments that are deployed this way. Deployments started from Ellaworx itself do not record a separate requester and are not affected.

Drift detection

Turn on Drift Detection to have Ellaworx check daily that agents deployed to that environment still match their expected configuration on the provider. Only one environment per organization can have drift detection enabled — typically production.

Your plan may limit how many environments you can create. The create form shows your current usage and offers an upgrade when you’ve reached the limit.

Why use environments?

  • Safe testing — validate changes in development before they reach production
  • Separate credentials — each environment can use its own provider API keys, stored as encrypted secrets
  • 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 named approvers to sign off before deploying to sensitive environments

Create a Fleet (Optional)

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

2

Configure the fleet

Enter a Fleet Name, an optional Description, and optionally assign agents, then click Create Fleet. Open the fleet afterwards to add or remove agents and define Fleet Variables. An agent can belong to only one fleet.

Configure fleet details

Why use fleets?

  • Shared variables — fleet variables apply to every agent in the fleet, overriding environment values (agents can still override them)
  • Organization — group agents by function (e.g. “Customer Support”, “Sales Outbound”, “Internal Tools”) and see each deployment’s fleet in deployment details

Set up an LLM Provider (Optional)

LLM providers give Ellaworx access to language models for the playground and for governance policy evaluations. This is separate from the deployment provider credentials you set in an environment.

2

Add a provider

Click Add Provider, choose a Provider Type (OpenAI, Anthropic, Google, OpenRouter, or OpenAI-Compatible (Custom Endpoint)), give it a Name, and enter your API Key. Optionally set a Base URL Override or mark it as the Default Provider for that type.

Add an LLM provider

3

Test connectivity

After saving, click Test Connection to verify the API key works. Verified providers are marked Verified in the list.

Test provider connectivity

Custom endpoints (OpenAI-compatible)

Choose OpenAI-Compatible (Custom Endpoint) for any model host that implements the OpenAI Chat Completions API, such as Oumi or a self-hosted vLLM server. Ellaworx calls {Base URL}/chat/completions. The endpoint must accept OpenAI’s request and streaming response format; the OpenAI Responses API is not used.

FieldRequiredDescription
Base URLYesThe API root including its version path, e.g. https://inference.oumi.ai/v1. Must use https:// and resolve to a public address (see below).
API KeyYesStored encrypted and always sent as Authorization: Bearer <key>.
Model IDsYesOne per line, exactly as the endpoint expects them, e.g. projects/EVYSUEX5ZT-1/deployments/1. The first one is the default model. If the endpoint also serves GET /models, those IDs are added to the model pickers.
Also send API key in headerNoHeader name that also receives the key, for endpoints that expect it outside Authorization, e.g. X-API-Key.
Additional headersNoStatic headers sent with every request. They are not encrypted, so keep secrets in the API key field. Authorization and x-portkey-* are reserved.
Reasoning modelNo (off by default)Turn on for models that follow OpenAI’s reasoning-model rules (o-series, gpt-5, and hosted deployments built on them, such as some Oumi deployments). Temperature, top-p, penalties and logit bias are left out of requests, and the token limit is sent as max_completion_tokens instead of max_tokens. Turn it on if the endpoint rejects max_tokens or a non-default temperature.
Reasoning effortNo (Endpoint default)Sent as reasoning_effort on every request: None, Minimal, Low, Medium or High. Endpoint default sends nothing. Some hosts only accept tool calls at None, and team agents always use tools. Test Connection warns when the endpoint rejects a tool call.
Route through Portkey gatewayNo (on by default)On: calls go through Portkey with the endpoint as a custom host, keeping request logs, guardrails, and usage analytics. Off: calls go straight to the endpoint, and the provider can’t be used through environment proxy URLs.

Example (Oumi): Base URL https://inference.oumi.ai/v1, your Oumi API key, model ID projects/EVYSUEX5ZT-1/deployments/1, and X-API-Key under Also send API key in header. If the deployment rejects max_tokens or temperature (“Only the default (1) value is supported”), turn on Reasoning model. For team agents, also set Reasoning effort to None: Oumi’s gpt-5 deployments reject tool calls on chat completions at their default effort (“Function tools with reasoning_effort are not supported … set reasoning_effort to ‘none’”). This matches Oumi’s own OpenAI SDK setup:

const client = new OpenAI({
apiKey: process.env.OUMI_API_KEY,
baseURL: "https://inference.oumi.ai/v1",
defaultHeaders: { "X-API-Key": process.env.OUMI_API_KEY ?? "" },
});

Private and self-hosted endpoints. Requests to a custom endpoint carry your API key, so the host must resolve to a public internet address. Loopback, private (RFC 1918), link-local (including the cloud metadata address 169.254.169.254), carrier-grade NAT and IPv6 private ranges are refused, as are localhost, *.local and *.internal names. The check runs when the provider is saved and again on every connection, so a DNS change after saving can’t redirect requests to an internal address. To use a model server on a private network or on localhost (for example vLLM or Ollama during development), set ALLOW_PRIVATE_LLM_ENDPOINTS=true on the Ellaworx server.

Test Connection checks GET /models first. If the endpoint doesn’t implement it, Ellaworx sends a one-token chat completion to the first model ID instead. A failed test reports only the HTTP status (or that the address isn’t allowed), never the endpoint’s response body.

Custom endpoints are used for chat, playground, governance, and team agents. They aren’t used for embeddings, so team memory search falls back to recency for teams on a custom endpoint. The provider type can’t be changed after creation; create a new provider instead.

A team on a custom endpoint runs every member on the team model. Per-member model and provider overrides are turned off in the member editor and refused by the API, and the team model must be one of the endpoint’s configured model IDs.

Changing a team’s LLM provider

An org admin can switch a team’s provider and model under Team → Settings → General. Saving a new provider asks for confirmation, then:

  • clears every member’s model and provider override, so the whole team runs on the new provider and the team model;
  • picks a model the new provider serves when none is chosen (a custom endpoint’s first configured model);
  • leaves semantic memory search on only for OpenAI providers; other providers fall back to recent memories.

Why set up an LLM provider?

  • Playground — test prompts interactively against real models before deploying
  • Governance — the default provider is also used for automated governance policy evaluations
  • 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