> ## 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 item_0 = "Omni Agent"

export const additionalCopy_0 = "Your organization's AI branding settings can also change the label of this item in the sidebar."

export const SideBySide = ({src, alt, media, title, children, reverse = false, height = 220, divider = false}) => {
  const classNames = ["side-by-side"];
  if (reverse) classNames.push("side-by-side-reverse");
  if (divider) classNames.push("side-by-side-divider");
  return <div className={classNames.join(" ")} style={{
    "--side-by-side-height": `${height}px`
  }}>
      <div className="side-by-side-media">
        {media || <img src={src} alt={alt} />}
      </div>
      <div className="side-by-side-body">
        {title && <p className="side-by-side-title">{title}</p>}
        {children}
      </div>
    </div>;
};

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 DbtNoteIssueIcon = ({label}) => {
  return <span>
      <Icon icon="circle-info" iconType="solid" className="icons" />
      {label && ` ${label}`}
    </span>;
};

export const DbtWarningIssueIcon = ({label}) => {
  return <span>
      <Icon icon="triangle-exclamation" iconType="solid" className="icons" />
      {label && ` ${label}`}
    </span>;
};

export const DbtErrorIssueIcon = ({label}) => {
  return <span>
      <Icon icon="circle-xmark" iconType="solid" className="icons" />
      {label && ` ${label}`}
    </span>;
};

export const SidebarHomeIcon = ({label}) => {
  return <span>
      <svg class="icon-position" stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><path d="M19 8.71l-5.333 -4.148a2.666 2.666 0 0 0 -3.274 0l-5.334 4.148a2.665 2.665 0 0 0 -1.029 2.105v7.2a2 2 0 0 0 2 2h12a2 2 0 0 0 2 -2v-7.2c0 -.823 -.38 -1.6 -1.03 -2.105"></path><path d="M16 15c-2.21 1.333 -5.792 1.333 -8 0"></path></svg>
    </span>;
};

export const SidebarRoutinesIcon = ({label}) => {
  return <span>
      <svg class="icon-position" stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><path d="M10.5 21h-4.5a2 2 0 0 1 -2 -2v-12a2 2 0 0 1 2 -2h12a2 2 0 0 1 2 2v3"></path><path d="M16 3v4"></path><path d="M8 3v4"></path><path d="M4 11h10"></path><path d="M18 18m-4 0a4 4 0 1 0 8 0a4 4 0 1 0 -8 0"></path><path d="M18 16.5v1.5l.5 .5"></path></svg>
    </span>;
};

export const SidebarActivityIcon = ({label}) => {
  return <span>
      <svg class="icon-position" stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><path d="M3 12l3 0"></path><path d="M12 3l0 3"></path><path d="M7.8 7.8l-2.2 -2.2"></path><path d="M16.2 7.8l2.2 -2.2"></path><path d="M7.8 16.2l-2.2 2.2"></path><path d="M12 12l9 3l-4 2l-2 4l-3 -9"></path></svg>
    </span>;
};

export const SidebarAllIcon = ({label}) => {
  return <span>
      <svg class="icon-position" stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><path d="M13 5h8"></path><path d="M13 9h5"></path><path d="M13 15h8"></path><path d="M13 19h5"></path><path d="M3 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="M3 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></svg>
    </span>;
};

export const SidebarAiHubIcon = ({label}) => {
  return <span>
      <svg class="icon-position" stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><path d="M5 12h-2l9 -9l9 9h-2"></path><path d="M5 12v7a2 2 0 0 0 2 2h5"></path><path d="M9 21v-6a2 2 0 0 1 2 -2h2a2 2 0 0 1 2 2"></path><path d="M19 22.5a4.75 4.75 0 0 1 3.5 -3.5a4.75 4.75 0 0 1 -3.5 -3.5a4.75 4.75 0 0 1 -3.5 3.5a4.75 4.75 0 0 1 3.5 3.5"></path></svg>
    </span>;
};

export const DisabledFilterIcon = ({label}) => {
  return <span>
      <svg class="icon-position" width="1em" height="1em" xmlns="http://www.w3.org/2000/svg" stroke-width="2" viewBox="0 0 24 24" fill="currentColor"><path d="M6.92893 0.514648L21.0711 14.6568L19.6569 16.071L15.834 12.2486L15 13.4999V21.9999H9V13.4999L4 5.99993H3V3.99993L7.585 3.99965L5.51472 1.92886L6.92893 0.514648ZM9.585 5.99965L6.4037 5.99993L11 12.8944V19.9999H13V12.8944L14.392 10.8066L9.585 5.99965ZM21 3.99993V5.99993H20L18.085 8.87193L16.643 7.42893L17.5963 5.99993H15.213L13.213 3.99993H21Z"></path></svg>
    </span>;
};

export const ContentValidatorIcon = ({label}) => {
  return <span>
      <svg class="icon-position" stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" height="18px" width="18px" xmlns="http://www.w3.org/2000/svg"><path d="M9.615 20h-2.615a2 2 0 0 1 -2 -2v-12a2 2 0 0 1 2 -2h8a2 2 0 0 1 2 2v8"></path><path d="M14 19l2 2l4 -4"></path><path d="M9 8h4"></path><path d="M9 12h2"></path></svg>
    </span>;
};

