Skip to main content
Each run is powered by a harness — the agent framework that drives tool use — paired with a model — the underlying LLM the harness calls.
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.
HarnessClassDefault model
Claude CodeClaudeCodeHarnessSpecclaude-sonnet-4-6
CodexCodexHarnessSpecgpt-5.4
GeminiGeminiHarnessSpecgemini-3.1-pro

Claude Code

from trelent_agents import ClaudeCodeHarnessSpec

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

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

Codex

from trelent_agents import CodexHarnessSpec

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

Gemini

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