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

# Text providers

> Configure hosted models, local runtimes, model gateways, and OpenAI-compatible endpoints.

The text provider creates outlines, writes slide content, and powers AI-assisted edits. Set `LLM` to one provider identifier and supply that provider's required credentials and model.

## Supported providers

| Provider              | `LLM` value  | Required settings                                      | Common optional settings                                               |
| --------------------- | ------------ | ------------------------------------------------------ | ---------------------------------------------------------------------- |
| OpenAI                | `openai`     | `OPENAI_API_KEY`                                       | `OPENAI_MODEL` (default `gpt-4.1`)                                     |
| DeepSeek              | `deepseek`   | `DEEPSEEK_API_KEY`                                     | `DEEPSEEK_MODEL`, `DEEPSEEK_BASE_URL`                                  |
| Google Gemini         | `google`     | `GOOGLE_API_KEY`                                       | `GOOGLE_MODEL`                                                         |
| Google Vertex AI      | `vertex`     | `VERTEX_API_KEY`, or project credentials               | `VERTEX_MODEL`, `VERTEX_PROJECT`, `VERTEX_LOCATION`, `VERTEX_BASE_URL` |
| Azure OpenAI          | `azure`      | API key, model, API version, and endpoint or base URL  | Deployment name                                                        |
| Amazon Bedrock        | `bedrock`    | Region, model, and one supported AWS credential method | Session token or profile                                               |
| OpenRouter            | `openrouter` | `OPENROUTER_API_KEY`, `OPENROUTER_MODEL`               | `OPENROUTER_BASE_URL`                                                  |
| Fireworks             | `fireworks`  | `FIREWORKS_API_KEY`, `FIREWORKS_MODEL`                 | `FIREWORKS_BASE_URL`                                                   |
| Together AI           | `together`   | `TOGETHER_API_KEY`, `TOGETHER_MODEL`                   | `TOGETHER_BASE_URL`                                                    |
| Cerebras              | `cerebras`   | `CEREBRAS_API_KEY`                                     | `CEREBRAS_MODEL`, `CEREBRAS_BASE_URL`                                  |
| Anthropic             | `anthropic`  | `ANTHROPIC_API_KEY`                                    | `ANTHROPIC_MODEL`                                                      |
| LiteLLM               | `litellm`    | `LITELLM_BASE_URL`, `LITELLM_MODEL`                    | `LITELLM_API_KEY`                                                      |
| LM Studio             | `lmstudio`   | `LMSTUDIO_BASE_URL`, `LMSTUDIO_MODEL`                  | `LMSTUDIO_API_KEY`                                                     |
| Ollama                | `ollama`     | `OLLAMA_MODEL`                                         | `OLLAMA_URL`, `START_OLLAMA`                                           |
| Custom compatible API | `custom`     | `CUSTOM_LLM_URL`, `CUSTOM_MODEL`                       | `CUSTOM_LLM_API_KEY`                                                   |
| ChatGPT through Codex | `codex`      | Interactive OAuth                                      | `CODEX_MODEL`                                                          |

Set `CAN_CHANGE_KEYS=false` to prevent provider keys from being changed in the UI.

## ChatGPT sign-in through Codex

Use this provider when you want to authenticate with an existing free or paid ChatGPT account instead of an OpenAI API key.

```dotenv theme={null}
LLM=codex
CODEX_MODEL=gpt-5.5
```

Docker must publish the OAuth callback port in addition to the application port:

```bash theme={null}
--publish 5001:80 --publish 1455:1455
```

Open Presenton, select **Sign in with ChatGPT**, and complete the browser flow. OpenAI redirects the browser to `http://localhost:1455/auth/callback`, so omitting the callback mapping prevents containerized sign-in from completing. The source repository's Compose services already publish this port.

<Note>
  Port `1455` is only for ChatGPT/Codex OAuth. The REST API and MCP server both use the normal Presenton web port.
</Note>

