
Ваш персональный агент разведки. Наблюдает за миром из нескольких источников данных и уведомляет вас, когда что-то меняется.
Ваш собственный разведывательный терминал. 27 источников. Одна команда. Без облака.
Войдите в Signal Network

| Последовательность загрузки | Карта мира |
|---|---|
![]() | ![]() |
Живой сайт: https://www.crucix.live/ Сначала ознакомьтесь с публичной демонстрацией, затем клонируйте репозиторий для локального запуска Crucix.
Crucix извлекает спутниковое обнаружение пожаров, отслеживание рейсов, радиационный мониторинг, отслеживание спутниковых созвездий, экономические индикаторы, живые рыночные цены, данные о конфликтах, списки санкций и социальные настроения из 27 источников разведывательной информации с открытым исходным кодом — параллельно, каждые 15 минут — и отображает всё на единой автономной панели управления в стиле Jarvis.
Подключите его к LLM, и он станет двунаправленным разведывательным помощником — отправляет многоуровневые оповещения в Telegram и Discord, когда меняется что-то значимое, отвечает на команды вроде /brief и /sweep с вашего телефона и генерирует действенные торговые идеи, основанные на реальных междисциплинарных данных. Ваш собственный аналитик, который наблюдает за миром, пока вы спите.
Сначала попробуйте живую демонстрацию на https://www.crucix.live/, затем клонируйте репозиторий, когда захотите полноценный локальный стек.
Без облака. Без телеметрии. Без подписок. Просто node server.mjs и вы работаете.
[!WARNING] Crucix не запускал никаких официальных токенов, монет, NFT, airdropов, presale или других активов на блокчейне. Любой токен или цифровой актив, использующий имя, логотип или бренд Crucix, не связан с Crucix и не одобрен им. Не покупайте его, не продвигайте, не подключайте кошелек для его получения, не подписывайте транзакции и не отправляйте средства на основе публикаций третьих лиц, личных сообщений или веб-сайтов.
Большая часть разведывательной информации в реальном времени — спутниковые снимки, уровни радиации, события конфликтов, экономические индикаторы, отслеживание рейсов, морская активность — находится в открытом доступе. Но она разбросана по десяткам государственных API, исследовательских институтов и открытых каналов данных, которые никто не успевает проверять по отдельности.
Crucix объединяет всё это в одном месте. Не за платёжным барьером, не заперто в корпоративной платформе, не требует допуска к секретности. Просто открытые данные, агрегированные и взаимно скоррелированные на вашей собственной машине, обновляемые каждые 15 минут.
Он создан для всех, кто хочет понять, что на самом деле происходит в мире прямо сейчас — исследователей, журналистов, трейдеров, OSINT-аналитиков или просто любопытных людей, которые считают, что доступ к информации не должен зависеть от вашего бюджета.
git clone https://github.com/calesthio/Crucix.git cd Crucix
npm install
cp .env.example .env
npm run dev
> **Если `npm run dev` молча завершается с ошибкой** (выходит без вывода), запустите Node напрямую:
> ```bash
> node --trace-warnings server.mjs
> ```
> Это обходит менеджер скриптов npm, который может скрывать ошибки в некоторых системах (особенно в PowerShell на Windows). Вы также можете запустить `node diag.mjs`, чтобы диагностировать точную проблему — он проверяет версию Node, тестирует каждый импорт модуля по отдельности и проверяет доступность порта. См. [Устранение неполадок](#troubleshooting) для получения дополнительной информации.
Панель управления открывается автоматически по адресу `http://localhost:3117` и сразу начинает первый сбор разведывательных данных. Этот начальный сбор опрашивает все 27 источников параллельно и обычно занимает 30–60 секунд — панель управления будет выглядеть пустой, пока сбор не завершится и не отправит первое обновление данных. После этого она автоматически обновляется каждые 15 минут через SSE (Server-Sent Events). Ручное обновление страницы не требуется.
**Требования:** Node.js 22+ (использует встроенный `fetch`, `await` верхнего уровня, ESM)
### Docker```bash
git clone https://github.com/calesthio/Crucix.git
cd Crucix
cp .env.example .env # add your API keys
docker compose up -d
Dashboard по адресу http://localhost:3117. Данные обхода сохраняются в ./runs/ через монтирование тома. Включает эндпоинт проверки работоспособности.
Автономный HUD в стиле Jarvis с:
Кнопка VISUALS FULL / VISUALS LITE в верхней панели меняет только поведение рендеринга — она не удаляет источники данных и не сокращает охват обхода.
Когда вы переключаетесь на VISUALS LITE, панель управления:
Поведение на мобильных устройствах:
VISUALS LITE также переключает панель управления в режим плоской карты, если вы находитесь на глобусеНастройка сохраняется в локальном хранилище браузера, поэтому интерфейс запомнит вашу последнюю настройку.
Сервер выполняет цикл обхода каждые 15 минут (настраивается). Каждый цикл:
Crucix также является интерактивным Telegram-ботом. Помимо отправки оповещений, он отвечает на команды прямо из вашего чата:
Для этого требуются TELEGRAM_BOT_TOKEN и TELEGRAM_CHAT_ID в .env. Бот опрашивает сообщения каждые 5 секунд (настраивается через TELEGRAM_POLL_INTERVAL).
Crucix также поддерживает Discord в качестве полнофункционального бота с слеш-командами и богатыми встроенными оповещениями. Он повторяет возможности Telegram-бота, используя форматирование Discord.
| Команда | Что делает |
|---|---|
/status | Состояние системы, время последнего обхода, статус источников, статус LLM |
Оповещения доставляются в виде богатых встроенных сообщений с цветными боковыми панелями: красный для FLASH, желтый для PRIORITY, синий для ROUTINE. Каждое встроенное сообщение включает детали сигнала, оценки уверенности и кросс-доменные корреляции.
Настройка требует: DISCORD_BOT_TOKEN, DISCORD_CHANNEL_ID и опционально DISCORD_GUILD_ID для мгновенной регистрации слеш-команд. См. Настройка API-ключей для подробностей.
Резервный вебхук: Если вы не хотите запускать полноценного бота, установите DISCORD_WEBHOOK_URL вместо этого. Это включает односторонние оповещения (без слеш-команд) с нулевыми зависимостями — не требуется discord.js.
Опциональная зависимость: Полноценный бот требует discord.js. Установите его с помощью npm install discord.js. Если он не установлен, Crucix автоматически переключается в режим только вебхука.
Подключите любого из 8 провайдеров LLM для расширенного анализа:
Скопируйте .env.example в .env в корне проекта:```bash
cp .env.example .env
### Необходимо для наилучших результатов (все бесплатно)
| Ключ | Источник | Как получить |
|------|----------|-------------|
| `FRED_API_KEY` | Экономические данные Федеральной резервной системы | [fred.stlouisfed.org](https://fred.stlouisfed.org/docs/api/api_key.html) — мгновенно, бесплатно |
| `FIRMS_MAP_KEY` | NASA FIRMS (спутниковые данные о пожарах) | [firms.modaps.eosdis.nasa.gov](https://firms.modaps.eosdis.nasa.gov/api/area/) — мгновенно, бесплатно |
| `EIA_API_KEY` | Управление энергетической информации США | [api.eia.gov](https://www.eia.gov/opendata/register.php) — мгновенно, бесплатно |
Эти три ключа открывают доступ к наиболее ценной экономической и спутниковой информации. Регистрация каждого занимает около 60 секунд.
### Опционально (включает дополнительные источники)
| Ключ | Источник | Как получить |
|------|----------|-------------|
| `ACLED_EMAIL` + `ACLED_PASSWORD` | Данные о вооружённых конфликтах | [acleddata.com/register](https://acleddata.com/register/) — бесплатно, OAuth2 |
| `AISSTREAM_API_KEY` | Морское судоходство AIS | [aisstream.io](https://aisstream.io/) — бесплатно |
| `ADSB_API_KEY` | Нефильтрованное отслеживание полётов | [RapidAPI](https://rapidapi.com/adsbexchange/api/adsbexchange-com1) — ~$10/мес |
### LLM-провайдер (опционально, для ИИ-улучшенных идей)
Укажите `LLM_PROVIDER` как один из: `anthropic`, `openai`, `gemini`, `codex`, `openrouter`, `minimax`, `mistral`, `grok`
| Провайдер | Требуется ключ | Модель по умолчанию |
|-----------|----------------|---------------------|
| `anthropic` | `LLM_API_KEY` | claude-sonnet-4-6 |
| `openai` | `LLM_API_KEY` | gpt-5.4 |
| `gemini` | `LLM_API_KEY` | gemini-3.1-pro |
| `openrouter` | `LLM_API_KEY` | openrouter/auto |
| `codex` | Нет (использует `~/.codex/auth.json`) | gpt-5.3-codex |
| `minimax` | `LLM_API_KEY` | MiniMax-M2.5 |
| `mistral` | `LLM_API_KEY` | mistral-large-latest |
| `grok` | `LLM_API_KEY` | grok-4-latest |
Для Codex выполните `npx @openai/codex login`, чтобы пройти аутентификацию через вашу подписку ChatGPT.
### Telegram Bot + Оповещения (опционально)
| Ключ | Как получить |
|------|--------------|
| `TELEGRAM_BOT_TOKEN` | Создайте через [@BotFather](https://t.me/BotFather) в Telegram |
| `TELEGRAM_CHAT_ID` | Получите через [@userinfobot](https://t.me/userinfobot) |
| `TELEGRAM_CHANNELS` | *(Опционально)* Дополнительные ID каналов (через запятую) для мониторинга, помимо 17 встроенных каналов |
| `TELEGRAM_POLL_INTERVAL` | *(Опционально)* Интервал опроса команд бота в мс (по умолчанию: 5000) |
### Discord Bot + Оповещения (опционально)
| Ключ | Как получить |
|------|--------------|
| `DISCORD_BOT_TOKEN` | Создайте на [Discord Developer Portal](https://discord.com/developers/applications) → Bot → Token |
| `DISCORD_CHANNEL_ID` | Правый клик по каналу в Discord (включён режим разработчика) → Копировать ID канала |
| `DISCORD_GUILD_ID` | *(Опционально)* Правый клик по серверу → Копировать ID сервера. Включает мгновенную регистрацию слеш-команд (иначе требуется до 1 часа для глобальных команд) |
| `DISCORD_WEBHOOK_URL` | *(Опционально)* Настройки канала → Интеграции → Webhooks → Новый Webhook → Копировать URL. Используйте это для режима только оповещений без бота |
**Настройка Discord бота:**
1. Перейдите на [Discord Developer Portal](https://discord.com/developers/applications) и создайте новое приложение
2. Перейдите в **Bot** → нажмите **Reset Token** → скопируйте токен в `DISCORD_BOT_TOKEN`
3. В разделе **Privileged Gateway Intents** включите **Message Content Intent**
4. Перейдите в **OAuth2** → **URL Generator** → выберите области `bot` + `applications.commands` → выберите разрешения `Send Messages` + `Embed Links`
5. Скопируйте сгенерированный URL и откройте его в браузере, чтобы пригласить бота на ваш сервер
6. Установите зависимость: `npm install discord.js`
Оповещения работают как с LLM, так и без него на Telegram и Discord. С настроенным LLM оценка сигнала становится более насыщенной и контекстно-зависимой. Без LLM детерминированный механизм правил оценивает сигналы на основе критичности, междоменной корреляции и количества сигналов.
### Без каких-либо ключей
Crucix всё ещё работает без API-ключей. 18+ источников вообще не требуют аутентификации. Источники, требующие ключи, возвращают структурированные ошибки, а остальной обход продолжается в обычном режиме.
---
## Архитектура```
crucix/
├── server.mjs # Express dev server (SSE, auto-refresh, LLM, bot commands)
├── crucix.config.mjs # Configuration with env var overrides + delta thresholds
├── diag.mjs # Diagnostic script — run if server fails to start
├── .env.example # All documented env vars
├── package.json # Runtime: express | Optional: discord.js
├── docs/ # Screenshots for README
│
├── apis/
│ ├── briefing.mjs # Master orchestrator — runs all 27 sources in parallel
│ ├── save-briefing.mjs # CLI: save timestamped + latest.json
│ ├── BRIEFING_PROMPT.md # Intelligence synthesis protocol
│ ├── BRIEFING_TEMPLATE.md # Briefing output structure
│ ├── utils/
│ │ ├── fetch.mjs # safeFetch() — timeout, retries, abort, auto-JSON
│ │ └── env.mjs # .env loader (no dotenv dependency)
│ └── sources/ # 27 self-contained source modules
│ ├── gdelt.mjs # Each exports briefing() → structured data
│ ├── fred.mjs # Can run standalone: node apis/sources/fred.mjs
│ ├── space.mjs # CelesTrak satellite tracking
│ ├── yfinance.mjs # Yahoo Finance — free live market data
│ └── ... # 23 more
│
├── dashboard/
│ ├── inject.mjs # Data synthesis + standalone HTML injection
│ └── public/
│ └── jarvis.html # Self-contained Jarvis HUD
│
├── lib/
│ ├── llm/ # LLM abstraction (8 providers, raw fetch, no SDKs)
│ │ ├── provider.mjs # Base class
│ │ ├── anthropic.mjs # Claude
│ │ ├── openai.mjs # GPT
│ │ ├── gemini.mjs # Gemini
│ │ ├── grok.mjs # Grok
│ │ ├── openrouter.mjs # OpenRouter (Unified API)
│ │ ├── codex.mjs # Codex (ChatGPT subscription)
│ │ ├── minimax.mjs # MiniMax (M2.5, 204K context)
│ │ ├── mistral.mjs # Mistral AI
│ │ ├── ideas.mjs # LLM-powered trade idea generation
│ │ └── index.mjs # Factory: createLLMProvider()
│ ├── delta/ # Change tracking between sweeps
│ │ ├── engine.mjs # Delta computation — semantic dedup, configurable thresholds, severity scoring
│ │ ├── memory.mjs # Hot memory (3 runs, atomic writes) + cold storage (daily archives)
│ │ └── index.mjs # Re-exports
│ └── alerts/
│ ├── telegram.mjs # Multi-tier alerts (FLASH/PRIORITY/ROUTINE) + two-way bot commands
│ └── discord.mjs # Discord bot (slash commands, rich embeds) + webhook fallback
│
└── runs/ # Runtime data (gitignored)
├── latest.json # Most recent sweep output
└── memory/ # Delta memory (hot.json + cold/YYYY-MM-DD.json)
.mjs с явными импортамиdiscord.js опциональна (для Discord-бота). Поставщики LLM используют сырой fetch(), без SDK.Promise.allSettled() запускает все 27 источников одновременноnode apis/sources/gdelt.mjs для тестирования любого источника отдельно| Источник | Что отслеживает | Аутентификация |
|---|---|---|
| CelesTrak | Запуски спутников, отслеживание МКС, военные группировки, количество Starlink/OneWeb | Нет |
| Источник | Что отслеживает | Аутентификация |
|---|---|---|
| Yahoo Finance | Цены в реальном времени: SPY, QQQ, BTC, Gold, WTI, VIX + ещё 9 | Нет |
Все настройки находятся в .env с разумными значениями по умолчанию:
Пороги дельта-движка (насколько система чувствительна к изменениям между циклами сбора) можно настроить в crucix.config.mjs в разделе delta.thresholds. Значения по умолчанию настроены на фильтрацию шума при захвате значимых изменений.
При запуске npm run dev:
| Эндпоинт | Описание |
|---|---|
GET / | Панель управления Jarvis HUD |
GET /api/data |
npm run dev завершается без вывода (ни вывода, ни ошибки)Это известная проблема, когда программа запуска скриптов npm может проглатывать ошибки, особенно в Windows PowerShell. Попробуйте следующее по порядку:
1. Запустите Node напрямую (в обход npm):```bash node --trace-warnings server.mjs
Это функционально идентично `npm run dev`, но предоставляет полный вывод ошибок.
**2. Запустите диагностический сценарий:**```bash
node diag.mjs
Это проверяет каждый импорт по отдельности, проверяет вашу версию Node.js и проверяет доступность порта 3117. Он скажет вам, что именно не работает.
3. Проверьте, не занят ли порт 3117:
Предыдущий экземпляр Crucix всё ещё может работать в фоновом режиме.```powershell
netstat -ano | findstr 3117 taskkill /F /PID <the_PID_from_above>
taskkill /F /IM node.exe
Главный эксперт по телекоммуникациям в Ruselectronics (Государственная корпорация «Ростех»), дальновидный лидер в области сетевой безопасности, доцент с более чем 50 научными работами. Пионер создания устойчивой критической инфраструктуры...```bash
# macOS / Linux
lsof -ti:3117 | xargs kill
Затем попробуйте запустить снова. Вы также можете изменить порт, установив PORT=3118 в вашем файле .env.
4. Проверьте версию Node.js:```bash node --version
Crucix требует Node.js 22 или новее. Если у вас более старая версия, загрузите последнюю LTS с [nodejs.org](https://nodejs.org/).
### Панель управления отображает пустые панели после первого запуска
Это нормально — первый сбор данных занимает 30–60 секунд, чтобы опросить все 27 источников. Панель управления заполнится автоматически, как только сбор завершится. Смотрите в терминале логи прогресса сбора.
### Некоторые источники показывают ошибки
Ожидаемое поведение. Источники, требующие API-ключи, вернут структурированные ошибки, если ключ не задан. Остальная часть сбора продолжается нормально. Проверьте раздел «Целостность источников» на панели управления (или логи сервера), чтобы увидеть, какие источники не удалось опросить и почему. Три наиболее полезных бесплатных ключа, которые стоит добавить: `FRED_API_KEY`, `FIRMS_MAP_KEY` и `EIA_API_KEY`.
OpenSky также может возвращать `HTTP 429`, когда его публичные «горячие точки» опрашиваются слишком агрессивно. Crucix не пытается обойти это ограничение. Вместо этого он отображает ошибку/ограничение в состоянии источника и сохраняет последний непустой снимок воздушного трафика из `runs/`, чтобы слой полётов на панели управления не становился пустым при ограниченном сборе.
### Telegram-бот не отвечает на команды
Убедитесь, что в `.env` заданы как `TELEGRAM_BOT_TOKEN`, так и `TELEGRAM_CHAT_ID`. Бот отвечает только на сообщения от настроенного ID чата (мера безопасности). При запуске в логах сервера должно появиться `[Crucix] Telegram alerts enabled` и `[Crucix] Bot command polling started`. Если нет, проверьте токен с помощью `curl https://api.telegram.org/bot<YOUR_TOKEN>/getMe`.
### Discord-бот не отвечает на слеш-команды
Проверьте по порядку:
1. Убедитесь, что в `.env` заданы `DISCORD_BOT_TOKEN` и `DISCORD_CHANNEL_ID`
2. Проверьте, установлен ли `discord.js`: `npm ls discord.js`. Если отсутствует, выполните `npm install discord.js`
3. Если слеш-команды не отображаются, задайте `DISCORD_GUILD_ID` — без него глобальные команды могут распространяться до 1 часа. Команды для конкретного сервера регистрируются мгновенно
4. Убедитесь, что бот был приглашён с областями `bot` + `applications.commands` и имеет права `Send Messages` + `Embed Links` в целевом канале
5. Проверьте логи сервера на наличие `[Discord] Bot logged in as ...` при запуске. Если видите `[Discord] discord.js not installed`, установите его и перезапустите
6. **Запасной вариант через вебхук:** Если вам нужны только оповещения без слеш-команд, задайте `DISCORD_WEBHOOK_URL` вместо токена бота. Устанавливать `discord.js` не требуется.
---
## Скриншоты
Папка `docs/` содержит скриншоты панели управления, на которые есть ссылки в этом README:
| Файл | Описание |
|------|----------|
| `docs/dashboard.png` | Полная панель управления — главное изображение вверху этого README |
| `docs/boot.png` | Анимация кинематографической загрузки |
| `docs/map.png` | Карта мира на D3 с типами маркеров и дугами полётов |
| `docs/globe.png` | 3D-глобус WebGL с атмосферным свечением и маркерами |
Чтобы обновить их: запустите панель, дождитесь завершения сбора данных, затем используйте инструменты разработчика браузера (`F12` → `Ctrl+Shift+P` → «Capture full size screenshot») или утилиту вроде [LICEcap](https://www.cockos.com/licecap/) для GIF.
---
## Разработка (Contributing)
Нашли ошибку? Хотите добавить 28-й источник? PR приветствуются. Каждый источник — это отдельный модуль в `apis/sources/` — просто экспортируйте функцию `briefing()`, возвращающую структурированные данные, и добавьте её в оркестратор в `apis/briefing.mjs`.
Если этот проект оказался для вас полезным, поставьте звёздочку — это поможет другим его найти.
За рекомендациями по вкладу, критериями ревью и правилами добавления источников обращайтесь к `CONTRIBUTING.md`. По вопросам безопасности — к `SECURITY.md`.
## Контакты
По вопросам партнёрства, интеграции или другим не связанным с багами запросам пишите на `[email protected]`.
Для сообщений об ошибках и запросов функций, пожалуйста, используйте GitHub Issues, чтобы обсуждение оставалось на виду и было действенным.
---
## История звёзд
<a href="https://www.star-history.com/?repos=calesthio%2FCrucix&type=date&legend=top-left">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/image?repos=calesthio/Crucix&type=date&theme=dark&legend=top-left" />
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/image?repos=calesthio/Crucix&type=date&legend=top-left" />
<img alt="График истории звёзд" src="https://assets.kitploit.com/production/public/readmes/placeholders/f0fc86cfe65f76d40e15aaec61704ec8220a56dc89d4be03c46f67cb31b9fa8c.svg" />
</picture>
</a>
---
## Лицензия
AGPL-3.0
| 3D вид глобуса |
|---|
![]() |
| Команда | Что делает |
|---|
/status | Состояние системы, время последнего обхода, статус источников, статус LLM |
/sweep | Запустить ручной цикл обхода |
/brief | Компактное текстовое резюме последней разведки (направление, ключевые метрики, топ OSINT) |
/portfolio | Состояние портфеля (если подключен Alpaca) |
/alerts | Недавняя история оповещений с уровнями |
/mute / /mute 2h | Отключить оповещения на 1 час (или на заданный период) |
/unmute | Возобновить оповещения |
/help | Показать все доступные команды |
/sweep| Запустить ручной цикл обхода |
/brief | Компактное текстовое резюме последней разведки |
/portfolio | Состояние портфеля (если подключен Alpaca) |
| Источник | Что отслеживает | Аутентификация |
|---|
| GDELT | Глобальные новостные события, картографирование конфликтов (100+ языков) | Нет |
| OpenSky | Отслеживание ADS-B-полётов в реальном времени в 6 горячих точках | Нет |
| NASA FIRMS | Обнаружение пожаров и тепловых аномалий со спутников (задержка 3 часа) | Бесплатный ключ |
| Maritime/AIS | Отслеживание судов, «тёмные» корабли, обход санкций | Бесплатный ключ |
| Safecast | Гражданский мониторинг радиации у 6 ядерных объектов | Нет |
| ACLED | События вооружённых конфликтов: бои, взрывы, протесты | Бесплатно (OAuth2) |
| ReliefWeb | Отслеживание гуманитарных кризисов ООН | Нет |
| WHO | Вспышки заболеваний и чрезвычайные ситуации в области здравоохранения | Нет |
| OFAC | Санкции Министерства финансов США (список SDN) | Нет |
| OpenSanctions | Агрегированные глобальные санкции (30+ источников) | Частично |
| ADS-B Exchange | Нефильтрованное отслеживание полётов, включая военные | Платный |
| Источник | Что отслеживает | Аутентификация |
|---|
| FRED | 22 ключевых индикатора: кривая доходности, CPI, VIX, ставка по федеральным фондам, M2 | Бесплатный ключ |
| US Treasury | Государственный долг, доходность, фискальные данные | Нет |
| BLS | CPI, безработица, занятость в несельскохозяйственном секторе, PPI | Нет |
| EIA | Нефть WTI/Brent, природный газ, запасы | Бесплатный ключ |
| GSCPI | Индекс глобального давления в цепочках поставок ФРБ Нью-Йорка | Нет |
| USAspending | Федеральные расходы и оборонные контракты | Нет |
| UN Comtrade | Торговые потоки стратегических товаров между крупными державами | Нет |
| Источник | Что отслеживает | Аутентификация |
|---|
| NOAA/NWS | Активные погодные предупреждения США | Нет |
| EPA RadNet | Мониторинг радиации правительства США | Нет |
| USPTO Patents | Патентные заявки в 7 стратегических технологических областях | Нет |
| Bluesky | Социальные настроения по геополитическим/рыночным темам | Нет |
| Социальные настроения из ключевых сабреддитов | OAuth | |
| Telegram | 17 курируемых OSINT/конфликтных/финансовых каналов (веб-скрейпинг, расширяется через конфигурацию) | Нет |
| KiwiSDR | Глобальная сеть КВ-радиоприёмников (~600 приёмников) | Нет |
| Скрипт | Команда | Описание |
|---|
npm run dev | node --trace-warnings server.mjs | Запуск панели управления с автообновлением |
npm run sweep | node apis/briefing.mjs | Выполнить один цикл сбора, вывести JSON в stdout |
npm run inject | node dashboard/inject.mjs | Вставить последние данные в статический HTML |
npm run brief:save | node apis/save-briefing.mjs | Выполнить сбор + сохранить JSON с меткой времени |
npm run diag | node diag.mjs | Запустить диагностику (версия Node, импорты, проверка порта) |
| Переменная | По умолчанию | Описание |
|---|
PORT | 3117 | Порт сервера панели управления |
REFRESH_INTERVAL_MINUTES | 15 | Интервал автообновления |
LLM_PROVIDER | отключен | anthropic, openai, gemini, codex, openrouter, minimax, mistral или grok |
LLM_API_KEY | — | Ключ API (не требуется для codex) |
LLM_MODEL | по умолчанию для провайдера | Переопределение выбора модели |
TELEGRAM_BOT_TOKEN | отключен | Для оповещений Telegram + команд бота |
TELEGRAM_CHAT_ID | — | Ваш Telegram chat ID |
TELEGRAM_CHANNELS | — | Дополнительные ID каналов для мониторинга (через запятую) |
TELEGRAM_POLL_INTERVAL | 5000 | Интервал опроса команд бота (мс) |
DISCORD_BOT_TOKEN | отключен | Для оповещений Discord + slash-команд |
DISCORD_CHANNEL_ID | — | Канал Discord для оповещений |
DISCORD_GUILD_ID | — | ID сервера (мгновенная регистрация slash-команд) |
DISCORD_WEBHOOK_URL | — | URL вебхука (резервный вариант только для оповещений, бот не требуется) |
| Текущие синтезированные аналитические данные (JSON) |
GET /api/health | Статус сервера, время работы, количество источников, статус LLM |
GET /events | SSE-поток для обновлений в реальном времени |