# Default endpoint (/default-agent)

`cuelo start` runs the built-in endpoint (its agent name is `cuelo`) with the
dashboard on the same port. It has no fixed persona or tools. Clients set `instructions`, `tools` and
`voice` with OpenAI Realtime `session.update`, so one server can be any agent. See [Prompts](/build/prompts#prompting-from-the-client).

```bash
cuelo start                 # http://127.0.0.1:4141, opens the Talk page
cuelo start --no-open       # don't open a browser
cuelo start --port 5000
```

It reads `.env` from the current directory. `cuelo-serve` with no agent file
runs the same agent without the browser step.

## The stack [#the-stack]

| Part          | Default                                                                                                                             |
| ------------- | ----------------------------------------------------------------------------------------------------------------------------------- |
| STT           | Smallest, English                                                                                                                   |
| LLM           | The first provider you have a key for: Cerebras `qwen-3.8-27b`, then Anthropic `claude-sonnet-5-5`, OpenAI `gpt-5-mini`, OpenRouter |
| TTS           | Smallest, voice `aarini`                                                                                                            |
| End of turn   | turn-1-mini                                                                                                                         |
| Interruptions | MaAI (falls back to the backchannel detector without `cuelo[maai]`)                                                                 |
| Backchannels  | MaAI, with a 1.2 s hold after a backchannel (falls back to the VAD rule)                                                            |
| Store         | `sqlite://cuelo.db` in the current directory                                                                                        |

## Changing it [#changing-it]

Every part has an environment variable. Put them in `.env`:

| Variable              | Default             | Values                                                                 |
| --------------------- | ------------------- | ---------------------------------------------------------------------- |
| `CUELO_STT`           | `smallest`          | any STT provider name (see [Providers](/reference/providers))          |
| `CUELO_TTS`           | `smallest`          | any TTS provider name                                                  |
| `CUELO_VOICE`         | `aarini`            | provider voice ID. Clients may override it per session.                |
| `CUELO_LLM`           | `auto`              | `auto`, `cerebras`, `anthropic`, `openai`, `openrouter`                |
| `CUELO_MODEL`         | per provider        | model ID                                                               |
| `CUELO_TURNS`         | `turn-1-mini`       | `vad`, `smart-turn`, `turn-1-mini`, `maai`                             |
| `CUELO_BARGE_IN`      | `maai`              | `vad`, `detector`, `maai`                                              |
| `CUELO_AGENT_BC`      | `maai`              | `vad`, `maai`                                                          |
| `CUELO_BC_HOLD`       | `1.2`               | seconds to wait after a backchannel before replying. `0` turns it off. |
| `CUELO_DB`            | `sqlite://cuelo.db` | store URL                                                              |
| `CUELO_API_KEY`       | unset               | required on every request when set. Comma-separate several.            |
| `CUELO_CORS`          | unset               | browser origins allowed to call the API, comma-separated               |
| `CUELO_WORKERS`       | `1`                 | server processes (`cuelo-serve`)                                       |
| `CUELO_TORCH_THREADS` | `1`                 | PyTorch threads per process for the MaAI models                        |

For example, a light stack that fits about 60 calls in one process:

```bash title=".env"
CUELO_BARGE_IN=detector
CUELO_AGENT_BC=vad
```

## Prompting it from a client [#prompting-it-from-a-client]

Any Realtime client works. Send the persona with `session.update`. To make the
agent speak first, send `response.create`:

```json
{
  "type": "session.update",
  "session": {
    "instructions": "You are Maya, a friendly receptionist at a dental clinic.",
    "audio": { "output": { "voice": "aarini" } },
    "tools": [
      {
        "type": "function",
        "name": "book_slot",
        "description": "Book an appointment slot.",
        "parameters": { "type": "object", "properties": { "time": { "type": "string" } } }
      }
    ]
  }
}
```

```json
{ "type": "response.create" }
```

Tools declared by the client run in the client. The agent sends a
`function_call` item and waits for your `function_call_output`. See
[Realtime API](/connect/realtime-api).

The dashboard's **Talk** page does exactly this, with an editor for the prompt,
tools and voice, and presets to start from.