
당신의 개인 정보 에이전트입니다. 여러 데이터 소스에서 세상을 관찰하고 무언가 변경되면 알려줍니다.
당신만의 인텔리전스 터미널. 27개의 소스. 하나의 명령어. 제로 클라우드.
시그널 네트워크에 참여하세요

| 부트 시퀀스 | 세계 지도 |
|---|---|
![]() | ![]() |
라이브 웹사이트: https://www.crucix.live/ 먼저 공개 데모를 체험해보고, 로컬에서 Crucix를 실행하려면 레포지토리를 클론하세요.
Crucix는 위성 화재 감지, 항공편 추적, 방사능 모니터링, 위성 군집 추적, 경제 지표, 실시간 시장 가격, 충돌 데이터, 제재 목록, 소셜 센티먼트를 27개의 오픈소스 인텔리전스 피드에서 15분마다 병렬로 가져와 단일 자체 포함 Jarvis 스타일 대시보드에 렌더링합니다.
LLM에 연결하면 양방향 인텔리전스 어시스턴트가 됩니다. 중요한 변화가 있을 때 텔레그램과 디스코드로 다계층 알림을 푸시하고, 휴대폰에서 /brief 및 /sweep 같은 명령어에 응답하며, 실제 교차 도메인 데이터를 기반으로 실행 가능한 거래 아이디어를 생성합니다. 당신이 잠든 동안 세상을 관찰하는 개인 분석가입니다.
먼저 https://www.crucix.live/에서 라이브 데모를 체험해보고, 전체 로컬 스택을 원할 때 레포지토리를 클론하세요.
클라우드 없음. 원격 측정 없음. 구독 없음. 그저 node server.mjs만 입력하면 실행됩니다.
[!WARNING] Crucix는 공식 토큰, 코인, NFT, 에어드롭, 프리세일 또는 기타 블록체인 기반 자산을 출시하지 않았습니다. 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의 스크립트 실행기를 우회하며, 일부 시스템(특히 Windows PowerShell)에서 오류가 삼켜지는 문제를 해결합니다. 또한 `node diag.mjs`를 실행하여 정확한 문제를 진단할 수 있습니다. Node 버전 확인, 각 모듈 임포트 개별 테스트, 포트 가용성 검증을 수행합니다. 자세한 내용은 [트러블슈팅](#troubleshooting)을 참조하세요.
대시보드는 `http://localhost:3117`에서 자동으로 열리며 즉시 첫 번째 정보 수집을 시작합니다. 이 첫 번째 수집은 27개 소스를 병렬로 쿼리하며 일반적으로 30–60초가 소요됩니다. 수집이 완료되어 첫 데이터 업데이트가 푸시될 때까지 대시보드는 빈 상태로 나타납니다. 그 후에는 SSE(Server-Sent Events)를 통해 15분마다 자동으로 새로고침됩니다. 수동 페이지 새로고침이 필요하지 않습니다.
**요구사항:** 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 at http://localhost:3117. 스윕 데이터는 볼륨 마운트를 통해 ./runs/에 유지됩니다. 상태 확인 엔드포인트가 포함되어 있습니다.
자체 포함된 Jarvis 스타일 HUD:
상단 표시줄의 VISUALS FULL / VISUALS LITE 버튼은 렌더링 동작만 변경합니다. 데이터 소스를 제거하거나 스윕 범위를 줄이지 않습니다.
VISUALS LITE로 전환하면 대시보드:
모바일 전용 동작:
VISUALS LITE가 현재 지구본 모드인 경우 대시보드를 평면 지도 모드로 강제 전환합니다.이 설정은 브라우저 로컬 스토리지에 저장되므로 UI가 마지막 설정을 기억합니다.
서버는 15분마다 스윕 사이클을 실행합니다 (구성 가능). 각 사이클:
Crucix는 대화형 텔레그램 봇 역할도 합니다. 알림 전송 외에도 채팅에서 직접 명령에 응답합니다.
이를 위해서는 .env 파일에 TELEGRAM_BOT_TOKEN과 TELEGRAM_CHAT_ID가 필요합니다. 봇은 5초마다 메시지를 폴링합니다 (TELEGRAM_POLL_INTERVAL로 구성 가능).
Crucix는 또한 슬래시 명령어와 리치 임베드 알림을 갖춘 완전한 기능의 디스코드 봇을 지원합니다. 디스코드 네이티브 형식으로 텔레그램 봇의 기능을 미러링합니다.
| 명령어 | 기능 |
|---|---|
/status | 시스템 상태, 마지막 스윕 시간, 소스 상태, LLM 상태 |
/sweep | 수동 스윕 사이클 실행 |
/brief | 최신 정보의 간결한 텍스트 요약 |
알림은 색상 코드가 적용된 사이드바가 있는 리치 임베드로 전달됩니다. 빨간색은 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 제공자 (선택 사항, AI 강화 아이디어용)
`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 봇 + 알림 (선택 사항)
| 키 | 획득 방법 |
|-----|------------|
| `TELEGRAM_BOT_TOKEN` | Telegram에서 [@BotFather](https://t.me/BotFather)를 통해 생성 |
| `TELEGRAM_CHAT_ID` | [@userinfobot](https://t.me/userinfobot)을 통해 획득 |
| `TELEGRAM_CHANNELS` | *(선택 사항)* 17개의 내장 채널 외에 모니터링할 추가 채널 ID (쉼표로 구분) |
| `TELEGRAM_POLL_INTERVAL` | *(선택 사항)* 봇 명령 폴링 간격 (ms 단위, 기본값: 5000) |
### Discord 봇 + 알림 (선택 사항)
| 키 | 획득 방법 |
|-----|------------|
| `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` | *(선택 사항)* 채널 설정 → 통합 → 웹후크 → 새 웹후크 → 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`
알림은 Telegram과 Discord 모두에서 LLM 유무와 관계없이 작동합니다. 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 | 위성 발사, ISS 추적, 군사 별자리, Starlink/OneWeb 개수 | 없음 |
| 소스 | 추적 대상 | 인증 |
|---|---|---|
| Yahoo Finance | 실시간 가격: SPY, QQQ, BTC, 금, WTI, VIX 외 9개 | 없음 |
모든 설정은 합리적인 기본값과 함께 .env 파일에 있습니다:
델타 엔진 임계값(스윕 간 변경에 대한 시스템 민감도)은 crucix.config.mjs의 delta.thresholds 섹션에서 사용자 정의할 수 있습니다. 기본값은 의미 있는 변동을 포착하면서 노이즈를 걸러내도록 조정되어 있습니다.
npm run dev 실행 시:
| 엔드포인트 | 설명 |
|---|---|
GET / | Jarvis HUD 대시보드 |
GET /api/data | 현재 합성 인텔리전스 데이터(JSON) |
GET /api/health |
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이 이미 사용 중인지 확인하세요:```powershell
netstat -ano | findstr 3117 taskkill /F /PID <the_PID_from_above>
taskkill /F /IM node.exe
### ⚠️ 면책 조항
| ⚠️ 면책 조항 |
|-------------|
| 이 프로젝트는 교육, 윤리적 해킹, 보안 연구 목적으로 코드와 예제를 논의하고 제공합니다. 여기에는 패스워드 크래킹, 네트워크 보안 테스트, 취약점 평가 등과 관련된 기능이 포함됩니다. |
| |
| **이러한 도구와 기법은 책임감 있게, 그리고 승인된 환경에서만 사용해야 합니다.** 예를 들어 본인이 소유하거나 테스트 권한을 명시적으로 허가받은 시스템에서만 사용해야 합니다. 이러한 도구를 무단으로 사용하는 것은 불법이며 현지, 국가 및 국제법을 위반할 수 있습니다. |
| |
| 저자는 이 코드의 오용이나 불법적인 사용으로 인해 발생하는 손해, 법적 문제 또는 결과에 대해 **책임을 지지 않습니다**. |
| |
| 이 내용을 읽었다면 계속하기 전에 저장소 루트에 있는 **DISCLAIMER.md** 파일을 반드시 읽고 동의해야 합니다. |```bash
# macOS / Linux
lsof -ti:3117 | xargs kill
그런 다음 다시 시작해 보세요. .env 파일에서 PORT=3118을 설정하여 포트를 변경할 수도 있습니다.
4. Node.js 버전 확인:```bash node --version
Crucix는 Node.js 22 이상이 필요합니다. 이전 버전을 사용 중이라면 [nodejs.org](https://nodejs.org/)에서 최신 LTS를 다운로드하세요.
### 대시보드가 처음 시작 후 빈 패널을 표시합니다
이는 정상입니다 — 첫 번째 스윕이 27개 소스를 모두 쿼리하는 데 30~60초가 소요됩니다. 스윕이 완료되면 대시보드가 자동으로 채워집니다. 터미널에서 스윕 진행 로그를 확인하세요.
### 일부 소스에서 오류가 표시됩니다
예상된 동작입니다. API 키가 필요한 소스는 키가 설정되지 않은 경우 구조화된 오류를 반환합니다. 나머지 스윕은 정상적으로 계속됩니다. 대시보드의 소스 무결성 섹션(또는 서버 로그)에서 어떤 소스가 실패했고 그 이유를 확인하세요. 추가할 가장 영향력 있는 무료 키 3개는 `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. **Webhook 전용 대체:** 슬래시 명령 없이 알림만 원하면 봇 토큰 대신 `DISCORD_WEBHOOK_URL`을 설정하세요. `discord.js`가 필요하지 않습니다.
---
## 스크린샷
`docs/` 폴더에는 이 README에서 참조하는 대시보드 스크린샷이 포함되어 있습니다:
| 파일 | 설명 |
|------|------|
| `docs/dashboard.png` | 전체 대시보드 — 이 README 상단의 히어로 이미지 |
| `docs/boot.png` | 영화 같은 부트 시퀀스 애니메이션 |
| `docs/map.png` | 마커 유형과 비행 호가 포함된 D3 세계 지도 |
| `docs/globe.png` | 대기광과 마커가 있는 3D WebGL 지구본 보기 |
업데이트하려면: 대시보드를 실행하고 스윕이 완료될 때까지 기다린 다음 브라우저의 DevTools(`F12` → `Ctrl+Shift+P` → "전체 크기 스크린샷 캡처") 또는 [LICEcap](https://www.cockos.com/licecap/) 같은 도구를 사용하여 GIF를 만드세요.
---
## 기여하기
버그를 발견하셨나요? 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 | 사용 가능한 모든 명령 표시 |
/portfolio | 포트폴리오 상태 (Alpaca 연결 시) |
| 소스 | 추적 대상 | 인증 |
|---|
| GDELT | 글로벌 뉴스 이벤트, 갈등 매핑(100개 이상 언어) | 없음 |
| OpenSky | 6개 핫스팟 지역의 실시간 ADS-B 항공편 추적 | 없음 |
| NASA FIRMS | 위성 화재/열 이상 감지(3시간 지연) | 무료 키 |
| Maritime/AIS | 선박 추적, 다크 쉽, 제재 회피 | 무료 키 |
| Safecast | 6개 원자력 시설 인근 시민 과학 방사선 모니터링 | 없음 |
| ACLED | 무장 충돌 이벤트: 전투, 폭발, 시위 | 무료(OAuth2) |
| ReliefWeb | UN 인도주의 위기 추적 | 없음 |
| WHO | 질병 발생 및 건강 비상사태 | 없음 |
| OFAC | 미국 재무부 제재(SDN 목록) | 없음 |
| OpenSanctions | 집계된 글로벌 제재(30개 이상 소스) | 부분 |
| ADS-B Exchange | 군용 포함 필터링되지 않은 항공편 추적 | 유료 |
| 소스 | 추적 대상 | 인증 |
|---|
| FRED | 22개 주요 지표: 수익률 곡선, CPI, VIX, 연방기금, M2 | 무료 키 |
| US Treasury | 국가 부채, 수익률, 재정 데이터 | 없음 |
| BLS | CPI, 실업률, 비농업 고용, PPI | 없음 |
| EIA | WTI/브렌트 원유, 천연가스, 재고 | 무료 키 |
| GSCPI | 뉴욕 연준 글로벌 공급망 압력 지수 | 없음 |
| USAspending | 연방 지출 및 국방 계약 | 없음 |
| UN Comtrade | 주요 강대국 간 전략적 상품 무역 흐름 | 없음 |
| 소스 | 추적 대상 | 인증 |
|---|
| NOAA/NWS | 활성 미국 기상 경보 | 없음 |
| EPA RadNet | 미국 정부 방사선 모니터링 | 없음 |
| USPTO Patents | 7개 전략 기술 분야의 특허 출원 | 없음 |
| Bluesky | 지정학/시장 주제에 대한 소셜 센티먼트 | 없음 |
| 주요 서브레딧에서의 소셜 센티먼트 | OAuth | |
| Telegram | 17개 선별된 OSINT/충돌/금융 채널(웹 스크래핑, 설정을 통해 확장 가능) | 없음 |
| KiwiSDR | 글로벌 HF 라디오 수신기 네트워크(약 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_CHAT_ID | — | 귀하의 텔레그램 채팅 ID |
TELEGRAM_CHANNELS | — | 모니터링할 추가 채널 ID(쉼표로 구분) |
TELEGRAM_POLL_INTERVAL | 5000 | 봇 명령어 폴링 간격(ms) |
DISCORD_BOT_TOKEN | 비활성화됨 | 디스코드 알림 + 슬래시 명령어용 |
DISCORD_CHANNEL_ID | — | 알림용 디스코드 채널 |
DISCORD_GUILD_ID | — | 서버 ID(즉시 슬래시 명령어 등록) |
DISCORD_WEBHOOK_URL | — | 웹훅 URL(알림 전용 대체, 봇 필요 없음) |
| 서버 상태, 가동 시간, 소스 수, LLM 상태 |
GET /events | 라이브 푸시 업데이트용 SSE 스트림 |