Skip to main content
Glama
pipedude

Yahont MCP Server

by pipedude
README.md
<a name="readme-top"></a>

<h2 align="center">
  <a href="https://www.yahont.ai">
    <picture>
      <source media="(prefers-color-scheme: dark)" srcset="web/public/logotype-dark.png" />
      <img width="50%" src="web/public/logotype.png" alt="Yahont" />
    </picture>
  </a>
</h2>

<p align="center">
  <a href="https://docs.yahont.ai" target="_blank">
    <img src="https://img.shields.io/badge/docs-docs.yahont.ai-blue" alt="Документация" />
  </a>
  <a href="https://t.me/yahont_ai" target="_blank">
    <img src="https://img.shields.io/badge/telegram-yahont__ai-blue?logo=telegram&logoColor=white" alt="Telegram" />
  </a>
  <a href="https://www.yahont.ai" target="_blank">
    <img src="https://img.shields.io/badge/website-yahont.ai-blue" alt="Сайт" />
  </a>
  <a href="https://cloud.yahont.ai" target="_blank">
    <img src="https://img.shields.io/badge/cloud-cloud.yahont.ai-blue" alt="Облако Yahont" />
  </a>
  <a href="LICENSE">
    <img src="https://img.shields.io/badge/license-MIT-blue" alt="Лицензия MIT" />
  </a>
  <a href="https://github.com/pipedude/yahont-ce/releases" target="_blank">
    <img src="https://img.shields.io/github/v/release/pipedude/yahont-ce" alt="Выпуск" />
  </a>
  <a href="https://hub.docker.com/u/yahontai" target="_blank">
    <img src="https://img.shields.io/docker/v/yahontai/yahont-ce-web?sort=semver&label=docker%20hub" alt="Docker Hub" />
  </a>
</p>

<p align="center">
  <a href="#-демонстрация">Демонстрация</a> ·
  <a href="#-возможности">Возможности</a> ·
  <a href="#-как-это-работает">Как это работает</a> ·
  <a href="#-что-yahont-добавляет-к-onyx">Что нового</a> ·
  <a href="#-режимы-развёртывания">Режимы</a> ·
  <a href="#-быстрый-старт">Быстрый старт</a> ·
  <a href="#-сообщество-и-участие">Сообщество</a>
</p>

---

# Yahont — контекстный слой на базе всех ваших знаний и приложений

> «Языковые модели уже достаточно хорошо знают всё публичное и открытое.
> А что, если бы они знали и то, что происходит в нашем рабочем пространстве?
> Нам нужна настоящая супер-сила ИИ, а не еще один ИИ-ассистент!»

**Yahont** — слой знаний и контекста для вашей команды и ИИ-агентов.

Yahont подключается к вашим приложениям, индексирует и выводит знания из
любых источников данных. Ваши данные остаются под вашим контролем: Yahont 
разворачивается на ваших серверах. Каждый ответ содержит ссылки на документы, 
из которых он собран. Гибкие настройки и подключение любых LLM, локальных или облачных.

Помимо контекстного поиска, Yahont даёт языковым моделям расширенные возможности: 
веб-поиск, выполнение кода, генерацию изображений, голосовой режим, действия во внешних
системах и другое.

