Иногда кажется, что данные живут собственной жизнью: размножаются в таблицах, мигрируют между сервисами, а потом внезапно спорят сами с собой. HASH предлагает довольно смелую идею — база данных, которая не просто хранит записи, а сама себя собирает, структурирует и проверяет. В работу включаются автономные агенты, они подтягивают информацию из открытых источников и подключённых частных систем, приводят сущности к строгим схемам и следят за качеством. В итоге получается единое «место истины» для критичных данных, где можно не только смотреть на граф сущностей, но и принимать решения без ощущения игры в угадайку.
Поверх этого ядра команда предлагает будущее в виде рабочего пространства с интерфейсами-«блоками», которые генерируются по требованию и работают прямо на типизированных данных. То есть не просто красивые панели, а контролируемые инструменты, где целостность и качество информации встроены в основу, а не налеплены постфактум.
Что такое HASH
В основе — саморазвивающаяся open-source база, которая:
- интегрирует данные почти в реальном времени и приводит их к строгим типам;
- использует «умные» агенты для сбора, проверки и поддержания консистентности;
- даёт визуальные интерфейсы для работы и с сущностями (данными), и с типами (схемами);
- становится платформой для решений с повышенным доверием и контролируемой безопасностью.
Если коротко — это не очередной «слой поверх хаоса», а попытка убрать хаос изначально. Пользователю, в том числе не техническому, доступна наглядная навигация по сущностям, согласование полей со схемами, а в перспективе — динамические интерфейсы-блоки «под задачу».
Сейчас «официально поддержанный» способ попробовать систему — это зарегистрироваться в хостинге HASH. Создайте аккаунт, зайдите в панель, следуйте подсказкам. Возможна очередь — чтобы ускориться, после входа выполните инструкции в дашборде: заявки просматривает живой человек, и это не шутка. Войти можно через стандартную форму, а доступ к функциональности появится сразу после активации.
Запуск локально
Инструкцию по локальному развёртыванию команда обещает оформить в полноценный гайд в ближайшее время, а пока — набор рабочих инструкций для разработчиков. Они несложные, но требуют аккуратности. Если любите собрать всё руками — отличный способ познакомиться с архитектурой изнутри.
Что понадобится до старта
- Git (≥ 2.17), Rust с toolchain из
rust-toolchain.toml
, Docker (≥ 20.10), Docker Compose (≥ 2.17.2), Docker Buildx (≥ 0.10.4), Protobuf; - Node.js экосистема и
yarn
для установки зависимостей; - mise — менеджер версий инструментов, чтобы синхронизироваться с репозиторием;
- на macOS/Windows — не забудьте выделить Docker минимум 4 ГБ RAM (лучше 8 ГБ).
Проверьте версии командами git --version
, rustup --version
, rustc --version
, docker --version
, docker compose version
, docker buildx version
. Если на macOS git
капризничает — поставьте Xcode Command Line Tools командой xcode-select --install
.
Склонируйте репозиторий и перейдите в корень:
git clone https://github.com/hashintel/hash cd hash
Установите и активируйте mise, затем подтяните заявленные версии инструментов из .config/mise
:
mise install
Поставьте зависимости фронтенда и бэкенда:
yarn install
Базовый запуск обходится без шаманства с переменными — дефолты зашиты в .env
и .env.development
. Секреты и переопределения кладите в .env.local
(он в git не попадает). Если планируете работать с ИИ-фичами (например, отвечающие агенты), добавьте туда ключи:
OPENAI_API_KEY
,ANTHROPIC_API_KEY
— для основных возможностей;HASH_TEMPORAL_WORKER_AI_AWS_ACCESS_KEY_ID
и..._SECRET_ACCESS_KEY
— для воркера;E2B_API_KEY
— для сценариев вопрос-ответ.
HASH опирается на набор контейнеров: Postgres, слой граф-запросов, Kratos, Redis и OpenSearch. Запускаем их одной командой:
yarn external-services up -d
Если менялся графовый слой — добавьте --build
для пересборки. Чтобы контейнеры не мешали при перезапусках приложения, используйте --detach
и управляйте жизненным циклом отдельно (... down
для остановки). При медленном интернете пригодится режим yarn external-services:offline up
— граф не будет тянуть схемы из Block Protocol.
Граф API и AI-воркер можно крутить вне Docker, если часто меняете их код: остановите контейнеры и запустите в отдельных терминалах yarn dev:graph
и yarn workspace @apps/hash-ai-worker-ts dev
.
Старт сервисов приложения
Самый простой вариант — всё сразу:
yarn start
Когда терминал покажет http://localhost:3000
— фронтенд готов. API поднимется на http://localhost:5001
; для полноценной работы должны быть доступны обе стороны. Частями запускать тоже можно:
yarn start:graph yarn start:backend yarn start:frontend
При старте API автоматически создаются три пользователя с паролем password: alice@example.com
, bob@example.com
(обычные роли) и admin@example.com
(администратор). Этого хватает, чтобы пройти весь базовый поток и не тратить время на регистрацию.
Почта, тестовые режимы и «красная кнопка» очистки
Рассылка писем устроена так: Kratos шлёт всё аутентификационное (верификации, восстановление), остальное — через Email Transport API. В дев-режиме удобно использовать «манекен»-транспортер, который пишет письма в файл. Нужен AWS SES? Поставьте HASH_EMAIL_TRANSPORTER=aws_ses
и укажите валидные креды.
Тесты, которые засоряют базу, можно изолировать — запускайте внешние сервисы в режиме yarn external-services:test up
. Если всё же что-то сломали, есть два пути: медленный (удаление контейнера hash-external-services и соответствующих volumes с последующей пересборкой) или быстрый — yarn dev:graph:test-server
и затем yarn graph:reset-database
. Для фронта дополнительно очистите таблицу identities
в базе Kratos.
Что внутри
Монорепозиторий разделён логично и предсказуемо. В /apps
живут сервисы рабочей среды (фронтенд, бэкенд, реальтайм), в /blocks
— публичные блоки Block Protocol, в /content
— редактируемый контент сайтов и документации, в /infra
— скрипты и заготовки для развёртывания в облаке, в /libs
— общие библиотеки и крейты Rust, а в /tests
— интеграционные и e2e-сценарии, которые проходят по нескольким частям приложения сразу.
Внешние сервисы составляют привычный стек: Postgres (несколько баз под разные задачи — Kratos, Temporal, графовый слой), Redis для очередей и кэша, Kratos как система управления идентификацией и потоками аутентификации, Temporal для воркфлоу (включая AI-домены), OpenSearch (по умолчанию отключён и помечен как неподдерживаемый в текущем виде). Для разработчика это значит прозрачные зависимости, которые можно поднимать и выключать по мере необходимости.
Большинство значений переменных окружения уже задано, поэтому «пустой» запуск работает из коробки. Тем не менее, для продвинутых сценариев предусмотрены десятки флагов и конфигов: от NODE_ENV
и PORT
до интеграций с AWS для загрузки файлов и почты, SMTP-провайдерами, кастомными адресами фронтенда, частотами опроса уведомлений и уровнями логирования. Если включаете S3, задайте FILE_UPLOAD_PROVIDER=AWS_S3
и используйте группу переменных AWS_S3_UPLOADS_*
. Метрики — через StatsD, телеметрию — через Snowplow (HASH_TELEMETRY_ENABLED
, HASH_TELEMETRY_DESTINATION
и пр.).
Для фронтенда важен FRONTEND_URL
(по умолчанию http://localhost:3000
), для API — API_ORIGIN
и SESSION_SECRET
. Реальтайм-порт указывается в HASH_REALTIME_PORT
, очереди — в HASH_INTEGRATION_QUEUE_NAME
и HASH_SEARCH_QUEUE_NAME
. Если забираете блоки из Block Protocol Hub, добавьте BLOCK_PROTOCOL_API_KEY
.
Для локального прогона браузерного плагина загляните в apps/plugin-browser
— там отдельный README. В репозитории есть примерные конфиги для популярных редакторов — VS Code, Zed — чтобы быстрее размечать проект и не бороться с форматтерами. И да, агенты и воркеры можно гонять рядом с фронтом, не засоряя Docker: просто запустите те сервисы, которые вам нужны, а остальное выключите.
Команда ведёт открытую дорожную карту: можно посмотреть, что пилится сейчас и что стоит в очереди. Полное руководство по развёртыванию в AWS/GCP/Azure «на подходе», а пока ориентируйтесь на папку /infra
— там достаточно подсказок, чтобы собрать пилот. Отдельно заявлено: в 2025 году выйдет полноценный гайд по самостоятельному хостингу, что снимет последние вопросы у тех, кто хочет держать всё под собственным контролем.
Большая часть кода — свободная и доступна без ограничений: детали по лицензиям — в LICENSE
. Уязвимости и проблемы с безопасностью команда просит отправлять согласно инструкциям в SECURITY
— там же зафиксированы поддерживаемые версии пакетов. Для желающих поучаствовать есть CONTRIBUTING
с правилами оформления изменений. И маленький бонус: компания активно ищет инженеров, а каждый PR действительно видит живой человек. Можно начать с мелочи, а дальше всё само поедет.
HASH закрывает болезненное место — разрыв между «данные где-то там» и «данные, которым можно доверять здесь и сейчас». Саморазвивающееся ядро, агенты, строгие схемы и визуальные интерфейсы дают ощущение управляемости: нет хаотичной миграции CSV по почте, нет расползания сущностей. Вы строите решения поверх графа, а не переписываете конвейеры в попытке удержать мир от энтропии. Порог входа мягкий (облако), глубина — сколько захотите (локально и в коде), перспектива — рабочее пространство с блоками, генерируемыми по требованию. И это, кажется, редкий случай, когда «больше ИИ» означает «больше порядка», а не наоборот.
Полезные ссылки для навигации
- Монорепозиторий: github.com/hashintel/hash
- Хостинг и быстрый старт: app.hash.ai
- Block Protocol и ключи: страница ключей
- Обсуждения, вопросы, помощь: создавайте issue или discussion прямо в репозитории; оперативные контакты — ???? @hashintel и почта hey@hash.ai.
Итог
HASH — это попытка сделать базу данных не просто «местом хранения», а живой системой, где информация приходит в порядок сама, а интерфейсы рождаются под задачу. Хотите быстро посмотреть — идите в облако. Нужна глубина — поднимайте стек локально, трогайте граф, экспериментируйте с агентами и воркфлоу. Монорепозиторий устроен прозрачно, документация практичная, а входной порог ниже, чем кажется. Если вы устали мириться с бесконечным рассинхроном, это как раз тот случай, когда интересно попробовать здесь и сейчас.