Команда инженеров · свой ЦОД в РФ · своё железо · своя панель · CloudStack + Linstor · MCP · база знаний по self-hosted
Обновлено 14 октября 2026 г.
Память для AI-агентов

OpenViking

Своя память и RAG для AI-агента вместо облачных memory-SaaS вроде Mem0 и Zep: долговременная память, поиск по документам и навыки в одном сервисе на вашем сервере (вендор называет его контекстной базой). Развернули 0.5.0 на Fatmetal Cloud Server, замерили расход ресурсов и проверили, что факты из диалога доходят до семантического поиска.

Проверено на версии v0.5.0, 14 октября 2026 ~11 минут чтения Fatmetal Team
Память и RAG Лицензия: AGPL-3.0 Статус: запущен у нас, v0.5.0

Вердикт

Подходит
  • тем, кто строит AI-агента (Claude Code, Codex, OpenCode, OpenClaw) и хочет держать его память у себя
  • кому нужны память, RAG и навыки в одном сервисе, а не три разных
  • тем, кто готов подключить модель: локальную (ollama) или внешнюю по ключу
Не подходит
  • если нужен managed-сервис без администрирования
  • если документов больше пары штук, а эмбеддер локальный: уже на 10 файлах (~26 КБ) он упирается в CPU и поиск перестает отвечать
  • если у агента нет доступа к LLM: без него память из диалога не извлекается
Мин. тариф: CPU2-RAM4-DISK50 Рекомендуем: CPU4-RAM8-DISK100 RAM в простое: ~750 МиБ Сложность: medium Время запуска: ~7 минут от чистой Ubuntu Главный риск: локальный эмбеддер на CPU и том под данные Прод-готовность: с оговорками (TLS + api-key + том данных)
Что это

Что это и какую задачу решает

OpenViking - открытая контекстная база для AI-агентов от команды Viking (Volcengine, ByteDance). Она закрывает боль, которая вылезает у любого агента дальше прототипа: где хранить то, что агент узнал, чтобы он помнил это между сессиями и находил нужное по смыслу, а не по точному совпадению строки.

Внутри три вещи в одном хранилище: долговременная память (факты о пользователе, события, предпочтения), RAG по вашим документам и реестр навыков агента. Все лежит в едином пространстве имен вида viking://user/имя/memories. Наружу торчит HTTP-сервер с REST API, веб-интерфейс Web Studio и шлюз vikingbot. Клиенты - Python SDK, CLI ov и обычный curl с заголовком X-API-Key. Хранилище мультитенантное: аккаунты, пользователи и отдельные ключи под каждого.

Python 3.13FastAPIRAGFS (Rust)VectorDBDocker
Сравнение

Чем отличается от платных аналогов

Сравниваем с облачными сервисами памяти для агентов по тому, что влияет на выбор.

ПараметрOpenViking (self-hosted)Облачный memory-SaaS
Модель ценыбесплатно, платите за свою VMподписка: Mem0 от $19/мес, Zep от $125/мес
Где данныена вашем сервере, в вашей сетина стороне вендора
Память + RAG + навыкив одном сервисеобычно разные продукты
Выбор моделилюбой: локальный или по ключуто, что дает вендор
Привязка к вендорунет, namespace вашесть
Обновление

Что изменилось с прошлого разбора

Мы разбирали 0.4.16 в августе, сейчас актуальна 0.5.0. Вот что поменялось для того, кто ставит продукт.

Главное новое - OpenViking Gateway в статусе беты. Это отдельный процесс, который встает между клиентом и провайдером моделей: любой клиент, у которого можно сменить base URL, получает память OpenViking без плагина и правок кода. В 0.5.0 это отдельный сервис на порту 1935, в карточке маркетплейса он выключен.

Второе заметное - Working Memory выключена по умолчанию. Диалог по-прежнему архивируется и из него извлекается долговременная память, но сводки и контрольные точки больше не генерируются, если не попросить явно.

Еще три вещи, которые заденут тех, кто обновляется со старой версии: переписан поиск (единый recall и один rerank, оценки косинуса нормированы в диапазон 0-1, старые пороги надо калибровать заново); ключи настройки авто-коммита сессий объединены в один, старые молча игнорируются; в образе больше нет ripgrep, а рабочий каталог контейнера переехал в /app/.openviking.

Под капотом

Тех-стек и архитектура

