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

# Harnesses & Models

> Choose the agent framework (harness) and underlying LLM for your run.

Each run is powered by a **harness** — the agent framework that drives tool use — paired with a **model** — the underlying LLM the harness calls.

```python theme={null}
from trelent_agents import Client, ClaudeCodeHarnessSpec

client = Client(client_id="...", client_secret="...")

run = client.runs.create(
    sandbox="translator:latest",
    harness=ClaudeCodeHarnessSpec(model="claude-sonnet-4-6"),
    prompt="Translate 'Hello' to Spanish.",
)
```

If you omit `harness`, Trelent uses `ClaudeCodeHarnessSpec()` with its default model.

## Supported harnesses

Each harness ships with a sensible default model, but you can override it.

| Harness     | Class                   | Default model       |
| ----------- | ----------------------- | ------------------- |
| Claude Code | `ClaudeCodeHarnessSpec` | `claude-sonnet-4-6` |
| Codex       | `CodexHarnessSpec`      | `gpt-5.4`           |
| Gemini      | `GeminiHarnessSpec`     | `gemini-3.1-pro`    |

### Claude Code

```python theme={null}
from trelent_agents import ClaudeCodeHarnessSpec

# Default model
harness = ClaudeCodeHarnessSpec() # claude-sonnet-4-6

# Override the model
harness = ClaudeCodeHarnessSpec(model="claude-opus-4-7")
```

### Codex

```python theme={null}
from trelent_agents import CodexHarnessSpec

harness = CodexHarnessSpec() # gpt-5.4
harness = CodexHarnessSpec(model="gpt-5.4")
```

### Gemini

```python theme={null}
from trelent_agents import GeminiHarnessSpec

harness = GeminiHarnessSpec() # gemini-3.1-pro
harness = GeminiHarnessSpec(model="gemini-3.1-pro")
```

## Why harnesses matter

Harnesses determine how the agent plans, calls tools, and recovers from errors. A Claude-family model paired with the Claude Code harness, for example, uses Anthropic's tool-use conventions and prompt format. The same model would behave differently inside a Codex harness.

Pick the harness that matches the model family you want to run:

* **Claude** models → `ClaudeCodeHarnessSpec`
* **GPT / Codex / o-series** models → `CodexHarnessSpec`
* **Gemini** models → `GeminiHarnessSpec`
