# zidane/providers/arcee

> The Arcee provider for the Trinity family of open models.

Import: `import { … } from 'zidane/providers/arcee'`. Source: [src/providers/arcee.ts](https://github.com/Tahul/zidane/blob/main/src/providers/arcee.ts).

Use `arcee()` when your agent talks to Arcee models such as Trinity-Large-Thinking. It reads `ARCEE_API_KEY` when you pass no key. Override `baseURL` to reach the same models through another host, and use that host's model slug.

```ts
import { createAgent } from 'zidane'
import { arcee } from 'zidane/providers/arcee'

const agent = createAgent({ provider: arcee({ defaultModel: 'trinity-large-thinking' }) })
const stats = await agent.run({ prompt: 'Summarize README.md in three bullets.' })
console.log(stats.turns)
```

## Functions

### `arcee`

Function.

Arcee provider (Trinity-Large-Thinking and friends).

Thin wrapper around [`openaiCompat`](https://zidane.si/docs/reference/providers-openai-compat.md#openaiCompat) pinned to the `reasoning_content`
round-trip mode: Trinity emits chain-of-thought in `<think>…</think>` blocks
that vLLM parses into a plain `reasoning_content` string. We capture it and
echo it back on every assistant message so the model resumes its prior
reasoning across tool calls — without this, tool calls leak into the
reasoning field as raw XML (Arcee's `xml_in_reasoning` pitfall). `content` is
also normalized from `null` → `''` on tool-call turns per the same guidance.

See [https://docs.arcee.ai/capabilities/reasoning-traces](https://docs.arcee.ai/capabilities/reasoning-traces).

```ts
function arcee(params?: ArceeParams): Provider
```

**Parameters**

- `params?` (`ArceeParams`): API key, base URL, default model, capabilities, reasoning field and extra headers.

**Returns** `Provider`

**Example**

```ts
import { createAgent } from 'zidane'
import { arcee } from 'zidane/providers/arcee'

const agent = createAgent({
  provider: arcee({ apiKey: process.env.ARCEE_API_KEY }),
})
await agent.run({ prompt: 'Say hello.' })
```

Source: [src/providers/arcee.ts:81](https://github.com/Tahul/zidane/blob/main/src/providers/arcee.ts#L81)

## Interfaces

### `ArceeParams`

Interface.

Options for [`arcee`](https://zidane.si/docs/reference/providers-arcee.md#arcee).

```ts
interface ArceeParams
```

**Properties**

- `apiKey?` (`string`): API key. Falls back to the `ARCEE_API_KEY` environment variable.
- `baseURL?` (`string`): Override the base URL — e.g. point at a self-hosted vLLM deployment serving
  Trinity-Thinking instead of Arcee's hosted Platform API.
- `capabilities?` (`ProviderCapabilities`): Provider capability flags. Trinity models are text-only — default:
  `{ vision: false, imageInToolResult: false }`.
- `defaultModel?` (`string`, default `'trinity-large-thinking'`): Model used when a request does not set one.
- `extraHeaders?` (`Record<string, string>`): Extra HTTP headers sent on every request. Forwarded to the underlying
  [`openaiCompat`](https://zidane.si/docs/reference/providers-openai-compat.md#openaiCompat) client — use for routing/attribution headers a proxy
  in front of `baseURL` consumes.
- `reasoningContentField?` (`'reasoning_content' | 'reasoning'`): Wire field used to echo plain reasoning back across turns. Arcee's hosted
  API accepts both names; some self-hosted vLLM versions only read `reasoning`
  on input (vllm#38488). Default: `'reasoning'`.

Source: [src/providers/arcee.ts:13](https://github.com/Tahul/zidane/blob/main/src/providers/arcee.ts#L13)