Yahont основан на открытом исходном коде проекта [Onyx](https://github.com/onyx-dot-app/onyx). 
Мы адаптируем его для России: русский интерфейс и документация, российские провайдеры 
моделей и поиска, модели эмбеддингов для русского текста, российские источники данных.

> [!NOTE]
> Это открытая версия Yahont CE (Community Edition). Cloud-версия и корпоративная
> версия (Enterprise Edition) находятся в стадии разработки.

> [!TIP]
> Запуск в несколько команд: см. [Быстрый старт](#-быстрый-старт).

---

## 🎬 Демонстрация

https://github.com/user-attachments/assets/f7a88b8b-080a-444a-b51d-a7447507aec0

---

## 💡 Для чего это нужно

| Задача | Как помогает Yahont |
|---|---|
| **Поиск по всем источникам** | Один запрос вместо поиска в каждой системе. Гибридный индекс находит документ и по смыслу, и по точному слову. |
| **Ответы с источниками** | Ответ собран из ваших документов и содержит ссылки на них, поэтому его можно проверить. |
| **Онбординг и поддержка сотрудников** | Новый сотрудник спрашивает о регламентах и инструкциях и получает ответ без обращения к коллегам. |
| **Помощники для команд** | Агенты со своим набором знаний и инструкциями: для поддержки, продаж, ИТ-службы. |
| **Исследования** | Режим глубокого исследования готовит подробный отчёт за несколько шагов. |
| **Сохранение знаний** | Решения и контекст остаются доступными, когда люди или команды меняются. |

---

> «Это не просто еще один чат с LLM, а выстроенный и эффективный рабочий процесс. 
> Каждый запрос это точечное исследование доступного контекста и внешних источников. 
> Минимизация галлюцинаций LLM за счет итеративного подхода и параллельных запросов с 
> последующим разбором и объединением результатов.»

## ⭐ Возможности

- **🔍 Поиск и ответы по документам (Agentic RAG).** Гибридный индекс
  (ключевые слова и векторы) и агент, настроенный на поиск информации.
- **🔬 Глубокое исследование (Deep Research).** Подробные отчёты в несколько
  шагов.
- **🤖 Агенты.** Свой набор знаний, инструкции и действия для каждого агента.
- **📁 Проекты и файлы.** Загрузите документы в чат или проект и задавайте
  вопросы по ним.
- **🌐 Веб-поиск.** Дополняет ответы свежими данными из интернета: srezai.ru
  (работает в России без VPN), Serper, Brave, Tavily, SearXNG, Firecrawl.
  Есть встроенный сканер сайтов.
- **🧩 Действия и MCP.** Агенты выполняют задачи во внешних системах и
  подключают серверы MCP.
- **🔌 MCP-сервер.** Подключите Yahont как источник знаний к внешним агентам и
  MCP-клиентам, например к Claude Desktop: агент ищет по вашим документам тем же
  поиском, что и чат. 
- **💻 Выполнение кода.** Агент запускает код в изолированной песочнице.
- **🖼️ Генерация изображений.** Создание и правка картинок через подключённые
  модели.
- **🎙️ Голосовой режим.** Распознавание и синтез речи.

**🧠 Модели.** Подключайте российские шлюзы RouterAI и Polza.ai, облачных
провайдеров (OpenRouter, OpenAI, Anthropic и других) или свои модели через
Ollama, vLLM, LiteLLM и LM Studio. Для работы нужны ключи выбранных вами
провайдеров.

### 🔌 Источники знаний

Более 50 источников.

**Общие коннекторы** 

из Onyx:

- **Файлы и сайты:** загрузка файлов, сканер сайтов.
- **Wiki и трекеры:** Confluence и Jira (Cloud, Server и Data Center), GitLab,
  GitHub.
- **Базы знаний:** BookStack, Outline, MediaWiki, GitBook.
- **Google:** Google Drive, Gmail, Google Sites.
- **Почта по IMAP:** любой почтовый сервер, в том числе корпоративный.
- **Хранилища:** Amazon S3, Google Cloud Storage, Oracle Cloud Infrastructure.
- **Коммуникации:** Discord, Zulip, Zoom.

**Российские коннекторы**

уже подключены:

- **Яндекс Почта и Mail.ru** по IMAP, с поддержкой русских папок и заголовков.
- **S3-совместимые хранилища:** Yandex Object Storage, VK Cloud, Selectel,
  Cloud.ru, Timeweb Cloud, MinIO и другие.

в процессе разработки:

- **Яндекс Диск** и **Яндекс 360** (режим организации).
- **Bitrix24, amoCRM** и **МойСклад:** сделки, контакты, задачи, файлы.
- **1С:Предприятие:** загрузка документов через Ingestion API.
- **СБИС и Контур.Диадок:** документы торговли и электронного
  документооборота.

Порядок и набор коннекторов определяются запросами сообщества: напишите, какой источник 
нужен вам, в [Telegram](https://t.me/yahont_ai).

---

## 🧭 Как это работает

Yahont строит представление знаний по всем подключённым источникам: забирает
документы и метаданные, разбивает на фрагменты, считает эмбеддинги и записывает
в гибридный индекс. На вопрос система сразу находит нужные фрагменты в индексе и
передаёт их модели. Агенту не нужно перебирать десятки систем и тратить на это
токены.

```mermaid
flowchart LR
    subgraph Sources["Источники знаний"]
        S1["Базы знаний и вики"]
        S2["Облачные хранилища"]
        S3["Мессенджеры и почта"]
        S4["Репозитории и сайты"]
    end
    subgraph Contour["Ваш контур: сервер, ЦОД или изолированная сеть"]
        BG["Фоновые воркеры<br/>синхронизация"]
        EMB["Модели эмбеддингов"]
        IDX[("OpenSearch<br/>гибридный индекс")]
        API["Веб и API"]
        PG[("PostgreSQL")]
        LLM["Свои модели<br/>Ollama, vLLM"]
    end
    U["Пользователи: веб"]
    A["Агенты: MCP-клиенты"]
    T["Внешние инструменты: веб-поиск, MCP, OpenAPI"]
    P["Облачные провайдеры LLM"]
    S1 --> BG
    S2 --> BG
    S3 --> BG
    S4 --> BG
    BG --> EMB --> IDX
    U --> API
    A --> Contour
    API --> IDX
    API --> PG
    API --> LLM
    API -.->|"по вашему выбору"| P
    API -.->|"по вашему выбору"| T
```

### 🔒 Безопасность данных

Все компоненты работают на ваших серверах: индекс документов, база данных и
обработка. С локальными моделями эмбеддингов и LLM данные не покидают ваш
контур. Облачных провайдеров моделей вы можете использовать по своему усмотрению.

---

## 💎 Что Yahont добавляет к Onyx

Состояние на 18 октября 2026.

### ✅ Реализовано

- **Русский язык.** Интерфейс полностью переведён, русский язык установлен по умолчанию.
  Документация — [docs.yahont.ai](https://docs.yahont.ai).
- **Эмбеддинги для русского текста.** Модель по умолчанию —
  `intfloat/multilingual-e5-small` (мультиязычная).
- **Дополнительный веб-поиск для агентов.** Поиск и чтение страниц через srezai.ru.
- **Российские шлюзы моделей.** RouterAI и Polza.ai подключаются как провайдеры
  в разделе «Шлюзы и роутеры».
- **Яндекс Почта и Mail.ru.** Пресеты IMAP с исправлениями для российской почты.
- **S3-совместимые хранилища.** Один коннектор для любых российских и зарубежных
  провайдеров.
- **Готовые образы в Docker Hub.** `docker compose up -d` скачивает образы
  `yahontai/yahont-ce-*`, локальная сборка не нужна.

### 🔧 В работе

- **Качество эмбеддингов:** тестирование новой модели на российских данных.
- **Описание изображений:** сравнение vision-моделей на русских сканах.

### 📅 Запланировано

- **Вложения писем** (PDF, DOCX, XLSX) в Яндекс Почте, Mail.ru и IMAP. Сейчас
  индексируется только тело письма.
- **Telegram-бот** по аналогии со Slack-ботом: ответы в личных сообщениях,
  автоответы в выбранных группах и каналах. 
- **Вход через Яндекс ID.**
- **Поиск через Yandex Search API.**
- **Другие российские коннекторы.**

Подробный список изменений — в [CHANGELOG.md](CHANGELOG.md).

---

## 🧩 Режимы развёртывания

Yahont запускается в Docker Compose в двух режимах: стандартном и лайт. Режим
выбирается набором файлов Compose.

| | 🏗️ Стандартный | 🪶 Лайт |
|---|---|---|
| **Для кого** | Командам, которым нужны знания из своих источников | Для быстрой пробы интерфейса и команд, которым нужен только ИИ-чат |
| **Что запускается** | Все сервисы: 11 контейнеров | PostgreSQL, API, веб, `nginx` и выполнение кода: 5 контейнеров |
| **Минимум ресурсов** | 4 vCPU, 10 ГБ ОЗУ, диск 32 ГБ + ~2,5× проиндексированных данных | 2 vCPU, 2 ГБ ОЗУ, диск 10 ГБ |
| **Рекомендуется** | 8+ vCPU, 16+ ГБ ОЗУ, диск 500 ГБ для организаций до 5000 пользователей | 4 vCPU, 4 ГБ ОЗУ, диск 50 ГБ |
| **Источники знаний и коннекторы** | ✅ | ❌ |
| **Поиск по документам, знания агентов** | ✅ | ❌ |
| **Чат с моделями, агенты с инструкциями и инструментами** | ✅ | ✅ |
| **Файлы и изображения в чате** | ✅ | ✅ |
| **Выполнение кода** | ✅ | ✅ |

Лайт в базовом режиме использует меньше 1 ГБ памяти. Память и диск растут с
числом загруженных файлов, потому что в лайте файлы хранит PostgreSQL.
Подробнее о ресурсах:
[docs.yahont.ai/deployment/getting_started/resourcing](https://docs.yahont.ai/deployment/getting_started/resourcing).

#### 🏗️ Стандартный режим

Полный набор возможностей Yahont. Рекомендуем его для серьёзной работы и больших
команд. В лайте нет этих компонентов:

- гибридный индекс (OpenSearch) для поиска по документам;
- фоновые воркеры, которые синхронизируют знания из коннекторов;
- серверы моделей эмбеддингов для индексации и поиска;
- Redis и объектное хранилище для производительности и файлов.

#### 🪶 Лайт

Лайт можно считать лёгким интерфейсом ИИ-чата. В базовом режиме он использует
меньше 1 ГБ памяти и не умеет индексировать документы: коннекторы, поиск по знаниям и знания агентов
отключены. Подходит, чтобы быстро попробовать интерфейс или если команде нужны
только чат и агенты.

Запуск лайта установщиком — параметр `--lite` (`-Lite`), см.
[Быстрый старт](#-быстрый-старт). Вручную:

```bash
cd yahont-ce/deployment/docker_compose
cp env.template .env
openssl rand -hex 32   # вставьте результат в USER_AUTH_SECRET в файле .env
COMPOSE_PROFILES= docker compose -f docker-compose.yml -f docker-compose.lite.yml up -d
```

Пустое значение `COMPOSE_PROFILES=` в начале команды отключает объектное
хранилище из `env.template`: лайт хранит файлы и сессии в PostgreSQL.

> [!NOTE]
> Режимы хранят файлы и сессии в разных местах. Если вы захотите перейти из
> одного режима в другой, запустите второй под другим именем проекта
> (`docker compose -p yahont-lite ...`): файлы, загруженные в одном режиме, в
> другом не видны.

---

## 🚀 Быстрый старт

Нужны Git, Docker и Docker Compose. Требования к ресурсам —
[docs.yahont.ai/deployment/getting_started/resourcing](https://docs.yahont.ai/deployment/getting_started/resourcing).

**Установщик.** Скрипт скачивает репозиторий, создаёт `.env` с секретом входа и
запускает Yahont. Первый запуск скачивает образы из Docker Hub: время зависит
от канала связи.

Скрипт создаёт каталог `yahont-ce` в том каталоге, где вы его запустили.
Перейдите в нужное место заранее (например, `cd /opt`) или укажите путь
параметром `--dir` (`-Dir`).

Linux и macOS:

```bash
curl -fsSL https://yahont.ai/install_yahont.sh | bash
```

Windows (PowerShell, нужен Docker Desktop):

```powershell
irm https://yahont.ai/install_yahont.ps1 | iex
```

Чтобы запустить [режим «Лайт»](#-режимы-развёртывания), добавьте параметр:

```bash
curl -fsSL https://yahont.ai/install_yahont.sh | bash -s -- --lite
```

```powershell
& ([scriptblock]::Create((irm https://yahont.ai/install_yahont.ps1))) -Lite
```

Остальные параметры: `--dir` (`-Dir`) — путь установки вместо `./yahont-ce`, `--ref` (`-Ref`) —
ветка или тег, `--project` (`-Project`) — имя проекта Docker Compose (чтобы держать
две установки рядом), `--no-start` (`-NoStart`) — только подготовить файлы. Справка:
`--help` (`-Help`). Скрипт не требует `sudo` и прав администратора и не
перезаписывает существующий `.env`. Перед запуском он проверяет, что порты 80 и 3000
свободны. Прочитайте скрипт до запуска:
[install_yahont.sh](https://yahont.ai/install_yahont.sh),
[install_yahont.ps1](https://yahont.ai/install_yahont.ps1).

Если на сервере уже работает nginx и порт 80 занят, добавьте параметр
`--bind-local ПОРТ` (`-BindLocal ПОРТ`). Установщик создаст
`docker-compose.override.yml`, и Yahont будет слушать только `127.0.0.1:ПОРТ`.
Поставьте перед ним обратный прокси с HTTPS
([docs/reverse-proxy.md](docs/reverse-proxy.md)). Нужен Docker Compose 2.24.4 или новее.

```bash
curl -fsSL https://yahont.ai/install_yahont.sh | bash -s -- --bind-local 3100
```

**Вручную.** Те же шаги без скрипта:

```bash
git clone https://github.com/pipedude/yahont-ce.git
cd yahont-ce/deployment/docker_compose
cp env.template .env
openssl rand -hex 32   # вставьте результат в USER_AUTH_SECRET в файле .env
docker compose up -d
```

Без значения `USER_AUTH_SECRET` сервер не запустится. Для рабочей установки смените
в `.env` и пароли по умолчанию (подсказки есть в самом файле).

Откройте http://localhost:3000 или указанный в `.env` `WEB_DOMAIN=`. Если вы
запустили Yahont на удалённом сервере, откройте `http://<адрес сервера>:3000`:
`localhost` — это компьютер, где работают контейнеры. Первый
зарегистрированный пользователь становится администратором. Затем подключите 
модель и источники знаний в панели администратора.

> [!IMPORTANT]
> `docker compose up -d` скачивает готовые образы `yahontai/yahont-ce-backend`,
> `yahontai/yahont-ce-web` и `yahontai/yahont-ce-model-server` из Docker Hub.
> Версию задаёт `IMAGE_TAG` в `.env`: по умолчанию `latest`. Чтобы закрепить
> выпуск, укажите его тег вида `vX.Y.Z` из [CHANGELOG.md](CHANGELOG.md).
> Образы опубликованы для платформы linux/amd64. Для ARM готовых образов нет.
>
> Чтобы собрать образы из исходного кода вашей копии репозитория (свои правки,
> ARM), запускайте `docker compose up -d --build`. Сборка веб-образа требует
> около 4 ГБ оперативной памяти.
>
> Обновление: `git pull`, затем `docker compose pull` и `docker compose up -d`.
> Если вы собирали образы сами, `docker compose pull` заменит их опубликованными,
> а `docker compose up -d --build` вернёт ваши.

> [!WARNING]
> Docker Compose публикует порты 80 и 3000 на всех сетевых интерфейсах. Если
> вы устанавливаете Yahont на сервер с публичным адресом, не оставляйте их
> открытыми: смените пароли по умолчанию в `.env` и поставьте перед Yahont
> обратный прокси с HTTPS (пошаговая инструкция с Nginx и Let's Encrypt:
> [docs/reverse-proxy.md](docs/reverse-proxy.md)). Чтобы приложение слушало только локальный адрес,
> создайте рядом с `docker-compose.yml` файл `docker-compose.override.yml`
> (нужен Docker Compose 2.24.4 или новее), укажите в `.env` адрес сайта в
> `WEB_DOMAIN` и перенаправляйте на этот порт прокси:
>
> ```yaml
> services:
>   nginx:
>     ports: !override
>       - "127.0.0.1:3100:80"
> ```
>
> Брандмауэр `ufw` не закрывает порты, которые публикует Docker.

Подробнее о развёртывании через Docker —
[docs.yahont.ai/deployment/local/docker](https://docs.yahont.ai/deployment/local/docker).

> [!TIP]
> Не используйте дорогие тяжеловесные модели для работы в Yahont. Начните с моделей 
> flash и если вы увидите, что вам не хватает глубины ответов, пробуйте подключать 
> более тяжелые модели.

### Чего нет в этой версии (CE)

- **Функций Enterprise Edition Onyx.** Например, групп пользователей,
  синхронизации прав с источниками, SCIM, аналитики и истории запросов.
- **Onyx Craft.** По умолчанию отключён, в этой версии не протестирован и не описан.
- **Полного бренда в бэкенде.** В письмах и части сообщений сервера пока
  встречается «Onyx».

---

## 📚 Лицензия

- Код вне папок `ee` распространяется по лицензии MIT, см. [LICENSE](LICENSE).
  Авторские права на исходный код Onyx принадлежат DanswerAI, Inc.
- Папки `web/src/app/ee` и `web/src/ee` взяты из Onyx без изменений.
  Их лицензия — Onyx Enterprise License, файл `LICENSE` в каждой папке.

## 🤝 Сообщество и участие

- 💬 Вопросы и обсуждение — в Telegram-группе
  [t.me/yahont_ai](https://t.me/yahont_ai).
- 🐞 Ошибки и предложения — в [Issues](https://github.com/pipedude/yahont-ce/issues).
- 🔧 Хотите помочь с кодом? Прочитайте [CONTRIBUTING.md](CONTRIBUTING.md).
  Pull request принимаем: изменения переносим в основную ветку разработки и
  публикуем со следующим обновлением.
- 🔐 Уязвимости — по правилам из [SECURITY.md](SECURITY.md), не через Issues.
- 📧 Почта — support@yahont.ai.

<p align="right"><a href="#readme-top">⬆ К началу</a></p>