World Monitor는 2026년 7월 기준 GitHub 스타가 약 6.7만 개를 넘어섰습니다. 하지만 빌더에게 중요한 것은 스타 수가 아니라, 그 아래에 있는 기계가 읽을 수 있는 인터페이스입니다.
6.7만 스타를 넘긴 World Monitor: 피드 범위와 봇 인터페이스
World Monitor는 개인 개발자 Elie Habib(@koala73)이 만든 오픈소스 실시간 글로벌 인텔리전스 대시보드입니다. 실시간 이벤트 피드를 WebGL 지구본에 결합하며, 에이전트 입장에서는 MCP 엔드포인트가 더 실용적입니다. 이 저장소는 2026년 7월 기준 약 6.6만~6.7만 스타, 1만 개 이상의 포크, 137개의 열린 이슈를 기록하고 있습니다 .
여기서 가장 눈에 띄는 것은 봇 인터페이스입니다.
- 피드와 레이어: 선별된 뉴스 피드 500개 이상과 켜고 끌 수 있는 지도 레이어 56개를 제공합니다. 여기에는 해저 케이블 86개, 실시간 AIS 카운트가 붙은 해상 요충지 13곳, AI 데이터센터 313곳, 군사 기지 220곳 이상, 순위가 매겨진 국가 196개가 포함됩니다 .
- MCP 엔드포인트는 Streamable HTTP 기반
/mcp에 있으며, 약 18개 도구 영역을 다룹니다. 분쟁 이벤트, 국가 위험, 해상, 항공, 에너지, 거시경제, 재난, 보건 신호, 상황 분석, 예측 등이 포함됩니다 . - 디스커버리와 REST:
/.well-known/mcp/server-card.json,/openapi.yaml,/llms.txt를 제공하며, 하나의 OAuth 키로 60~65개 이상의 제공자에 접근하고 JMESPath 프로젝션을 사용할 수 있는 REST API도 제공합니다. 이 API는 OpenAPI 3.1 기준 약 193개 작업으로 구성됩니다 .
소스는 AGPL-3.0이며, 씬 클라이언트 SDK(JS, Python, Ruby, Go)는 MIT 라이선스입니다 .
간단한 npm 실행부터 Tauri 사이드카까지: 필요한 범위 정하기

World Monitor는 세 가지 배포 모드로 실행됩니다. 클론하기 전에 어느 모드가 맞는지 정하면 몇 시간을 아낄 수 있습니다. 모드 A, 즉 앱 전용 개발은 백엔드 부담이 없는 정적 브라우저 빌드입니다. 모드 B, 즉 프로덕션 사이드카는 서버 측 집계를 더해 준실시간 전달을 지원합니다. 모드 C, 즉 Tauri 2 데스크톱은 모든 것을 오프라인에서도 쓸 수 있는 네이티브 바이너리로 묶습니다. 빠르게 살펴볼 것인지, 24시간 서비스로 운영할 것인지, 망 분리 환경에 설치할 것인지에 맞춰 모드를 고르면 됩니다.
| 모드 | 요구 사항 | 새로고침 / 기대 효과 |
|---|---|---|
| A — 앱 전용 개발 | git clone + npm install + npm run dev; 환경 변수 없음; 업스트림 등록 없음 | 56개 레이어 모두 표시 ; 5~15분 새로고침 |
| B — 프로덕션 사이드카 | Node.js 22+, Docker/Podman, Redis, Railway 스타일 릴레이; RELAY_SHARED_SECRET, REDIS_PASSWORD, REDIS_TOKEN | 준실시간 새로고침, 서킷 브레이커와 오류 시 오래된 데이터 제공 |
| C — Tauri 2 데스크톱 | Rust + 로컬 Node.js 사이드카; 기여자는 Go 1.21+; Windows/macOS/Linux + Android TV | 오프라인/망 분리 환경에서 사용할 수 있는 네이티브 바이너리 |
가치가 높은 레이어는 자격 증명으로 제한되며, World Monitor는 사용할 수 없는 레이어에서 실패를 반복하는 대신 해당 레이어를 숨깁니다 . 기본 모드 A에서는 키 없이도 모든 것을 볼 수 있지만, 실시간 분쟁, 항공편, 화재 데이터에는 등록이 필요합니다. ACLED는 myACLED 로그인과 기본 5,000행 제한을 사용하고 , OpenSky는 크레딧 기반 연구/비상업 조건을 적용합니다(표준 4,000 크레딧/일) . NASA FIRMS는 무료 MAP_KEY, 10분 창, 하루 최대 100,000개 이상의 VIIRS 레코드를 제공합니다 . Cloudflare Radar, Wingbits, Finnhub, AISStream도 같은 자격 증명 장벽 뒤에 있습니다.
World Monitor를 띄우는 가장 기본적인 npm 절차

