> ## 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. Select one provider in the application, or set `LLM` and that provider's required credentials and model where environment-based configuration is supported.

## Supported providers

| Provider              | `LLM` value  | Required settings                                             | Common optional settings                                               |
| --------------------- | ------------ | ------------------------------------------------------------- | ---------------------------------------------------------------------- |
| Presenton Cloud       | `presenton`  | Administrator-approved device login in onboarding or Settings | None                                                                   |
| 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.

## Presenton Cloud provider

Use this provider when you want the self-hosted interface and local dashboard with generation handled by a connected Presenton account. Sign in to the local administrator account, choose **Presenton** during onboarding or in provider settings, and approve the displayed device code on the hosted Presenton page.

The approved connection is global to the installation and its delegated credentials are encrypted at rest. No API key, OAuth client secret, callback port, or provider environment variables are required. Selecting Presenton stores `LLM=presenton`; setting that value alone does not create the required account connection.

<Warning>
  This provider sends generation inputs and uploaded documents used in its workflows to Presenton Cloud. It does not authenticate users to the self-hosted browser, REST API, or MCP server.
</Warning>

## 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="/self-hosted/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="/hosting/providers/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
```

Check the restarted service separately:

```bash theme={null}
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>
