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

# Omni Agent

> Explore your data using conversational AI in a standalone chat experience.

export const CheckIcon = ({label}) => {
  return <span>
      <Icon icon="circle-check" iconType="solid" color="#26bd6c" />
      {label && ` ${label}`}
    </span>;
};

export const XCircleIcon = ({label}) => {
  return <span>
      <Icon icon="circle-xmark" iconType="solid" color="#ff2465" />
      {label && ` ${label}`}
    </span>;
};

export const MarkdownVariablesIcon = ({label}) => {
  return <span>
      <svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg" style={{
    display: "inline",
    verticalAlign: "middle"
  }}><path d="M3 12v-7a2 2 0 0 1 2 -2h14a2 2 0 0 1 2 2v14a2 2 0 0 1 -2 2h-7"></path><path d="M3 10h18"></path><path d="M10 3v10"></path><path d="M2 17a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v4a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1v-4z"></path></svg>
    </span>;
};

export const DashboardIcon = ({label}) => {
  return <span>
      <svg fill="none" height="1em" strokeWidth="2" viewBox="0 0 24 24" width="1em" xmlns="http://www.w3.org/2000/svg" style={{
    display: "inline",
    verticalAlign: "middle"
  }}><path d="M12.5625 3V21M12 9.75H3M21 15.375H12.5625M7 21H17C19.2091 21 21 19.2091 21 17V7C21 4.79086 19.2091 3 17 3H7C4.79086 3 3 4.79086 3 7V17C3 19.2091 4.79086 21 7 21Z" stroke="currentColor"></path></svg>
      {label && ` ${label}`}
    </span>;
};

export const WorkbookIcon = ({label}) => {
  return <span>
      <svg fill="none" height="1em" stroke-width="2" viewBox="0 0 24 24" width="1em" xmlns="http://www.w3.org/2000/svg" style={{
    display: "inline",
    verticalAlign: "middle"
  }}><path d="M9.1875 3V15.375M21 15.375H3M7 21H17C19.2091 21 21 19.2091 21 17V7C21 4.79086 19.2091 3 17 3H7C4.79086 3 3 4.79086 3 7V17C3 19.2091 4.79086 21 7 21Z" stroke="currentColor"></path></svg>
      {label && ` ${label}`}
    </span>;
};

export const WorkbookNumberFormatIcon = ({label}) => {
  return <span>
      <svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 30 30" stroke-linecap="round" stroke-linejoin="round" height="1.75em" width="1.75em" xmlns="http://www.w3.org/2000/svg" style={{
    display: "inline",
    verticalAlign: "middle"
  }}><path d="M8 10v-7l-2 2"></path><path d="M6 16a2 2 0 1 1 4 0c0 .591 -.601 1.46 -1 2l-3 3h4"></path><path d="M15 14a2 2 0 1 0 2 -2a2 2 0 1 0 -2 -2"></path><path d="M6.5 10h3"></path></svg>
    </span>;
};

export const DashboardPreviewIcon = ({label}) => {
  return <span>
      <svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg" style={{
    display: "inline",
    verticalAlign: "middle"
  }}><path d="M3 16m0 1a1 1 0 0 1 1 -1h3a1 1 0 0 1 1 1v3a1 1 0 0 1 -1 1h-3a1 1 0 0 1 -1 -1z"></path><path d="M4 12v-6a2 2 0 0 1 2 -2h12a2 2 0 0 1 2 2v12a2 2 0 0 1 -2 2h-6"></path><path d="M12 8h4v4"></path><path d="M16 8l-5 5"></path></svg>
    </span>;
};

export const DashboardCatalogIcon = ({label}) => {
  return <span>
      <svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg" style={{
    display: "inline",
    verticalAlign: "middle"
  }}><path d="M10 19h-6a1 1 0 0 1 -1 -1v-14a1 1 0 0 1 1 -1h6a2 2 0 0 1 2 2a2 2 0 0 1 2 -2h6a1 1 0 0 1 1 1v14a1 1 0 0 1 -1 1h-6a2 2 0 0 0 -2 2a2 2 0 0 0 -2 -2z"></path><path d="M12 5v16"></path><path d="M7 7h1"></path><path d="M7 11h1"></path><path d="M16 7h1"></path><path d="M16 11h1"></path><path d="M16 15h1"></path></svg>
      {label && ` ${label}`}
    </span>;
};