Сервер написан на Python 3.13 поверх FastAPI. Индекс файлов и уровневое чтение вынесены в нативный Rust-биндинг - он грузится быстро и не упирается в GIL. Векторный слой по умолчанию локальный, данные лежат в рабочей директории. Один контейнер поднимает сразу HTTP API на порту 1933, Web Studio на /studio и шлюз vikingbot.

Ключевой момент: OpenViking не считает эмбеддинги и не извлекает факты сам. Ему нужны две модели - эмбеддер (превращает текст в вектор для поиска) и VLM/LLM (читает диалог сессии и вытаскивает из него структурированные факты). Обе можно взять локальными или указать любой OpenAI-совместимый провайдер по ключу. Именно модели, а не сам сервис, определяют, сколько нужно ресурсов.

Конфигурация

Минимальная конфигурация

Реальные требования против того, что обещает вендор.

Официальный старт2 vCPU / 4 GB / 30 GB
Контейнер в простое~750 MiB
Хост с локальной моделью~1,4-2 GB
Образ на диске1,74 GB
Рекомендуем тарифCPU4-RAM8-DISK100
i

Важно: по памяти хватило бы и CPU2-RAM4-DISK50, но узкое место - процессор. Локальный эмбеддер на 4 ядрах уже не успевает за небольшим корпусом документов (подробнее ниже), поэтому рекомендуем CPU4-RAM8-DISK100. Если эмбеддер и LLM внешние по ключу, хватит и CPU2-RAM4-DISK50.

В маркетплейсе Fatmetal

Не хотите ставить руками?

OpenViking есть в маркетплейсе Fatmetal - можно не повторять установку из этого разбора вручную. Заказываете сервер, за пару минут получаете рабочий домен, валидный TLS, локальный эмбеддер и файл с доступами.

Рекомендуемая конфигурация:
4 vCPU · 8 ГБ RAM · 100 ГБ NVMe от 990 ₽/мес

В маркетплейс →
Развертывание

Развертывание на Fatmetal Cloud Server

Базовый путь - Cloud Server с Ubuntu 24.04, Docker, локальный эмбеддер и Caddy для TLS. На чистой машине это занимает около семи минут.

  1. Создать сервер

    Тариф CPU4-RAM8-DISK100, ОС Ubuntu 24.04 LTS. Отдельное приложение из маркетплейса не нужно: Docker поставим сами.

  2. Установить Docker

    Образ Ubuntu идет без Docker. Официальный скрипт поставит движок и плагин compose:

    curl -fsSL https://get.docker.com | sudo sh
    sudo systemctl enable --now docker
  3. Поднять локальный эмбеддер

    ollama считает векторы на самой машине, без внешнего ключа. Модель тянем через HTTP API - CLI в неинтерактивной среде падает:

    curl -fsSL https://ollama.com/install.sh | sh
    sudo mkdir -p /etc/systemd/system/ollama.service.d
    printf '[Service]\nEnvironment="OLLAMA_HOST=0.0.0.0:11434"\n' | sudo tee /etc/systemd/system/ollama.service.d/override.conf
    sudo systemctl daemon-reload && sudo systemctl restart ollama
    curl -sS http://127.0.0.1:11434/api/pull -d '{"name":"nomic-embed-text","stream":false}'
  4. Подготовить ov.conf

    Сервер не стартует без root_api_key. Здесь же задаем том данных и адрес эмбеддера. Для извлечения памяти добавьте блок vlm с вашим ключом (BYOM) - без него память останется пустой:

    mkdir -p ~/.openviking
    cat > ~/.openviking/ov.conf <<'EOF'
    {
      "server":  { "root_api_key": "СГЕНЕРИРОВАННЫЙ_КЛЮЧ", "host": "0.0.0.0", "port": 1933 },
      "storage": { "workspace": "/app/.openviking/data" },
      "embedding": { "dense": {
          "provider": "ollama", "model": "nomic-embed-text",
          "api_base": "http://172.17.0.1:11434/v1", "dimension": 768 } },
      "vlm": { "provider": "openai", "model": "ВАША_МОДЕЛЬ",
          "api_key": "ВАШ_КЛЮЧ", "api_base": "https://ПРОВАЙДЕР/v1" }
    }
    EOF
    chmod 600 ~/.openviking/ov.conf
  5. Запустить OpenViking

    Версию закрепляем тегом, порт держим на localhost. Переменные прокси нужны, если VLM внешний и отвечает из-за рубежа:

    sudo docker run -d --name ov --restart unless-stopped \
      -p 127.0.0.1:1933:1933 --add-host=host.docker.internal:host-gateway \
      -e HTTP_PROXY=http://api-proxy.fatmetal.net:8080 \
      -e HTTPS_PROXY=http://api-proxy.fatmetal.net:8080 \
      -e NO_PROXY=172.17.0.1,localhost,127.0.0.1,::1 \
      -v ~/.openviking:/app/.openviking \
      ghcr.io/volcengine/openviking:v0.5.0

    Проверка: curl 127.0.0.1:1933/health отдает {"status":"ok","version":"v0.5.0"}.

  6. Домен и TLS

    Порт 1933 наружу не открываем. Caddy проксирует на него и сам выпускает сертификат. Подставьте свой домен, направленный A-записью на IP сервера:

    sudo tee /opt/Caddyfile >/dev/null <<'EOF'
    ваш-домен {
        reverse_proxy 127.0.0.1:1933
    }
    EOF
    sudo docker run -d --name ov-caddy --restart unless-stopped --network host \
      -v /opt/Caddyfile:/etc/caddy/Caddyfile -v caddy_data:/data caddy:2
