***

title: start
slug: /reference/typescript/agents/livewire/agent-session/start
description: Bind an Agent and prepare the underlying SignalWire AgentBase.
max-toc-depth: 3
---------------------

For a complete index of all SignalWire documentation pages, fetch https://signalwire.com/docs/llms.txt

[agent]: /docs/server-sdks/reference/typescript/agents/livewire/agent

[room]: /docs/server-sdks/reference/typescript/agents/livewire/job-context

Bind an [`Agent`][agent] to this session and prepare the underlying SignalWire
infrastructure. This translates the agent's instructions into a prompt, registers
tools as SWAIG functions, and maps the LLM model (if provided) to the SignalWire
AI model parameter.

## **Signature**

```typescript {1}
async start(params: { agent: Agent<UserData>; room?: any }): Promise<void>
```

## **Parameters**

<ParamField path="agent" type="Agent" required={true} toc={true}>
  The [`Agent`][agent] instance to bind to this session.
</ParamField>

<ParamField path="room" type="any" default="undefined" toc={true}>
  A room instance. Accepted for API compatibility with LiveKit.
</ParamField>

## **Returns**

`Promise<void>`

## **Example**

```typescript {17}
import { Agent, AgentSession, tool } from '@signalwire/sdk/livewire';

const checkBalance = tool({
  description: 'Check the balance for an account.',
  parameters: { accountId: { type: 'string' } },
  execute: (params) => {
    return `Account ${params.accountId} has a balance of $150.00.`;
  },
});

const agent = new Agent({
  instructions: 'You are a helpful banking assistant.',
  tools: { checkBalance },
});

const session = new AgentSession({ llm: 'gpt-4o' });
await session.start({ agent });
```