export const DashboardAddItemIcon = ({label}) => {
  return <span>
      <svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg" style={{
    display: "inline",
    verticalAlign: "middle"
  }}><path d="M4 4m0 1a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v4a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1z"></path><path d="M4 14m0 1a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v4a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1z"></path><path d="M14 14m0 1a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v4a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1z"></path><path d="M14 7l6 0"></path><path d="M17 4l0 6"></path></svg>
      {label && ` ${label}`}
    </span>;
};

export const DashboardControlIcon = ({label}) => {
  return <span>
      <svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg" style={{
    display: "inline",
    verticalAlign: "middle"
  }}><path d="M3 3m0 3a3 3 0 0 1 3 -3h12a3 3 0 0 1 3 3v12a3 3 0 0 1 -3 3h-12a3 3 0 0 1 -3 -3z"></path><path d="M3 11l8 -8"></path><path d="M3 17l14 -14"></path></svg>
      {label && ` ${label}`}
    </span>;
};

export const DashboardChartIcon = ({label}) => {
  return <span>
      <svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg" style={{
    display: "inline",
    verticalAlign: "middle"
  }}><path d="M3 3v18h18"></path><path d="M20 18v3"></path><path d="M16 16v5"></path><path d="M12 13v8"></path><path d="M8 16v5"></path><path d="M3 11c6 0 5 -5 9 -5s3 5 9 5"></path></svg>
      {label && ` ${label}`}
    </span>;
};

export const DashboardPlaceholderIcon = ({label}) => {
  return <span>
      <svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg" style={{
    display: "inline",
    verticalAlign: "middle"
  }}><path d="M4 4m0 1a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v4a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1z"></path><path d="M14 4m0 1a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v4a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1z"></path><path d="M4 14m0 1a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v4a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1z"></path><path d="M14 17h6m-3 -3v6"></path></svg>
      {label && ` ${label}`}
    </span>;
};

export const DashboardLayoutIcon = ({label}) => {
  return <span>
      <svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg" style={{
    display: "inline",
    verticalAlign: "middle"
  }}><path d="M4 7l16 0"></path><path d="M4 17l16 0"></path><path d="M7 4l0 16"></path><path d="M17 4l0 16"></path></svg>
      {label && ` ${label}`}
    </span>;
};

export const DashboardTextIcon = ({label}) => {
  return <span>
      <svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg" style={{
    display: "inline",
    verticalAlign: "middle"
  }}><path d="M4 20l3 0"></path><path d="M14 20l7 0"></path><path d="M6.9 15l6.9 0"></path><path d="M10.2 6.3l5.8 13.7"></path><path d="M5 20l6 -16l2 0l7 16"></path></svg>
      {label && ` ${label}`}
    </span>;
};

export const DashboardStackContainerIcon = ({label}) => {
  return <span>
      <svg width="1em" height="1em" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" style={{
    display: "inline",
    verticalAlign: "middle"
  }}><path d="M4 5C4 4.73478 4.10536 4.48043 4.29289 4.29289C4.48043 4.10536 4.73478 4 5 4H19C19.2652 4 19.5196 4.10536 19.7071 4.29289C19.8946 4.48043 20 4.73478 20 5V9C20 9.26522 19.8946 9.51957 19.7071 9.70711C19.5196 9.89464 19.2652 10 19 10H5C4.73478 10 4.48043 9.89464 4.29289 9.70711C4.10536 9.51957 4 9.26522 4 9V5Z" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path><path d="M4 15C4 14.7348 4.10536 14.4804 4.29289 14.2929C4.48043 14.1054 4.73478 14 5 14H12C12.2652 14 12.5196 14.1054 12.7071 14.2929C12.8946 14.4804 13 14.7348 13 15V19C13 19.2652 12.8946 19.5196 12.7071 19.7071C12.5196 19.8946 12.2652 20 12 20H5C4.73478 20 4.48043 19.8946 4.29289 19.7071C4.10536 19.5196 4 19.2652 4 19V15Z" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path></svg>
      {label && ` ${label}`}
    </span>;
};

