Начало работы
Simmetric Chat — это локальная AI-чат-платформа, способная работать автономно (air-gap): она работает без подключения к внешним облачным сервисам, с локальной LLM (Ollama), локальными эмбеддингами (Xenova) и локальной векторной базой (LanceDB). При настр…
Simmetric Chat — это локальная AI-чат-платформа, способная работать автономно (air-gap): она работает без подключения к внешним облачным сервисам, с локальной LLM (Ollama), локальными эмбеддингами (Xenova) и локальной векторной базой (LanceDB). При настройке она также может использовать облачных провайдеров (OpenAI, Anthropic, OpenRouter) и удалённую векторную базу (Qdrant).
Предварительные требования
- Node.js ≥ 24 и pnpm 11.24.0 (менеджер монорепозитория; `corepack enable && corepack prepare [email protected] --activate`)
- PostgreSQL 16 (основная база данных)
- Ollama (необязательно, но рекомендуется для локальной LLM) - https://ollama.com
- Docker + Docker Compose (для контейнерного развёртывания, см. 09 - Deployment)
Проверка:
node -v && pnpm -v && psql --versionУстановка (локальная разработка)
git clone <repo> simmetric-chat
cd simmetric-chat
pnpm installМонорепозиторий использует pnpm workspaces + Turborepo. Пакеты находятся в packages/: shared, server, frontend, collector, widget, плюс десктопное приложение src-tauri/.
Переменные окружения
Все пакеты читают `.env` в корне репозитория (единственный файл конфигурации времени выполнения; старый уровень .env на пакет удалён: приоритет process.env > корневой .env > значения по умолчанию в коде). Создайте минимальный файл:
cp .env.example .envОбязательные секреты (JWT_SECRET, COLLECTOR_SECRET) и ключ виджета:
JWT_SECRET=$(openssl rand -hex 32)
COLLECTOR_SECRET=$(openssl rand -hex 32)
WIDGET_API_KEY=$(openssl rand -hex 32)
DATABASE_URL=postgresql://simmetricchat:simmetricchat@localhost:5432/simmetricchat
LLM_PROVIDER=ollama
LLM_MODEL=gemma4:latest
OLLAMA_BASE_URL=http://localhost:11434WIDGET_API_KEY требуется сервису виджета (собственная Zod-схема завершает процесс без него); сервер регистрирует его как API-ключ учётной записи widget-service при запуске (идемпотентно). Опционально в разработке: API_KEY_HMAC_SECRET (ключи API sk- остаются непригодными, пока он не задан) и ENCRYPTION_KEY (запасной вариант scryptSync(JWT_SECRET); обязателен в продакшене). Отсутствие LICENSE_KEY означает Community-сборку.
Полная таблица переменных окружения: 03 - Configuration.
База данных
Создайте базу данных PostgreSQL (например, docker compose -f docker/docker-compose.infra.yml up -d postgres), затем сгенерируйте клиент Prisma, примените миграции и сид:
pnpm db:generate # генерирует клиент Prisma (+ исправление symlink Prisma 7/pnpm)
pnpm --filter server db:migrate # применяет миграции (интерактивно)
pnpm --filter server db:seed # роли по умолчанию (Admin, Superuser, User), разрешения, конфиг, шаблоныАльтернатива ручному сиду: на пустой базе фронтенд показывает мастер настройки из 4 шагов (админ, LLM-провайдер, векторная база) - либо сервер автоматически сидит bootstrap-админа (SEED_BOOTSTRAP_ADMIN=true по умолчанию, настраивается через SEED_ADMIN_USERNAME / SEED_ADMIN_PASSWORD / SEED_ADMIN_EMAIL, по умолчанию admin / admin123 / [email protected] с mustChangePassword=true). Самостоятельная регистрация закрыта по умолчанию (ALLOW_REGISTRATION=false): пользователей создаёт админ из Settings или через POST /api/auth/admin-register.
Запуск разработки
Одна команда запускает все сервисы через Turborepo:
pnpm devПорты по умолчанию:
| Service | Порт | Описание |
|---|---|---|
| frontend | 5173 | Vite SPA (React 19), прокси /api → server |
| server | 3000 | Express API + Swagger на /api-docs |
| collector | 3210 | Микросервис приёма документов |
| widget | 3211 | Встраиваемый сервис виджета (Preact) |
Откройте http://localhost:5173, войдите под admin / admin123, смените пароль.
Если Ollama не запущена, чаты завершаются ошибкой подключения. Скачайте модель с помощью
ollama pull gemma4:latest && ollama serve или настройте облачного провайдера вSettings → Providers.
Краткий обзор интерфейса
- Sidebar - группы, отфильтрованные по ролям: Overview (дашборд), Chat (чаты, проекты, рабочие пространства), Knowledge (документы, база знаний, загрузки), Platform (виджеты, маркетплейс, аналитика - админ), System (журнал событий, SSO - админ/enterprise). Пункты следуют 13 разделам меню RBAC.
- Chat - потоковая передача токен за токеном, выбор модели на чат (палитра
Cmd+K), сравнение бок о бок (Cmd+Shift+M), цитирование RAG, слэш-команда/model. - Documents - загрузка перетаскиванием (PDF, DOCX, XLSX, PPTX, TXT, MD, CSV, изображения с OCR), статус
pending → processing → completed → failed. - Settings - 5 основных вкладок (Профиль, LLM-провайдеры, Оформление, Безопасность, Дополнительно), вложенные подразделы: Providers, LLM & Embedding, Vector DB, API Keys, Roles, Users, MCP Connections, Maintenance, Backups, DLP, Widget (отдельная страница), OCR и т.д.
- Maintenance - переиндексация RAG в один клик после смены модели эмбеддингов.
Рекомендуемые первые шаги
- Настройте провайдера - Settings → Providers: добавьте Ollama (локально) или OpenAI/Anthropic.
- Создайте рабочее пространство и проект - документы и чаты привязаны к рабочему пространству.
- Загрузите документ - Documents → загрузка; дождитесь статуса
completed. - Общайтесь - откройте чат в рабочем пространстве и задавайте вопросы о документе (гибридный RAG).
- (Админ) Изучите маркетплейс - установите MCP-сервер, чтобы расширить агента инструментами.
Следующие шаги
- Понять, как это работает внутри: 02 - Architecture
- Все переменные окружения и флаги функций: 03 - Configuration
- Встраивание чата на ваш сайт: 06 - Widget Integration