> For the index of every page in Orbital's docs, read https://docs.beta.runorbital.dev/llms.txt.

# Set up decision models

> Add Jev, Clef, Laya or Kev in Settings so decide steps can ask them

Add a decision model so [decide steps](/workflows/decide-with-a-model/) and deciding fan-outs have something to ask. Until one is set up, every decision takes its default path.

Open **Settings > Decision models**. The page lists the models you have, whether each has a key saved, and its threshold. Choose **Add a model**, pick a preset under **Start from**, fill in what it asks for and choose **Add model**.

Every model has these fields.

| Field | What it does | Default and values |
| --- | --- | --- |
| Name | What a step's `decider` calls the model. | Lowercase letters, digits and hyphens. It cannot change after you add the model. |
| Model | The model id the provider is asked for. | Filled in by the preset. |
| Base URL | Where the provider is reached. Cloudflare asks for its account id instead. | Filled in by the preset, or blank when you must say. |
| Threshold | The confidence a step needs from the model when it sets no `threshold` of its own. | 0.5. A number from 0 to 1. |
| API key | The key the provider asks for. It is kept in the secret store, never shown again and never put on a command line or in a log. Leave it blank when you edit to keep the saved one. | None. Self-hosted models may need none. |

The first model you add becomes the default, the one a step uses when it names no `decider`. **Make default** moves it. Removing a model removes its key; steps that name it then take their default path.

Choose **Test** on a model to ask it a sample question. The page shows its answer and confidence, or why it failed. Orbital refuses to save a model whose address, account or key does not set its provider up.

## The four models

| Preset | Where it runs | Fill in | Notes |
| --- | --- | --- | --- |
| Jev | Hosted by Typesafe | Your key | 32k context, $0.042 per million input tokens. Reached at `https://api.typesafe.ai/v1`. **Jev via OpenRouter** reaches it through your OpenRouter key instead. |
| Clef, Clef-flash | Cloudflare Workers AI | Your Cloudflare account id and an API token | 64k context, reads images, $0.24 per million tokens. The model is `clef` or `clef-flash`. |
| Laya | Your machine | The address of `laya-serve`, which defaults to `http://127.0.0.1:20000/v1` | Install it with `pip install laya[serve]`. 421M parameters, 512-token context, runs on a CPU. |
| Kev | Your machine or a server of yours | The address of `kev.serve` | 0.8B to 27B parameters, 8k context assumed. |

**Custom System One** reaches any other server that speaks System One, such as LiteLLM. Orbital assumes an 8k context for it.

Jev, Laya, Kev and a custom server speak System One over HTTP: Orbital sends `POST {base URL}/systemone` with the model, the state and the questions, and sends the key as a bearer token when one is saved. Clef speaks the same questions through Cloudflare's Workers AI. A request that gets no answer within ten seconds counts as unreachable, and the step takes its default path.

## Related

- [Decide with a model](/workflows/decide-with-a-model/): write the steps that ask.
- [Settings reference](/reference/settings/#decision-models): every field of the page.
