# Models and runtimes

> Choose the machine, runtime, model and effort a ticket's agent runs with, and set the defaults for a project or the whole organization.

This page shows you how to choose what a ticket's agent runs with: which machine it runs on, which coding tool, which
model and how hard it thinks. By the end you'll know how to change those for one ticket, and how to set the defaults
every new ticket in a project or in the whole organization starts from.

A ticket's **run config** has four settings:

- **Machine**: the [remote agent](https://docs.bydawn.com/remote-agents/) the ticket runs on, or **Auto** to let By Dawn pick.
- **Runtime**: the coding tool the agent runs. By Dawn runs **Claude Code**, **Codex** and **Grok**.
- **Model**: the model the runtime uses, such as Opus or Sonnet for Claude Code.
- **Effort**: how much reasoning the model puts into each step. More effort is slower and uses more of your plan,
  but helps on hard work.

## Where a ticket's settings come from

Each setting is decided in layers, and the first layer that sets it wins:

1. The ticket itself, if someone changed it there.
2. The project's [run defaults](#project-defaults).
3. The organization's [run defaults](#organization-defaults).
4. By Dawn's built-in default for the runtime.

So most tickets need no choice at all. A team sets the organization's defaults once, a project overrides them where
its work is different, and a person changes a single ticket only when that ticket needs it.

## Change one ticket's run config

Open the ticket. Its header has a **Run config** line that shows the machine, model and effort it will run with.
Open it to see four settings, **Machine**, **Runtime**, **Model** and **Effort**, and choose any one to change it.

Each menu starts with **Follow project**, followed by the value the project gives right now. A setting you've changed
for this ticket is marked with a dot, and **Reset to project defaults** puts every setting back in one go.

### Machine

| Choice | Where the ticket runs |
|---|---|
| **Auto · least busy** | The least busy machine that can run the ticket's runtime. By Dawn picks it when the run starts. |
| **Follow project** | The project's **Default agent**. |
| **Local · this machine** | The machine running the By Dawn desktop app. Only offered in the desktop app. |
| A machine by name | That machine, and only that one. |

A machine that can't take the ticket says why beside its name: **offline**, **personal** (it only runs another
member's work, see [Whose work a machine runs](https://docs.bydawn.com/remote-agents/#whose-work-a-machine-runs)), **unknown** (it hasn't
reported yet), or **no** followed by the runtime it lacks. The list also shows how busy each machine is.

**Auto** is the best choice for most tickets, because it spreads work across your machines and skips one that's full,
strained or signed out. Pin a machine only when a ticket needs something only that machine has.

### Runtime, model and effort

The **Model** menu lists the models your machines report for the ticket's runtime, so it matches what they can really
run. If no machine has reported any, the menu shows By Dawn's built-in list and says **built-in list · no machine reported
models**. A model you picked earlier that no machine reports now stays in the list, marked **unavailable?**, because
the machine that has it may just be offline.

The efforts you can pick depend on the runtime:

| Runtime | Efforts | Built-in default |
|---|---|---|
| Claude Code | **Low**, **Medium**, **High**, **Extra high**, **Max** | **High** |
| Codex | **Minimal**, **Low**, **Medium**, **High** | **Medium** |
| Grok | **Low**, **Medium**, **High**, **Extra high** | **High** |

A model and an effort belong to one runtime. So when you switch a ticket's runtime, By Dawn clears a model or effort the new
runtime doesn't offer, rather than handing a Claude model to Codex.

### Change the model while the agent works

Once the agent is running, the ticket's worker pane shows the model it's using. Choose it to switch. While a run is
live, the menu says **Pushed to the running worker · applies to the next run too**, because By Dawn passes the change to the
running agent as well. Otherwise it says **Applies to the next run**.

## Run defaults

**Run defaults** are the two layers under the ticket: one page for each project, and one for the whole
organization. A project's page only needs to name what's different, because anything it leaves alone follows the
organization's.

### Project defaults

**Settings › This project › Run defaults** holds where every new ticket in the project starts. Project
admins and org admins can change it.

- **Default agent** is the machine that **Follow project** means. Choose **Auto · least busy** to spread the project's tickets
  across your machines with no per-ticket choice at all.