<Card title="Complete ChatGPT/Codex recipe" icon="right-to-bracket" href="/open-source/v0.9.0-beta/configuration/recipes#use-an-existing-chatgpt-or-codex-subscription">
  See Docker Run, Compose, supported model identifiers, and remote-host port forwarding.
</Card>

## Hosted-provider examples

<Tabs>
  <Tab title="OpenAI">
    ```dotenv theme={null}
    LLM=openai
    OPENAI_API_KEY=replace-with-your-key
    OPENAI_MODEL=gpt-4.1
    ```
  </Tab>

  <Tab title="Google Gemini">
    ```dotenv theme={null}
    LLM=google
    GOOGLE_API_KEY=replace-with-your-key
    GOOGLE_MODEL=models/gemini-2.0-flash
    ```
  </Tab>

  <Tab title="Anthropic">
    ```dotenv theme={null}
    LLM=anthropic
    ANTHROPIC_API_KEY=replace-with-your-key
    ANTHROPIC_MODEL=claude-3-5-sonnet-20241022
    ```
  </Tab>

  <Tab title="OpenRouter">
    ```dotenv theme={null}
    LLM=openrouter
    OPENROUTER_API_KEY=replace-with-your-key
    OPENROUTER_MODEL=openai/gpt-4o
    OPENROUTER_BASE_URL=https://openrouter.ai/api/v1
    ```
  </Tab>
</Tabs>

## Cloud-provider authentication

### Vertex AI

Use either an API key or Google Cloud project authentication—not both.

<Tabs>
  <Tab title="API key">
    ```dotenv theme={null}
    LLM=vertex
    VERTEX_API_KEY=replace-with-your-key
    VERTEX_MODEL=gemini-2.5-flash
    ```
  </Tab>

  <Tab title="Google Cloud project">
    ```dotenv theme={null}
    LLM=vertex
    VERTEX_PROJECT=your-project-id
    VERTEX_LOCATION=us-central1
    VERTEX_MODEL=gemini-2.5-flash
    ```
  </Tab>
</Tabs>

### Azure OpenAI

```dotenv theme={null}
LLM=azure
AZURE_OPENAI_API_KEY=replace-with-your-key
AZURE_OPENAI_MODEL=gpt-4.1
AZURE_OPENAI_API_VERSION=2024-10-21
AZURE_OPENAI_ENDPOINT=https://YOUR-RESOURCE.openai.azure.com
```

Provide at least one supported endpoint or base URL. If your Azure configuration uses a deployment name distinct from the model, set the corresponding deployment variable as well.

<Card title="Configure Amazon Bedrock" icon="cloud" href="/open-source/v0.9.0-beta/tutorials/configure-amazon-bedrock">
  Choose an authentication method, model ID or inference profile, and the required IAM permissions.
</Card>

## Local and compatible providers

### Ollama

```dotenv theme={null}
LLM=ollama
OLLAMA_URL=http://host.docker.internal:11434
OLLAMA_MODEL=llama3.2:3b
START_OLLAMA=false
```

### LM Studio

```dotenv theme={null}
LLM=lmstudio
LMSTUDIO_BASE_URL=http://host.docker.internal:1234
LMSTUDIO_MODEL=openai/gpt-oss-20b
```

Presenton appends `/v1` to the LM Studio base URL when needed.

### Custom OpenAI-compatible API

```dotenv theme={null}
LLM=custom
CUSTOM_LLM_URL=https://gateway.example.com/v1
CUSTOM_LLM_API_KEY=replace-with-your-key
CUSTOM_MODEL=your-model-id
```

Use `DISABLE_THINKING=true` when a compatible model's reasoning mode causes unwanted behavior. Use `EXTENDED_REASONING` only with a provider and model that supports it.

## Apply and test changes

Restart the container after changing environment variables:

```bash theme={null}
docker compose up --detach --force-recreate production
docker compose logs --tail 100 production
```

Generate a short test presentation before relying on a new model in production. Provider access, supported model names, regional availability, and account quotas can all affect generation.

<Warning>
  A model being available from a provider does not guarantee that your account can invoke it. Confirm access and quotas in the provider console when authentication succeeds but generation fails.
</Warning>
