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

# Crews

> Build multi-agent voice crews — agents (and humans) that hand off and delegate a live call to each other, with shared context and per-crew overrides.

# Crews

A **Crew** lets several of your agents work a single call together. The agent that
answers can **transfer** the caller to a specialist, or **delegate** a task to a
colleague — staying on the line while the colleague does the work and reports
back. You build it visually on a canvas and test it in your browser.

<Note>
  Crews are in **alpha**. Find them in the sidebar under **Crews**.
</Note>

## Transfer vs. delegate

Every connection between two members has a **mode**:

<CardGroup cols={2}>
  <Card title="Transfer" icon="arrow-right">
    One-way handoff. The caller is moved to the other member and your first agent
    steps away. Best for *"route me to billing."*
  </Card>

  <Card title="Delegate" icon="arrows-rotate">
    The first agent **stays with the caller**, asks a colleague to do a task
    (look something up, book something, or even **call a third party**), gets the
    result back, and continues. Best for *"let me check with scheduling."*
    Supports loops — A can ask B, B can ask C, and the answer flows back.
  </Card>
</CardGroup>

## Members

A crew is made of **members**:

* **Agent** — one of your existing agents. It keeps its own configuration, but you
  can **override** its prompt and greeting *for this crew only* (below).
* **Human** — a phone number. A member can transfer the caller to a human, or
  (with delegate) an agent can place an outbound call to them and report back.

One agent member is the **entry** (marked with a ★) — it answers first when a call
reaches the crew.

## Build a crew

<Steps>
  <Step title="Create a crew">
    Go to **Crews → New Crew**, give it a name, and pick the **primary member**
    (the agent that answers first). You'll land in the builder.
  </Step>

  <Step title="Add members">
    Click **Add Agent** (a side panel lists the agents in your current project) or
    **Add Human** (enter a phone number + cold/warm mode).
  </Step>

  <Step title="Connect them">
    Drag from one node's edge to another to create a handoff. Click the connection
    to open its editor and choose **Transfer** or **Delegate**, then describe
    *when* it should happen (e.g. *"billing questions"*). This description is what
    the agent uses to decide.
  </Step>

  <Step title="Mark the entry agent">
    Click the entry agent's node and choose **Set as entry agent** (★).
  </Step>

  <Step title="Save & test">
    Click **Save**, then **Test** to talk to the crew in your browser (no phone
    needed). Ask for something that triggers a handoff and watch it route.
  </Step>
</Steps>

## Handoff options

Open any connection to configure:

* **When to hand off** — the trigger condition the agent uses (e.g. *"the caller
  wants to reschedule"*).
* **Briefing for the next member** *(optional)* — a short note injected into the
  receiving agent so it starts already in context (e.g. *"Caller is verified —
  collect payment."*). Supports `{{variables}}`.
* **Conversation history the next member sees** — **All history**, **Last N
  messages**, or **No history** (a fresh start, e.g. for sensitive handoffs).
* **Silent handoff** — skip the *"transferring you now"* line.

## Per-crew overrides

An agent can behave differently inside a crew without changing the standalone
agent. In a member's editor, the **Overrides — this crew only** section lets you
set:

* **System prompt** — replaces the agent's prompt for this crew.
* **First message** — replaces the greeting for this crew.

Leave them blank to use the agent's own configuration.

<Note>
  Per-member **model** and **voice** overrides aren't available yet — the call's
  model and voice are set by the entry agent. Use a different agent as a member if
  you need a different voice/model.
</Note>

## Shared variables

Click **Variables** to define values shared across the whole crew (e.g.
`company_name`, `customer_tier`). Every member can use them in prompts as
`{{key}}`, and they carry across handoffs.

## Put a crew on a phone number

In the builder, use **Assign to number…** to point one of your phone numbers at
the crew. Calls to that number are answered by the entry agent, with the full
crew available. The dropdown shows numbers already assigned to this crew.

You can also keep using the same agent **standalone** on another number — its crew
overrides only apply when it's reached through the crew.

## Testing in the browser

The **Test** button opens the same in-browser **Web Call** experience as an
individual agent, but pointed at the crew. It saves your latest changes first,
then connects your mic to the entry agent. Live **phone** calls still require a
real call to an assigned number.

## Example — appointment rescheduling

1. **Reception agent** (entry) answers: *"Karan wants to reschedule today's
   appointment."*
2. It **delegates** to a **Scheduling agent** — *"check if 5 PM works."* Karan is
   placed on a brief hold.
3. Scheduling does the work (and, with outbound delegation enabled, can call the
   provider) and reports back: *"5 PM is available."*
4. Reception resumes Karan: *"Ashutosh is free at 5 PM — does that work?"*
5. Karan agrees; Reception delegates again to confirm the booking, then tells
   Karan it's done.

<Note>
  Outbound calling from a delegate (an agent phoning a third party) works when your
  crew is on a phone number with outbound calling enabled. If outbound isn't
  available, the agent offers a callback instead of placing the call.
</Note>