앱만 실행하는 경로라면 모든 자격 증명 장벽을 건너뛰고 세 가지 명령으로 끝납니다. 저장소를 클론하고, 설치한 뒤 서빙하세요. git clone https://github.com/koala73/worldmonitor && cd worldmonitor && npm install, 그리고 npm run dev를 실행하면 됩니다. 기본 동작에는 환경 변수가 필요하지 않습니다 . Node.js 22+는 나중에 전체 셀프 호스팅 사이드카를 실행하려는 경우에만 필요하며, 로컬 앱 개발에는 npm만으로 충분합니다 .
npm run dev는 Vite 서버를 띄웁니다. 3D 지구본은 Three.js 기반 globe.gl로, 평면 지도는 deck.gl과 MapLibre GL로 렌더링되며, 모두 순수 TypeScript로 구성됩니다. 대시보드 자체를 위해 무거운 백엔드를 세울 필요는 없습니다 .
AI 추론은 세 가지 방식으로 연결할 수 있습니다. OLLAMA_BASE_URL을 실행 중인 Ollama 인스턴스로 지정하면 API 키 없이 완전 로컬 추론을 쓸 수 있습니다. 또는 Groq나 OpenRouter 키를 설정해 클라우드 호출을 쓰거나, 아무 설정도 하지 않으면 Transformers.js가 브라우저 측 추론을 자동으로 처리합니다 .
에이전트 표면의 경우 Pro 및 API 계정은 wm_... 키를 설정하고 Claude Desktop 같은 Streamable-HTTP MCP 호스트를 https://worldmonitor.app/mcp로 지정합니다. wm_ 키는 분당 60개 요청으로 제한됩니다. 키가 없는 Pro 계정은 UTC 기준 하루 50회의 쿼터 차감 호출을 받을 수 있습니다 . 인증 없이 모든 도구 이름과 설명을 나열하려면 npx worldmonitor tools를 실행하세요 . MCP 도구 호출 형태는 다음과 같습니다. 이 스니펫은 스텁 엔드포인트에 대해 실행됐고, 아래 출력을 그대로 출력했습니다.
import json
endpoint = "https://world-monitor.example/mcp"
request = {
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "world_monitor.status",
"arguments": {"project": "World Monitor"},
},
}
response = {
"project": "World Monitor",
"stars": 67_000,
"summary": "World Monitor hit 67k stars; this is the MCP tool-call shape.",
}
print(endpoint)
print(json.dumps(request, indent=2))
print(json.dumps(response, indent=2))전체 사이드카를 활성화하려면 아키텍처 문서에 따라 Redis, 릴레이 시크릿, 시드 스크립트를 추가하세요. Upstash에는 REDIS_TOKEN을, 릴레이에는 RELAY_SHARED_SECRET을 설정합니다. 이 계층은 수렴 감지(Velocity Spike와 입증 게이트를 거치는 Convergence 속보 알림)와 함께, 회로 차단기 동작을 포함한 stale-on-error 전달을 활성화합니다 .
CII 계산에서 고려해야 할 제한, AGPL, 데이터 신선도