export const TroubleshootWrenchIcon = ({label}) => {
  return <span>
      <svg class="icon-position" 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"><path d="M7 10h3v-3l-3.5 -3.5a6 6 0 0 1 8 8l6 6a2 2 0 0 1 -3 3l-6 -6a6 6 0 0 1 -8 -8l3.5 3.5"></path></svg>
    </span>;
};

export const DbtIdeIcon = ({label}) => {
  return <span>
      <svg class="icon-position" width="1em" height="1em" viewBox="3.5 3.5 17 17" fill="none" stroke-width="2" xmlns="http://www.w3.org/2000/svg">
        <path d="M18.8626 5.12387C19.2152 5.46293 19.4457 5.91049 19.5 6.39873C19.5 6.60217 19.4457 6.7378 19.3237 6.99548C19.2016 7.25317 17.6962 9.85715 17.2487 10.5759C16.991 10.9964 16.8553 11.4982 16.8553 11.9864C16.8553 12.4883 16.991 12.9765 17.2487 13.3969C17.6962 14.1157 19.2016 16.7333 19.3237 16.991C19.4457 17.2487 19.5 17.3707 19.5 17.5741C19.4457 18.0624 19.2288 18.5099 18.8761 18.8354C18.5371 19.1881 18.0895 19.4186 17.6148 19.4593C17.4114 19.4593 17.2758 19.4051 17.0316 19.283C16.7875 19.1609 14.1293 17.6962 13.4105 17.2487C13.3562 17.2215 13.302 17.1808 13.2342 17.1537L10.142 15.7881C10.0418 16.2789 10.0606 16.3806 10.5488 16.8553C10.6438 16.9503 10.7387 17.0316 10.8472 17.113C10.7658 17.1537 10.6709 17.1944 10.5895 17.2487C9.8707 17.6962 7.25317 19.2016 6.99548 19.3237C6.7378 19.4457 6.61573 19.5 6.39873 19.5C5.91049 19.4457 5.46293 19.2288 5.13743 18.8761C4.78481 18.5371 4.55425 18.0895 4.5 17.6013C4.51356 17.3978 4.56781 17.1944 4.67631 17.0181C4.79837 16.7604 6.3038 14.1429 6.75135 13.4241C7.00905 13.0036 7.14467 12.5154 7.14467 12.0136C7.14467 11.5117 7.00905 11.0235 6.75135 10.6031C6.3038 9.85715 4.78481 7.2396 4.67631 6.98192C4.56781 6.8056 4.51356 6.60217 4.5 6.39873C4.55425 5.91049 4.77125 5.46293 5.12387 5.12387C5.46293 4.77125 5.91049 4.55425 6.39873 4.5C6.60217 4.51356 6.8056 4.56781 6.99548 4.67631C7.21248 4.77125 9.12477 5.88336 10.142 6.48012L10.3725 6.61573C10.4539 6.66998 10.5217 6.71067 10.5759 6.7378L10.6845 6.8056L13.6812 8.3724C13.8329 7.62172 13.8038 7.38878 13.1528 6.88698C13.2342 6.8463 13.3291 6.8056 13.4105 6.75135C14.1293 6.3038 16.7468 4.78481 17.0045 4.67631C17.1808 4.56781 17.3843 4.51356 17.6013 4.5C18.076 4.55425 18.5235 4.77125 18.8626 5.12387Z" stroke="currentColor" />
        <path d="M12.9623 12.1899L12.1893 12.9629C12.0808 13.0579 11.9045 13.0579 11.8095 12.9629L11.0365 12.1899C10.928 12.0814 10.928 11.9186 11.0365 11.8101L11.8095 11.0371C11.918 10.9286 12.0808 10.9286 12.1893 11.0371L12.9623 11.8101C13.0708 11.9186 13.0708 12.0814 12.9623 12.1899Z" fill="currentColor" />
      </svg>
    </span>;
};

export const RefreshIcon = ({label}) => {
  return <span>
      <svg class="icon-position" 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"><path d="M20 11a8.1 8.1 0 0 0 -15.5 -2m-.5 -4v4h4"></path><path d="M4 13a8.1 8.1 0 0 0 15.5 2m.5 4v-4h-4"></path></svg>
    </span>;
};

