Skip to main content
Beyond the prompt and actions, defineAgent carries the agent’s LLM binding and its behavioral settings:
agents/qualifier.ts
connector and languageModel are both required — defineAgent throws at plan time if either is missing. The connector’s integration (OpenAI, Anthropic, …) determines which model slugs are valid.

Selecting a model

The connector handle picks the provider; languageModel picks the model slug within it. Cargo supports the leading LLM providers — OpenAI, Anthropic, and Google Gemini among them — each behind its own connector. List the model slugs a provider currently exposes rather than hardcoding from memory:
Start with a powerful model during development to understand what’s possible, then optimize for cost/speed once the agent is working well.

Behavioral parameters

Reasoning steps (maxSteps)

The maximum number of logical sub-tasks the agent can perform to reach a conclusion. Defaults to 8.
Higher reasoning steps increase latency and cost. Only increase if the agent is failing to complete tasks.

Temperature

Controls the creativity and variability of outputs. Defaults to 0.2.

Extended thinking (withReasoning)

withReasoning: true lets the model think through the problem before acting — better on hard multi-step tasks, at the cost of latency and tokens. Defaults to false.

Structured output

By default an agent answers in free text (output: { type: "text" }). To make every final answer machine-parseable — for workflows or API consumers downstream — declare a JSON Schema contract:

Evaluator

The evaluator is an LLM-as-judge that scores each of the agent’s outputs against a natural-language rubric:
Outputs scoring below threshold are flagged, so you can spot quality regressions without reading every conversation. Pair it with prompt iterations: change the systemPrompt, re-deploy, and compare evaluator pass rates.

Triggers

Agents normally respond to messages, but triggers make them start work on their own:
A connector trigger references its connector by handle or connectorRef(uuid); config is integration-specific.

Heartbeat

A heartbeat wakes the agent up on an interval inside an ongoing chat — useful for long-running missions that should make progress without a human prompting each turn:

Optimizing for cost and speed

Once your agent works correctly, consider:
  1. Reduce maxSteps if tasks complete in fewer steps
  2. Try a faster model and verify quality remains acceptable (the evaluator pass rate is the signal)
  3. Lower temperature for more predictable outputs
  4. Limit resources to reduce context size and processing time