> ## 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 (standalone chat)

> 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 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 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 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.

## 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.

<Note>
  The **Use Omni Agent** needs to be enabled in [**Settings > AI**](/ai/settings/features#chat). Organization Admins can enable or disable this feature.
</Note>

## Capabilities

The Omni Agent can:

* **Allow you to ask questions about your data** using natural language
* **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
* **Summarize and analyze results** to identify trends, anomalies, and insights
* **Attach images** by pasting from your clipboard to provide visual context for your questions
* **Upload files** including text and Markdown files to provide additional context alongside your queries

Refer to [Scoping responses](#scoping-responses) for details on how to control which data the AI can access.

## Uploading files

<Note>
  The **Workbook Agent > File uploads** [AI setting](/ai/settings/features#file-uploads) must be enabled to use this feature.
</Note>

You can upload text (`.txt`), Markdown (`.md`), 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 attachment icon in the chat input
2. Select a file from your computer
3. The file appears as a file chip in the chat input, 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 input
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 input, 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>

## 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/ukDe0mUAPcoOVE0P/ai/images/ai-view-query-details.png?fit=max&auto=format&n=ukDe0mUAPcoOVE0P&q=85&s=297aec5177ef49b07aa2673e764abad4" alt="Query details in the Omni Agent" width="1306" height="873" 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 **Re-run all queries** icon located at the bottom left corner of the chat box, next to the Model selector.

<img src="https://mintcdn.com/omni-e7402367/5_Ah5Kr3rcrmyd7M/ai/images/ai-refresh-query-results.png?fit=max&auto=format&n=5_Ah5Kr3rcrmyd7M&q=85&s=24068f3165c519dee0fc25d964cebac5" alt="Re-run all queries icon in the Omni Agent" width="1527" height="917" 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.

## 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.

## Creating dashboards

The Omni Agent supports two ways to create dashboards.

**Ask the agent to build one** <Badge>Beta</Badge> — 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.

**Build one from your chat history** — To create a dashboard from charts already in your session:

1. Click the <DashboardIcon /> icon in the left navigation.
2. Add a name and select the charts to include.
3. Click **Create**.

You'll be redirected to the new dashboard in your [**My documents**](/content/navigate#personal) folder.

## 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.

## Scoping responses

The Omni Agent uses pickers to scope responses to specific connections, models, and topics:

<img src="https://mintcdn.com/omni-e7402367/AHZMUT4Yf5W_XcXL/embed/images/ai-chat-pickers.png?fit=max&auto=format&n=AHZMUT4Yf5W_XcXL&q=85&s=d0ce4694a9aeb0a04fbfb596ade5951a" alt="" width="708" height="185" data-path="embed/images/ai-chat-pickers.png" />

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.

  <Tip>
    Organization Admins can configure a default connection in [**Settings > AI > 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 ]
  ```

### Topic selection

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.

## Getting help

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

You can also directly tell Blobby 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>

## 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](/ai/settings).
</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 **sparkle icon** next to the topic selector (the <Icon icon="cube" iconType="regular" /> 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.

### When the selection resets

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.

## Customizing the Omni Agent

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 Omni 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