export const MarkdownVariablesIcon = ({label}) => {
  return <span>
      <svg class="icon-position" 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"><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 class="icon-position" fill="none" height="1em" strokeWidth="2" viewBox="0 0 24 24" width="1em" xmlns="http://www.w3.org/2000/svg"><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 class="icon-position" fill="none" height="1em" stroke-width="2" viewBox="0 0 24 24" width="1em" xmlns="http://www.w3.org/2000/svg"><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 class="icon-position" 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"><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 class="icon-position" 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"><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 class="icon-position" 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"><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 class="icon-position" 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"><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 class="icon-position" 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"><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 class="icon-position" 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"><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 class="icon-position" 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"><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 class="icon-position" 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"><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 class="icon-position" 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"><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 class="icon-position" width="1em" height="1em" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><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 class="icon-position" 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"><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 class="icon-position" stroke="currentColor" 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"><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 [sidebar](/administration/settings/sidebar)

## Accessing the Omni Agent

To access the Omni Agent, click **Omni Agent** in Omni's main [sidebar](/administration/settings/sidebar). The chat interface opens in a dedicated page where you can begin asking questions about your data.

<Note>
  The **{item_0}** sidebar item may display differently or not at all if your organization uses a [custom sidebar](/administration/settings/sidebar). {additionalCopy_0}
</Note>

## 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
* **Create [routines](/ai/routines)** that run a saved prompt on a schedule and deliver the result by email or Slack
* **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
* **Save information about you to memory** to provide more personalized responses
* **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, controlling the context it can access, 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 or composite 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.

### Managing AI integrations

<Note>
  This feature is not supported in embedded Omni instances.
</Note>

The Omni Agent can use AI integrations to access context from tools like Google Drive, Google Calendar, Slack, GitHub, and Notion. To manage which integrations are available during your chat session, click the <Icon icon="circle-plus" /> button at the bottom of the chat box.

AI integrations that an [Organization Admin has enabled](/integrations/ai) for your organization appear at the top of the menu. Each integration shows one of two states:

* **Connect** - If you haven't connected your account yet, click **Connect** to launch the OAuth flow. This is the same authentication flow available from your [user account settings](/administration/users/your-account).
* **On/Off toggle** - If you've already connected your account, the integration displays an on/off toggle. Turning the toggle off temporarily withholds that integration's tools from the Omni Agent for your session without disconnecting your account. You can turn the integration back on at any time.

The on/off toggle is per-user and doesn't affect other users in your organization. It only controls whether the integration's tools are available to the agent in your current and future chat sessions.

<h3 id="memory">
  Saving information to memory
</h3>

<Note>
  The **Omni Agent > AI memory** [AI setting](/ai/settings/features#ai-memory) must be enabled to use this feature. Additionally, user memory is not supported for embedded instances.
</Note>

The Omni Agent can remember information about you between chat sessions. Memory holds personal context — such as your team, the region you cover, how you like results presented — and the agent draws on it when it's relevant to your prompt.

With memory, you add personal context once and it automatically applies in every session when relevant. For example, a prompt like *"how did we do last quarter?"* can be automatically filtered to your region and presented in your preferred format based on memory, instead of needing to enter the prompt in every new session.

You can ask the [Omni Agent](/ai/chat) to save information to memory for you, or you can add it manually on your account settings page.

<Tabs sync={false}>
  <Tab title="Omni Agent" icon="window-maximize" id="ui-add-memory">
    <SideBySide src="/ai/images/memory-in-chat.png" alt="Omni Agent saving team information to personal memory in chat" reverse>
      Tell the agent to remember something about you - for example, *"Remember I'm on the sales team"* - and it will save it to memory.

      Use the chip that displays in the chat to make changes: click **Manage memory** to open the **AI memory** page in [your account settings](/administration/users/your-account) or **Undo** to remove the memory.
    </SideBySide>
  </Tab>

  <Tab title="Omni UI" icon="window-maximize" id="ui-add-memory">
    1. Click your user icon in the top right corner of the page to open the profile menu.
    2. Click **Manage account**.
    3. Next to **AI memory**, click the **Set up** button to initially add personal context, or **Manage** to modify existing context.
    4. Use the Markdown editor on the **AI memory** page to add information you want to store, up to 8,000 characters. For example, you could specify your current role and team, specific terms and their meanings, or the default scope for your questions:

       ```markdown theme={null}
        - I'm an analyst on the Growth team
        - I cover EMEA — assume EMEA unless I ask for another region
        - When I say "recent", I mean the last 90 days
        - Show revenue in thousands
        - I mostly work in the Sales topic
       ```
    5. When finished, click **Save**.
  </Tab>
</Tabs>

Memory is personal and scoped to a single organization. It isn't shared with your team, and the agent never uses it in anyone else's conversations. If you belong to more than one Omni organization, each keeps its own memory.

Use memory for facts about you and how you work. Definitions that apply to everyone — how a metric is calculated, what a business term means — belong in your [data model](/modeling/), where the whole organization benefits from them.

### 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/parameters/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) 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

The model and thinking level used for AI dashboard creation follow the model's [`build_configuration`](/modeling/models/parameters/ai-settings/build-configuration) setting. To disable dashboard creation from chat, users with the required permissions can add the `create_dashboard_from_chat` tool to a model's [`ai_settings.disabled_tools`](/modeling/models/parameters/ai-settings/disabled-tools). This setting is per-model, not organization-wide - you will need to set it on every model to disable dashboard creation from chat entirely.

## Creating routines

The Omni Agent can create routines and delete a routine when it's open in the split view. See [AI Routines](/ai/routines) for more information.

## Adding files as context

<Note>
  The **Omni 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. Files are processed in your browser and are not stored on Omni's servers.

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

### 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/parameters/ai-settings/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
