# Servers and environments

> Choose which Voxio servers your code talks to: the standard deployment or the GPU deployment.

Source: https://voxio.in/docs/environments · voxioagent 2.0.0 · Index: https://voxio.in/docs/llms.txt

Every entry point takes the same two options. `environment` picks the deployment for every service at once. `endpoints` overrides single services, and wins over `environment`.

## Environments

| Service | `standard` (default) | `gpu` |
| --- | --- | --- |
| Voice | `https://voice.voxio.in` | `https://gpu.voice.voxio.in` |
| Chat | `https://chat.voxio.in` | `https://gpu.agent.voxio.in` |
| Data (`voxioagent/server`) | None | `https://gpu.data.voxio.in` |

Use `gpu` for flows with a face and for `voxioagent/server`. Avatars render on the GPU servers, and the data service only runs there.

## Choose an environment

Pass `environment` to any widget, session or server client:

```js
mountVoiceButton({ flowKey, environment: "gpu" });
createSession({ flowKey, environment: "gpu" });
new Voxio({ secretKey, environment: "gpu" });
```

With a script tag, add `data-environment="gpu"`.

## Override one service

To move one service and leave the rest, pass `endpoints`. This chat runs on the standard server while everything else uses GPU:

```js
mountChat({ flowKey, environment: "gpu", endpoints: { chat: "https://chat.voxio.in" } });
```

With a script tag, use `data-voice-url` and `data-chat-url`.

> **Note**
>
> Only `https://….voxio.in` origins are accepted, with no other domains, ports or paths. Anything else throws when the widget or session is created, so a typo shows up straight away rather than mid-call.

## Next steps

- [Talking avatar](https://voxio.in/docs/avatar.md): run a flow with a face on the GPU servers.
- [Server SDK](https://voxio.in/docs/server.md): manage flows from your server.