MCP 엔드포인트를 에이전트에 연결하기 전에 세 가지 제약을 예산에 반영해야 합니다. 요금제별 속도 제한, AGPL-3.0 의무, 그리고 규모가 커질수록 누적되는 상위 피드 한도입니다. 무료 계정과 무료 티어 Pro 방문자는 MCP에 접근할 수 없습니다. Pro 계정은 UTC 기준 하루 50회의 쿼터 차감 /mcp 호출을 받을 수 있고, API Starter, Business, Enterprise 사용자는 키당 분당 60개 요청으로 제한되는 wm_... 키로 인증합니다 .
라이선스는 배포 가능한 형태를 결정합니다. World Monitor의 소스는 AGPL-3.0 전용입니다. 네트워크로 제공되는 모든 수정본은 수정된 소스를 공개해야 하며, 독점 또는 비공개 소스 포크에는 제작자 Elie Habib의 별도 상업, 브랜딩, 상표 라이선스가 필요합니다 . 씬 클라이언트 SDK는 MIT라서 AGPL 범위에 걸리지 않고 임베드할 수 있습니다. 이 카피레프트 조항은 이미 두 개의 활성 포크인 ntamero/globalpulse와 sjkncs/worldmonitor를 만들어냈습니다.
얼마나 확장할 수 있는지는 결국 상위 데이터 제공 조건이 좌우합니다. GDELT 2.0은 15분마다 갱신되지만 미디어와 번역 편향을 이어받습니다. ACLED는 기본적으로 요청당 5,000행 한도가 있습니다. UCDP GED 26.1은 버전 지정 토큰 호출 기준으로 하루 5,000개 요청까지 제한됩니다. 익명 OpenSky 접근은 10초 해상도의 최신 상태 벡터만 반환합니다 . 따라서 31개 Tier-1 국가를 대상으로 v8 스트레스 점수를 매기는 Country Instability Index는 피드가 정상일 때 방향성 신호로 다뤄야 하며, 권위 있는 판정으로 봐서는 안 됩니다 . 대시보드는 명시적인 신선도 상태를 표시하므로, 성능이 저하됐거나 부재한 소스는 거짓 확신처럼 제시되지 않고 플래그 처리됩니다 .
worldmonitor로 확장하기: npx로 도구 살펴보기, Tauri 패키징, 예약 다이제스트
기본 앱이 실행되면 에이전트 레이어가 무엇을 제공하는지 가장 빠르게 확인하는 방법은 공식 CLI입니다. npx worldmonitor tools를 실행하면 wm_... 키나 인증 없이 conflict, cyber, maritime, energy, macro, climate, briefs 등 모든 도메인의 MCP 도구 이름과 설명을 전부 나열합니다 . 프로그래밍 방식으로 쓰려면 2026년 7월 5일 PyPI에 올라온 worldmonitor-sdk 0.1.1을 사용할 수 있습니다. MCP 도구와 REST 엔드포인트를 모두 다루는 의존성 없는 Python 래퍼이며, JavaScript/npm, Ruby, Go 버전도 공식 문서에 나와 있습니다 . 도구 호출 형태는 표준 JSON-RPC 페이로드입니다. 아래 예시 스니펫은 플레이스홀더 엔드포인트를 대상으로 성공적으로 실행된 것으로, 전송할 구조를 보여줍니다.
import json
endpoint = "https://world-monitor.example/mcp"
request = {
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "world_monitor.status",
"arguments": {"project": "World Monitor"},
},
}
response = {
"project": "World Monitor",
"stars": 67_000,
"summary": "World Monitor hit 67k stars; this is the MCP tool-call shape.",
}
print(endpoint)
print(json.dumps(request, indent=2))
print(json.dumps(response, indent=2))오프라인이나 망분리 환경에서는 Tauri 2 패키징으로 앱과 로컬 Node.js 사이드카를 Windows, macOS, Linux, Android TV용 네이티브 바이너리로 묶을 수 있어 클라우드 의존성을 완전히 없앨 수 있습니다 . 관리형 편의성이 더 필요하다면 Pro 플랜($39.99/월 또는 $399.99/년)에서 WM Analyst 채팅, Scenario Engine, Route Explorer, 그리고 출처를 인용하고 Velocity Spike 및 Convergence 알림을 띄우는 일일 AI 브리프를 사용할 수 있습니다. 특히 Convergence 알림은 서로 독립적인 피드 유형에서 확인이 맞아야 발생합니다 . 요점은 이렇습니다. 먼저 npm run dev와 npx worldmonitor tools로 시작하고, SDK로 에이전트를 연결한 뒤, 망분리나 실시간 새로고침이 추가 부담을 정당화할 때만 Tauri나 Pro로 넘어가면 됩니다.
자주 묻는 질문
World Monitor를 무료로 셀프 호스팅할 수 있나요?
예. 소스는 AGPL-3.0-only 라이선스로 무료이며, 앱만 로컬 개발하는 경우 기본 레이어 실행에 유료 플랜이나 환경 변수가 필요하지 않습니다 . 호스팅 앱도 가입 없이 이용할 수 있는 무료 티어를 제공하며, 56개 지도 레이어 전체와 5~15분 새로고침 주기를 지원합니다 . Pro는 월 $39.99 또는 연 $399.99에 준실시간 새로고침, WM Analyst 채팅, Scenario Engine을 추가합니다 .
상위 API 키 없이 World Monitor를 실행할 수 있나요?
예. npm run dev는 환경 변수 없이 시작되며 기본 레이어를 바로 제공합니다 . 더 가치가 높은 피드인 ACLED, OpenSky, Wingbits, Cloudflare Radar, EIA, Finnhub, AISStream은 각각 자체 자격 증명이 필요하며, 키가 없는 레이어는 반복적으로 실패하지 않고 깔끔하게 숨겨집니다 . 그래서 먼저 대시보드를 평가한 뒤 실제로 필요한 소스에만 자격 증명을 추가할 수 있습니다.
비공개 포크에서 AGPL 라이선스는 어떤 의미인가요?
AGPL-3.0에서는 네트워크로 제공되는 수정 버전이 있다면 수정된 소스를 같은 라이선스로 공개해야 합니다. 네트워크 사용 조항이 일반 GPL에 남아 있는 “SaaS 허점”을 막기 때문입니다 . 따라서 독점형, 비공개 소스, 또는 브랜드 적용 배포에는 유지관리자인 @koala73로부터 별도의 상업/브랜딩/상표 라이선스가 필요합니다 . 얇은 클라이언트 SDK(JavaScript/npm, Python, Ruby, Go)는 MIT 라이선스이므로 AGPL 의무 없이 폐쇄형 소프트웨어에 임베드할 수 있습니다 .
클라우드 LLM 없이 AI 요약은 어떻게 작동하나요?
Transformers.js는 서버나 API 키 없이 브라우저에서 직접 추론을 실행하고, Ollama는 셀프 호스터를 위해 완전한 로컬 서버 측 추론을 제공합니다 . 호스팅 모델을 선호한다면 Groq와 OpenRouter도 클라우드 옵션으로 계속 사용할 수 있습니다 . 추론 비용을 낮추기 위해 Upstash Redis가 동일한 헤드라인을 중복 제거하므로, 여러 동시 사용자가 같은 스토리를 보더라도 LLM 호출은 한 번만 발생합니다 .
MCP 클라이언트를 World Monitor에 어떻게 연결하나요?
Streamable-HTTP MCP 호스트라면 https://worldmonitor.app/mcp를 가리키면 됩니다 . MCP 접근은 사용량 기준으로 제한됩니다. 무료 계정은 서버를 호출할 수 없고, Pro 계정은 UTC 기준 하루 50회의 할당량 차감 호출을 받을 수 있으며, API 플랜은 분당 60요청으로 제한되는 wm_... 키를 사용합니다 . 디스커버리 아티팩트에는 /.well-known/mcp/server-card.json, /openapi.yaml, /llms.txt가 포함됩니다 . 인증 없이 모든 작업을 미리 보려면 npx worldmonitor tools를 실행하면 됩니다 .
이 글이 도움이 되셨다면, 새 글이 올라올 때마다 이메일로 받아보세요.