- **Default model**, **Default effort** and **Default runtime** each show the value in force and where it comes from:
  **Inherited from organization** or **Built-in default**. Choose **Override** to set the project's own value, and
  **Revert to organization default** to go back. **View org default** opens the organization's setting.

Changes apply to tickets that start afterwards. A ticket that's already running keeps what it started with.

### Organization defaults

**Settings › Organization › Run defaults** is the top layer: every project that sets nothing, and every
ticket in it, runs with these. Owners and admins can change them.

| Setting | What it does |
|---|---|
| **Default runtime** | The runtime new tickets run on. |
| **Default model** | The model new tickets launch with. **Built-in default** follows By Dawn's default for the runtime. |
| **Default effort** | The effort new tickets use. **Built-in default** follows By Dawn's default for the runtime. |
| **Questions model** | The model Questions are answered on. Questions always run on Claude Code. |
| **Members can choose a model for Questions** | Off pins every question to the **Questions model**. |
| **Agent briefing** | Text added at the start of every agent session in the organization's projects, such as house rules. Choose **Save briefing** to keep it. |

## What your machines can run

In the desktop app, **Advanced** on **Settings › You › This computer** lists the runtimes By Dawn can
run, each with its default model and effort. A runtime only works on machines that have it installed. Each machine's row in
**Settings › Organization › Remote Agents** shows the runtimes it reported. A machine that reports none
shows **Runtimes unknown** and gets no work until its agent is updated and a runtime is installed there.

Claude Code runs on the Claude account the machine is signed in to (see
[Claude accounts, sign-in and seats](https://docs.bydawn.com/claude-accounts/)). Codex runs on the machine's own `codex login`. Grok needs
the setup below.

### Set up Grok on a machine

Grok is xAI's Grok Build coding tool. You can pick it as a ticket's runtime and install it on your machines now, but
By Dawn can't run any work on it yet (see the note below). Setting a machine up ahead of time means it's ready when Grok
sessions arrive, and By Dawn only sends a Grok ticket to a machine that has Grok installed.

1. Install Grok Build on the machine from [xAI's Grok Build page](https://github.com/xai-org/grok-build). It installs
   to `~/.grok/bin/grok`. If By Dawn can't find it, set `SAW_GROK_BIN` (or `GROK_BIN`) in the agent's environment to the
   path of the `grok` executable.
2. Sign Grok in by running `grok login` on the machine. It signs you in through your browser and keeps the sign-in on
   the machine. On a machine with no browser, run `grok login --device-auth` instead.
3. Run `saw-agent doctor` on the machine. It says whether Grok is installed and whether it's signed in. Once Grok is
   installed, the machine lists **Grok** among its runtimes.

Grok's built-in model is `grok-4.7`. You can also pick `grok-4.6`, `grok-4.5` or `grok-build-0.1`.

> **Grok can't run work yet:** A ticket's agent runs in an interactive terminal session, where the card moves from running to blocked to review as
> you work with it, and Grok can't start one yet. A ticket set to Grok is sent to a machine with Grok, then fails to
> start there. Nothing else in By Dawn runs on Grok yet either, so use Claude Code or Codex until Grok sessions arrive.

## FAQ

**Why isn't the model I want in the list?**

The list shows the models your machines report for the ticket's runtime. Check that the ticket's **Runtime** is the
one the model belongs to, and that a machine with that model is online.

**I changed the project's default model. Why does a running ticket still use the old one?**

Defaults apply when a ticket starts. To change a running ticket, switch its model in the worker pane.

**Why did my ticket's model reset when I changed its runtime?**

A model belongs to one runtime, so By Dawn clears a model the new runtime doesn't offer. Pick one from the new runtime's
list.

**Why did my Grok ticket stop as soon as it started?**

Grok can't run a ticket's interactive session yet, so a ticket set to Grok fails to start. Switch the ticket to Claude
Code or Codex (see [Set up Grok on a machine](#set-up-grok-on-a-machine)).

## Where to go next

- [Remote agents and machines](https://docs.bydawn.com/remote-agents/): pair the machines your tickets run on.
- [Claude accounts, sign-in and seats](https://docs.bydawn.com/claude-accounts/): sign machines in to Claude.

Source: https://docs.bydawn.com/models-and-runtimes/