Web Studio OpenViking: дашборд с объемом контекста, токенами и графиком потребления
Web Studio, главный экран: объем контекста, расход токенов и график. OpenViking v0.5.0.
Файловое дерево viking:// в Web Studio с уровнями L0 и L1
Контекст как файловая система: у каждой папки есть аннотация L0 и обзор L1, полный текст - L2.
Семантический поиск по памяти в Web Studio с оценками релевантности
Семантический поиск: запрос по смыслу возвращает записи с оценкой релевантности.
Сессия агента в Web Studio OpenViking с сообщениями диалога
Сессии агента: из диалога сервер извлекает факты и коммитит их в память.
Замеры

Что измерили после запуска

Цифры с тестового CPU4-RAM8-DISK100: эмбеддер локальный (ollama nomic-embed-text), извлечение памяти на внешнем LLM.

Установка от чистой Ubuntu~7 минут
RAM контейнера в простое~750 MiB
Caddy рядом~10 MiB
Образ на диске1,74 GB
Отклик /health~4 мс
Семантический поиск (малый набор)~0,6 с
i

Главное: полный конвейер отработал сквозняком. Записали документ в viking://resources - поиск по смыслу вернул его с оценкой 0,84. Отправили три сообщения в сессию и закоммитили - сервер извлек из них факты (имя, профессию, стек) в identity.md, и они нашлись запросом. Данные переживают пересоздание контейнера, если том смонтирован.

Проверено на версии v0.5.0, октябрь 2026. На новых версиях результаты могут отличаться.

Подводные камни

Где может сломаться

Реальные грабли, на которые наткнулись при запуске.

RuntimeError: NumPy was built with baseline optimizations (X86_V2) but your machine doesn't support (X86_V2)

Причина. numpy в образе собран под уровень инструкций x86-64-v2 (нужны SSE4.2, POPCNT, SSSE3). Если гипервизор отдает гостю обобщенный CPU уровня qemu64, контейнер падает при импорте numpy.

Решение. нужна VM, где гостю проброшен реальный CPU хоста. На тарифах Fatmetal гость видит настоящий Xeon с полным набором флагов, и образ стартует штатно.

!

Локальный эмбеддер не тянет корпус. На 4 ядрах один эмбеддинг чанка документа (около 950 токенов) занимает 5-30 секунд. Когда мы поставили в индекс 10 документов на ~26 КБ, процесс ollama занял все ядра, запросы к нему стали падать по таймауту, а поиск перестал отвечать. Для реального корпуса берите внешний эмбеддер по ключу - прокси Fatmetal уже прописан в рецепте; локальный ollama годится для пары документов и демо.

!

Персистентность. По умолчанию storage.workspace равен ./data и пишется в слой контейнера. После docker rm все аккаунты и векторы теряются. Вынесите workspace в смонтированный том, как в конфиге выше - мы проверили, данные так переживают пересоздание.

!

Путь эмбеддера. Для provider: ollama адрес обязан заканчиваться на /v1 (OpenAI-совместимый эндпоинт), иначе будет 404 на /embeddings.

!

Два ключа. root-ключ управляет аккаунтами, но в data-API не ходит. Для записи и поиска заведите аккаунт и пользователя и работайте его ключом.

!

Gateway и документация. В 0.5.0 gateway - отдельный процесс на порту 1935, а сайт-документация уже описывает следующую схему со встроенным gateway под /gateway на 1933. На 0.5.0 такой путь вернет 404: сверяйтесь с версией, которая у вас стоит.