export const DashboardPageNavIcon = ({label}) => {
  return <span>
      <svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg" style={{
    display: "inline",
    verticalAlign: "middle"
  }}><path d="M4 8h16"></path><path d="M4 4m0 2a2 2 0 0 1 2 -2h12a2 2 0 0 1 2 2v12a2 2 0 0 1 -2 2h-12a2 2 0 0 1 -2 -2z"></path><path d="M8 4v4"></path></svg>
      {label && ` ${label}`}
    </span>;
};

export const IdeFileIcon = ({color = "#000000"}) => {
  return <span>
      <svg stroke={color} fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="file-type-icon" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg" style={{
    display: "inline",
    verticalAlign: "middle"
  }}><path d="M3 5a2 2 0 0 1 2 -2h14a2 2 0 0 1 2 2v14a2 2 0 0 1 -2 2h-14a2 2 0 0 1 -2 -2v-14z"></path><path d="M3 10h18"></path><path d="M10 3v18"></path></svg>
    </span>;
};

The Omni Agent provides a standalone, conversational interface for exploring your data. Ask questions, generate queries, and visualize results without needing to work directly in a workbook.

## Requirements

To use the Omni Agent, you'll need:

* **Restricted Querier**, **Querier**, **Modeler**, or **Connection Admin** permissions
* **To verify that the following settings in [AI Hub > General > Features](/ai/settings/features) are enabled**. These settings are enabled by default, but Organization Admins can modify them as needed.
  * **Omni Agent** - Required to use the Omni Agent
  * **Omni Agent > Chat** - Required to access the chat interface
  * **Omni Agent > Chat > Chat in navigation** - Required to show the standalone chat in the main navigation

## Accessing the Omni Agent

To access the Omni Agent, click **Omni Agent** in Omni's main navigation. The chat interface opens in a dedicated page where you can begin asking questions about your data.

## Capabilities

The Omni Agent can:

* **Answer natural-language questions** about your data
* **Search existing dashboards** for tiles and visualizations that already answer your question before generating a new query
* **Generate queries** based on your prompts, routed through [topics](/modeling/topics) or any view in your model
* **Create visualizations**, including [KPI tiles](/visualize-present/visualizations/types/kpi), directly from your prompts
* **Create dashboards** based on the queries and visualizations in the session
* **Accept files and images as context**:
  * **Upload files** including text and Markdown files to provide additional context alongside your queries
  * **Attach images** by pasting from your clipboard to provide visual context for your questions
* **Search the Omni docs** to answer questions about how to use Omni

### Getting help

If you're stuck and can't remember how to do something in Omni, ask the Omni Agent. Questions like *"How do I do \[thing]?"* will prompt the agent to search the official Omni docs and provide you with an answer, all without leaving your Omni workflow.

You can also directly tell the agent to search the docs when researching the answer to your question.

<Note>
  **Working in an embedded context?** If you have the **Hide Omni watermark** setting enabled to provide a fully white-labeled experience, the AI doc search feature will respect it. Omni doc links will not be returned in chat, even if explicitly requested.
</Note>

## Tuning responses

You can shape how the Omni Agent responds by scoping which data it draws from and choosing which underlying AI model handles your prompts.

### Scoping responses

The Omni Agent uses pickers to scope responses to specific connections, models, and topics. Click the <Icon icon="circle-plus" /> button at the bottom of the chat box to open the pickers:

