Files
ZBrain/README.md
T
zuevav f4bca8449e main
2026-05-20 19:33:02 +03:00

174 lines
8.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ZBrain
Централизованная база знаний для AI-агентов ZETIT. Веб-админка + MCP-прокси поверх [gbrain](https://github.com/garrytan/gbrain).
## Зачем это
У нас много разных контекстов, и каждый Claude Code инстанс сейчас читает документацию с диска целиком при каждом запросе:
- **ZetitConnect MSP** — спецификации, спринты, архитектура
- **TeleraPharma** — runbook'и по Exchange, MikroTik, FortiGate, 1C
- **ZETIT клиенты** — конфигурации, инциденты, скрипты
- **Personal** — личные проекты, недвижимость, авто
- **Community (Смоленская 10)** — общедомовое, ЖКХ
ZBrain даёт единую точку доступа: гибридный семантический поиск по корпусу, MCP-интеграция с Claude Code/Cursor, разделение по доменам с изоляцией доступа.
## Архитектура
```
ИНТЕРНЕТ
brain.zetit.ru (nginx, TLS, OAuth)
┌───────────────┴────────────────┐
│ brainhub-public │
│ - OAuth 2.1 (PKCE) │
│ - токены с scope │
│ - rate limit │
│ - audit log │
└───────────────┬────────────────┘
══════════════════════════════╪═══════════════════════════════
VPN / внутренний контур
┌───────────────┴────────────────┐
│ brainhub-internal │
│ - Web UI (React) │
│ - Admin API │
│ - MCP proxy router │
│ - SSE event aggregator │
└───────┬────────────┬───────────┘
│ │
┌───────┴────────────┴──────────┐
│ gbrain instances (HTTP) │
│ :3001 → gbrain_zetit │
│ :3002 → gbrain_telerapharma │
│ :3003 → gbrain_personal │
│ :3004 → gbrain_community │
└───────┬───────────────────────┘
┌───────┴───────────────────────┐
│ PostgreSQL 16 + pgvector │
│ - brainhub (admin/auth/audit)│
│ - gbrain_zetit │
│ - gbrain_telerapharma │
│ - gbrain_personal │
│ - gbrain_community │
└───────────────────────────────┘
```
## Стек
- **Backend**: Node.js 22 LTS + TypeScript + Express
- **Frontend**: React 18 + TypeScript + Vite + Tailwind + shadcn/ui
- **DB**: PostgreSQL 16 + pgvector + pg_trgm
- **Auth**: Local email/password + Yandex OAuth + GitHub OAuth (passport.js)
- **Engine**: gbrain (vendored через git.zetit.ru/zuevav/gbrain-mirror)
- **Runtime**: Docker Compose в prod, native dev на разработке
- **Deploy**: VM Ubuntu 22.04 в сети ZETIT
## Структура репозитория
```
ZBrain/
├── apps/
│ ├── api/ # Express + TS backend
│ └── web/ # React + Vite frontend
├── packages/
│ ├── shared/ # общие типы и утилиты
│ └── mcp-proxy/ # MCP-прокси (валидация токенов, rate limit, audit)
├── deploy/
│ ├── docker/ # Dockerfile'ы и docker-compose
│ ├── systemd/ # unit-файлы для нативного деплоя
│ ├── nginx/ # конфиги reverse proxy
│ └── postgres/ # init scripts, tuning
├── docs/
│ ├── ARCHITECTURE.md # детальная архитектура
│ ├── DEPLOYMENT.md # инструкция по деплою
│ ├── SECURITY.md # модель безопасности
│ ├── API.md # API reference
│ ├── ROADMAP.md # план по спринтам
│ └── DECISIONS/ # ADR (Architecture Decision Records)
├── scripts/
│ ├── bootstrap-vm.sh # первичная установка на чистой Ubuntu 22.04
│ ├── create-brain.sh # создание нового gbrain instance
│ ├── backup.sh # бэкап всех БД
│ └── restore.sh # восстановление
└── README.md # этот файл
```
## Быстрый старт
### Развёртывание production VM
См. [docs/DEPLOYMENT.md](docs/DEPLOYMENT.md). Кратко:
```bash
# 1. Создать VM (4 vCPU / 8 GB RAM / 80 GB SSD / Ubuntu 22.04)
# 2. Склонировать репо
git clone git@git.zetit.ru:zuevav/ZBrain.git /opt/zbrain
cd /opt/zbrain
# 3. Запустить bootstrap (ставит Postgres, Node, Bun, gbrain, тюнит ОС)
sudo bash scripts/bootstrap-vm.sh
# 4. Создать первый брейн
sudo bash scripts/create-brain.sh zetit "ZETIT MSP" 3001
# 5. Сконфигурировать .env (см. .env.example)
sudo nano /etc/zbrain/.env
# 6. Запустить brainhub
cd /opt/zbrain
docker compose up -d
```
### Локальная разработка
```bash
# Зависимости
bun install
# Postgres в docker
docker compose -f deploy/docker/docker-compose.dev.yml up -d
# Миграции
bun run db:migrate
# Запуск API + Web
bun run dev
```
API на http://localhost:3000, Web на http://localhost:5173.
## Дорожная карта
Подробности — в [docs/ROADMAP.md](docs/ROADMAP.md). Кратко по спринтам:
- **S0** — Инфраструктура VM, Postgres, базовая gbrain установка
- **S1** — Первый рабочий gbrain через `gbrain serve --http`
- **S2** — Каркас brainhub + локальный auth + RBAC
- **S3** — MCP-прокси + токены с scope
- **S4** — CRUD брейнов + источники + sync
- **S5** — Dashboard + Projects + Connect страница
- **S6** — OAuth (Yandex + GitHub) + публичный контур
- **S7** — Audit, 2FA, backup, метрики, hardening
## Безопасность
- Каждый gbrain instance имеет **отдельного Postgres-пользователя** и **отдельную БД**
- MCP-токены имеют **scope** (`mcp:read:<brain>`, `mcp:write:<brain>`, `mcp:admin:<brain>`)
- Все MCP-запросы проходят через **brainhub-proxy**, не напрямую к gbrain
- Все действия пишутся в **audit log**
- Публичный контур принимает **только** `/mcp/*` и `/oauth/*`
Подробности — [docs/SECURITY.md](docs/SECURITY.md).
## Лицензия
Proprietary. © ZETIT, Зуев А.В.
gbrain используется по лицензии MIT, см. [гigit.zetit.ru/zuevav/gbrain-mirror](https://git.zetit.ru/zuevav/gbrain-mirror).