Безопасность

Безопасность и обновления

Сервер не поднимается без root_api_key - это уже базовая защита. Порт 1933 держим на localhost и открываем наружу только 443 через Caddy с валидным TLS. Web Studio закрыт api-key, доступ к данным идет по пользовательским ключам с разделением по аккаунтам. Перед продом закройте четыре пункта: TLS, api-key на Studio, том под данные, отдельные ключи пользователей. Обновление - тот же том с новым тегом:

sudo docker pull ghcr.io/volcengine/openviking:v0.5.0
sudo docker rm -f ov && sudo docker run -d --name ov ... # тот же том

Бэкап - это каталог тома. Останавливаем контейнер и архивируем:

sudo docker stop ov && tar czf ov-backup.tgz -C ~/.openviking data
Рядом

Связь с другими стеками

  • Обратный прокси - Caddy для авто-TLS на вашем домене.
  • Локальные модели - ollama рядом для эмбеддера и/или LLM без внешнего ключа.
  • AI-агенты - плагины памяти для Claude Code, Codex, OpenCode, OpenClaw; gateway (бета) добавляет память любому клиенту сменой base URL.
  • Бэкапы - tar тома данных, при желании с выгрузкой на отдельный диск.
Границы

Когда это НЕ ваш выбор

Нужен готовый managed-сервис

OpenViking надо администрировать: конфиг, модели, том, обновления. Если хочется просто дернуть API и не думать про инфраструктуру - берите облачный memory-SaaS.

Большой корпус и только локальный эмбеддер

На CPU без внешнего эмбеддера индексация десятков документов упирается в процессор и блокирует поиск. Нужен либо внешний эмбеддер по ключу, либо заметно больше ядер.

У агента нет доступа к LLM

Извлечение фактов в память идет через LLM. Без внешнего ключа и без локальной модели этот шаг не заработает, и память останется пустой.

AGPL-3.0 не подходит по политике

Лицензия с сетевым копилефтом: если раздаете OpenViking как сервис третьим лицам, придется раскрывать изменения. Для внутреннего self-host ограничений нет.

FAQ

Частые вопросы

Можно поднять без внешнего ключа?

Эмбеддер - да, локально через ollama. Для извлечения памяти нужен LLM: либо локальная модель, либо ключ любого OpenAI-совместимого провайдера.

Хватит ли CPU2-RAM4-DISK50?

По памяти да. Но локальный эмбеддер на 4 ядрах не успевает за корпусом документов, поэтому для реальной работы рекомендуем CPU4-RAM8-DISK100 или внешний эмбеддер.

Данные переживают пересоздание контейнера?

Только если storage.workspace вынесен в смонтированный том. По умолчанию нет.

Что нового в 0.5.0?

Gateway в бете, Working Memory выключена по умолчанию, переписан поиск. Подробнее - в разделе об изменениях.

Как искать по памяти?

Семантически: запрос эмбеддится и сопоставляется по вектору, ответ ранжируется по релевантности. Есть и режимы grep/glob по содержимому.

Можно в продакшен?

Да, с оговорками: TLS через Caddy, порт на localhost, api-key на Studio, том под данные, отдельные ключи пользователей.

Какая лицензия?

AGPL-3.0. Для внутреннего использования свободна; при сетевом доступе третьих лиц надо открывать изменения.

Итог

OpenViking закрывает связку память + RAG + навыки для AI-агентов одним self-hosted сервисом с мультитенантностью и выбором любых моделей. Контейнер занимает около 750 MiB в простое, весь конвейер памяти отрабатывает сквозняком: факты из диалога ложатся в память и находятся по смыслу. Два момента держите в голове: гостю нужен реальный CPU (host-passthrough) и том под данные, а локальный эмбеддер годится только для небольшого корпуса. На тарифах Fatmetal первое снимается из коробки, второе решается внешним эмбеддером через прокси.

Рекомендуемая конфигурация для установки:
4 vCPU · 8 ГБ RAM · 100 ГБ NVMe

Не хотите устанавливать вручную?

Запустите OpenViking на этой конфигурации автоматически - от 990 ₽/мес.

Запустить OpenViking →
Анонсы новых разборов в Telegram-канале Новые гайды и карточки в маркетплейсе первыми @fatmetal_channel →

Этот стек у нас запущен на тарифе CPU4-RAM8-DISK100. Нашли баг в гайде - напишите, поправим в течение дня.