<Frame caption="Connection, model, and topic picker in Omni's chat interface">
  <img src="https://mintcdn.com/omni-e7402367/CkgktAcnz-Wx-FUs/embed/images/ai-chat-pickers.png?fit=max&auto=format&n=CkgktAcnz-Wx-FUs&q=85&s=d154d8c37a11eac8f67adae04807b022" alt="Connection, model, and topic picker in Omni's chat interface" width="439" height="269" data-path="embed/images/ai-chat-pickers.png" />
</Frame>

Up to three pickers can display in the chat interface:

* **Connections** - Lists the connections you have access to. Only displays if more than one connection is available. This setting can't be changed if you're using the chat in a workbook or dashboard.
  <Tip>
    Organization Admins can configure a default connection in [**AI Hub > Setup > Features**](/ai/settings/features#default-connection) to set which connection the Omni Agent opens with by default.
  </Tip>
* **Models** - Lists the available models in the selected connection. Only displays if:
  * The connection has more than one model, **and**
  * At least one topic in the model is accessible. This could mean that the model's [`ai_chat_topics`](/modeling/models/ai-chat-topics) is unset, making all topics accessible, or that it specifies at least one topic:
    ```yaml theme={null}
    ai_chat_topics: [ Products ]
    ```
* **Topics** - Lists the available topics in the model. Only displays if at least two topics in the model are accessible. This could mean that the model's [`ai_chat_topics`](/modeling/models/ai-chat-topics) is unset, or that it specifies at least two topics:
  ```yaml theme={null}
  ai_chat_topics: [ Products, Orders ]
  ```

#### Scoping topics

If a prompt is entered and a topic isn't selected - meaning that **Auto-select a topic** is selected in the topic picker - the AI will attempt to select the most relevant topic.

To scope the AI's response to a specific dataset, use the pickers to select a specific topic. The AI will remain "locked" to the selected topic until the selection is changed.

Additionally, the picker menus won't display when a model only has one AI-accessible topic. If a connection has one model with a single AI-accessible topic - determined by the value of the model's [`ai_chat_topics`](/modeling/models/ai-chat-topics) parameter - the AI will be scoped only to that topic and the pickers will not display.

### Selecting an AI model tier

<Note>
  If your Omni organization uses [custom AI models](/ai/settings/model-providers), the model tier selector will be hidden in the chat interface. In this case, the AI will use the custom model configuration from your [AI settings](/administration/ai-hub).
</Note>

The Omni Agent provides a model tier selector that allows you to choose between different AI models for your chat session. This lets you optimize for speed or intelligence based on your needs:

* **Smarter** - Uses the most capable model (Opus) for complex analysis and nuanced queries
* **Standard** - Uses a balanced model (Sonnet) that provides good performance for most queries
* **Faster** - Uses a fast model (Haiku) for quick responses to simpler questions

To select a model tier, click the model selector next to the <Icon icon="microphone" /> (microphone) icon and choose your preferred tier from the dropdown menu. The selector displays the currently active tier, which defaults to your organization or model-level AI settings.

#### Selection reset

Your selected model tier will persist throughout the session, applying to prompts sent after the tier is selected. However, the selection automatically resets to the default tier when you:

* Switch to a different data model using the model picker
* Start a new chat session

The default tier for each model is determined by the model's [`ai_settings`](/modeling/models/ai-settings) configuration, falling back to organization-level settings when not specified.

## Searching existing dashboards

Before generating new queries, the Omni Agent can search for existing dashboards that might already answer your question. When you ask a question, the AI analyzes your prompt and searches through:

* **Dashboard names** - Searches the content index for dashboards with relevant titles
* **Tile and chart names** - Searches for specific visualizations that match your question

The AI uses multiple search variations of your keywords to improve the chance of finding relevant content. For example, if you ask about "inventory items count", it might search for "inventory items", "items count", and "inventory" separately. You can also provide the AI with a dashboard's ID or [custom identifier](/share#changing-document-urls-and-identifiers).

When the AI finds potentially relevant dashboards, it:

<Steps>
  <Step title="Evaluates tiles" noAnchor>
    Uses semantic matching to identify which specific tile or chart from a dashboard best matches your question
  </Step>

  <Step title="Shows live previews" noAnchor>
    Executes the underlying query and displays the actual chart or table visualization inline in the chat
  </Step>

  <Step title="Highlights direct answers" noAnchor>
    If a tile directly answers your question, it displays in a highlighted card with an AI-generated explanation of why it's relevant
  </Step>
</Steps>

This helps you discover existing content before creating new queries, promoting reuse of trusted dashboards and reducing duplicate analysis work.

## Creating queries and dashboards

When the Omni Agent answers a question, it generates a live query you can inspect, refresh, or roll up into a dashboard alongside other charts from the session.

### Viewing query field details

When the Omni Agent generates a query, you can view details about the fields used in the results. This helps you understand what data the AI selected and how each field is defined.

To view field details, click the <Icon icon="circle-info" iconType="solid" /> icon near the top-right corner of the query results, next to the <Icon icon="download" iconType="solid" /> icon. A panel displays information for each field in the query, including:

* **Field name** - The field's label and identifier in the model
* **Definition** - The SQL or calculation that defines the field
* **Description** - Additional context about the field, if defined in the model

<img src="https://mintcdn.com/omni-e7402367/CkgktAcnz-Wx-FUs/ai/images/ai-view-query-details.png?fit=max&auto=format&n=CkgktAcnz-Wx-FUs&q=85&s=f81d8872f15d9a0a6e4af77eebf23c8c" alt="Query details in the Omni Agent" width="1317" height="958" data-path="ai/images/ai-view-query-details.png" />

This feature provides transparency into AI-generated queries, helping you verify the AI selected appropriate fields and understand the underlying data structure. To improve the quality of field definitions displayed here, refer to [Optimizing your models for AI](/modeling/develop/ai-optimization).

### Refreshing query results

When you revisit a previous chat session, query results may be stale. To update the results with the latest data, click the <Icon icon="rotate" /> icon floating above the chat box:

<img src="https://mintcdn.com/omni-e7402367/CkgktAcnz-Wx-FUs/ai/images/ai-refresh-query-results.png?fit=max&auto=format&n=CkgktAcnz-Wx-FUs&q=85&s=6e7f2a5ea0aa8f4d7aa95879ec34b1d6" alt="Re-run all queries icon in the Omni Agent" width="1015" height="256" data-path="ai/images/ai-refresh-query-results.png" />

Clicking this icon re-runs all queries in the conversation, updating visualizations and results with current data. To optimize performance, only the most recent queries are re-run.

### Creating dashboards

The Omni Agent can build dashboards. There are a few ways to get started:

* **Ask the agent directly to build a dashboard** — describe the dashboard you want in the chat and the agent plans the layout, generates queries, and publishes a complete dashboard to your [**My documents**](/content/navigate#personal) folder:
  > *"Create a dashboard showing sales performance by region with monthly trends and a top customers table"* After the dashboard is created, you can ask the agent to iterate on it in the same session — rearranging tiles, editing charts, or adding new ones.
* **From an existing chat** — you've been exploring data and created a few visualizations in a chat session, ask the agent to pull them into a dashboard
* **Upload an image** — drop in an image of a dashboard you'd like to replicate. The agent parses what it sees and uses it as a starting point

## Adding files as context

<Note>
  The **Workbook Agent > File uploads** [AI setting](/ai/settings/features#file-uploads) must be enabled to upload files and attach images.
</Note>

You can upload text and Markdown files or paste images from your clipboard to give the Omni Agent additional context for your questions.

### Uploading files

You can upload text (`.txt`), Markdown (`.md`), LookML (`.lkml`), XML (`.xml`), HTML (`.html`, `.htm`), and [images](#attaching-images) to the Omni Agent to provide additional context for your questions. This is useful when you need to reference additional information alongside your data queries.

To upload a file:

1. Click the <Icon icon="circle-plus" /> icon at the bottom of the chat box
2. Select **Attach file**
3. Select a file from your computer
4. The file appears as a file chip in the chat box, indicating it's ready to be sent with your message

The Omni Agent can then read and reference the contents of the uploaded files when generating responses, allowing you to ask questions that combine your data with external context or documentation.

### Attaching images

You can paste images directly from your clipboard into the chat to provide visual context alongside your questions. This works with screenshots, images copied from web pages, or any image data on your clipboard.

To attach an image:

1. Copy an image to your clipboard (for example, take a screenshot or copy an image from a web page)
2. Click into the chat box
3. Paste the image using your system's paste command (`Cmd+V` on Mac, `Ctrl+V` on Windows/Linux)

The image appears as a file chip in the chat box, indicating it's ready to be sent with your message. You can attach multiple images to a single message by pasting them one after another.

<Warning>
  Image pasting is supported in Chrome and Safari. Firefox does not currently support pasting images into textarea elements due to browser limitations.
</Warning>

## Managing and sharing chat sessions

Each conversation with the Omni Agent is saved as a chat session you can rename, revisit, and share with other users in your organization.

### Navigating prompt history

You can quickly recall previous prompts using keyboard shortcuts, similar to a command-line interface:

* Press the **Up arrow** key to cycle backward through your previous prompts
* Press the **Down arrow** key to cycle forward through your prompt history

When you reach your oldest prompt and press Up arrow again, the navigation wraps to your most recent prompt. Pressing Down arrow after your newest prompt restores any in-progress text you were typing before navigating the history.

<Note>
  Arrow key navigation only works when your cursor is at the beginning of the input field or when the field is empty. This preserves normal cursor movement when editing text.
</Note>

The prompt history displays only your own prompts from the current chat session.

### Renaming chat sessions

The Omni Agent automatically generates a name for each chat session based on your conversation. You can customize these names to make it easier to identify and return to specific conversations.

To rename a chat session, double-click on the active session name in the Omni Agent sidebar. An inline text field appears where you can enter a new name. Press Enter to save the new name, or press Escape to revert to the original name.

Session names persist and display whenever you return to the Omni Agent. You can only rename chat sessions that you own.

### Managing long conversations

As your conversation with the Omni Agent grows, it consumes more of the available context window. When a chat session reaches 75% of the context window, a visual indicator appears on the **New chat** button to help you recognize when starting a fresh conversation would improve performance. Context window size is determined by the [`conversation_prune_length`](/modeling/models/ai-settings#param-conversation-prune-length) parameter.

This feature is automatic and requires no configuration. Starting a new chat when prompted helps maintain optimal AI performance, especially for complex queries and analysis.

### Sharing chat sessions

You can share a chat session by copying the URL from your browser's address bar and sending it to another user.

Query results stored in the chat history are cached from when the creator ran them. The viewer of the shared chat will see those same cached results.

Therefore, Omni requires that the viewer of the shared chat have **Querier**, **Modeler**, or **Connection Admin** permissions, as well as the same [connection environment](/connect-data/dynamic-environments), to view the session. Users with **Restricted Querier** permissions or lower will not be able to access shared chat sessions.

The following rules determine who can see a chat:

1. The **owner** of the chat can always view the chat.
2. Any user with the **Querier role or above on all relevant models** can view the chat. Because Queriers can already write SQL queries directly in Omni, this doesn't expose any data they couldn't otherwise access.
3. **Viewers and Restricted Queriers** are blocked from viewing, preventing access to data they are not authorized to see.

## Customizing and embedding the Omni Agent

Organization Admins can tailor the agent's appearance to match their brand and surface it inside external applications.

### Applying branding

Organization Admins can customize the appearance of the AI chat interface, including the agent's name, icon, and greeting messages. Refer to the [AI branding settings](/ai/settings/branding) for more information.

### Embedding the agent

The Omni Agent can also be embedded into external applications. Refer to the [embedding the Omni Agent guide](/embed/customization/ai-chat) for setup instructions.

## Next steps

* [Optimize your models for AI](/modeling/develop/ai-optimization) to improve the quality of AI-generated responses
* [Configure topics](/modeling/topics) to organize and scope the data the Omni Agent can access
* [Customize the Omni Agent appearance](/ai/settings/branding) with your own branding
