AEGIS — Automated Emergency Geopolitical Intelligence System
Civilian-first threat intelligence for conflict zones. Monitors 28+ sources (RSS, web, APIs, OSINT aggregators) with two delivery modes:
- 1. CRITICAL-only scan (every 15 min) — Posts ONLY for verified, active emergencies (3-phase validation)
- Morning/evening briefings (8am + 8pm local) — Agent-powered situation reports with actionable guidance
Powered by World Monitor (real-time geopolitical intelligence API) and LiveUAMap (verified OSINT event feed), supplemented by government sources, major news agencies, and aviation data.
Not a panic tool. Calm, factual, action-oriented. Follows official government guidance.
Requirements
- - curl — used for all HTTP fetching (RSS, web, APIs). Pre-installed on most systems.
- python3 (3.8+) — runs all scripts. No extra pip packages needed (stdlib only).
- No API keys required for baseline 23 sources. Optional: NewsAPI free tier for expanded coverage.
- LLM (optional) — Improves CRITICAL alert accuracy via semantic verification. See LLM Verification below.
Quick Start
First-time setup (interactive)
python3 scripts/aegis_onboard.py
Creates
~/.openclaw/aegis-config.json with location, language, and alert preferences.
Manual config
Create
~/.openclaw/aegis-config.json:
CODEBLOCK1
Run a scan
CODEBLOCK2
Set up cron monitoring
CODEBLOCK3
Optional: Telegram channel delivery
Set environment variables for direct channel posting:
- -
AEGIS_BOT_TOKEN — Telegram bot token (from BotFather) - INLINECODE3 — Telegram channel ID
Or add to config:
CODEBLOCK4
Data Storage
AEGIS stores scan state in ~/.openclaw/aegis-data/ (or $AEGIS_DATA_DIR if set):
- -
seen_hashes.json — content dedup hashes (48h rolling window for scans, 6h for feed) - INLINECODE7 — alerts awaiting batch delivery
- INLINECODE8 — recent scan results
- INLINECODE9 — most recent scan output (used by briefings)
- INLINECODE10 — live feed dedup state and last post timestamp
- INLINECODE11 — channel post cooldown tracker
- INLINECODE12 — rolling log of scan results (last 500 entries)
All files are local JSON. No data is sent to external servers beyond the listed sources in source-registry.json.
Sources (30+)
All sources are defined in references/source-registry.json. The scanner only contacts URLs listed there.
| Tier | Type | Count | Examples |
|---|
| 0 🏛️ | Government & Emergency | 7 | GDACS, NCEMA, UAE MoD, US/UK embassies, MOFAIC |
| 1 📰 |
Major News & RSS | 11 | Al Jazeera, Reuters, BBC, Gulf Business, Emirates 24/7, Gulf Today |
| 2 🔍 | OSINT & Conflict Mapping | 5 | World Monitor API, LiveUAMap (3 regions + feed) |
| 2 ✈️ | Aviation | 2 | FAA NOTAMs (DXB, AUH) |
| 3 📋 | Analysis | 2 | Crisis Group, War on the Rocks |
| 4 🔑 | API-Enhanced (optional) | 1+ | NewsAPI (free tier), GDELT |
Outbound connections
The scanner contacts only:
- 1. URLs listed in
references/source-registry.json (RSS feeds, news sites, government pages) - INLINECODE16 (World Monitor public API)
- LiveUAMap regional pages (e.g.,
https://iran.liveuamap.com) - Telegram Bot API (
https://api.telegram.org/bot.../sendMessage) — only if channel delivery is configured
No telemetry. No analytics. No phone-home.
Alert Classification
| Level | Meaning | Trigger |
|---|
| 🔴 CRITICAL | Immediate physical danger in user's country | Missiles inbound, sirens, shelter orders, airport shutdown, CBRN |
| 🟠 HIGH |
Significant regional threat | Attacks on neighbors, strait disrupted, flights cancelled, general "UAE hit by" context |
| ℹ️ MEDIUM | Situational awareness | Regional strikes, diplomacy, oil prices, sanctions |
CRITICAL is reserved for "act now, your life may be in danger." Regional developments and background context are HIGH.
CRITICAL Validation Pipeline (v3.2)
CRITICAL alerts go through 3-phase validation to eliminate false positives:
- 1. Regex pre-filter — Tightened patterns match only active attacks, sirens, shelter orders
- Negative pattern filter — Disqualifies: past tense ("has been hit"), sports, analysis, speculation, historical context
- LLM verification (optional) — Confirms the item describes an ACTIVE emergency
Additionally:
- - Government trust — Tier 0 sources (NCEMA, government) bypass LLM verification
- Source corroboration — Single source: 4h cooldown; 2+ sources: 1h cooldown
- Fail-open safety — If LLM unavailable or disabled, CRITICAL alerts pass through (safety first)
LLM Verification
LLM verification is optional but recommended. It adds a semantic check that catches false positives the regex filters miss (e.g., "cricket match cancelled due to war" triggering CRITICAL).
Three modes (configured in aegis-config.json under "llm"):
| Mode | Provider | Cost | Accuracy | Setup |
|---|
| Local Ollama | INLINECODE21 | Free (runs on your GPU) | Best | Install Ollama, pull a model |
| OpenAI-compatible API |
"openai" | ~$0.001/verification | Best | Any OpenAI-compatible endpoint (OpenRouter, Together, vLLM, LiteLLM, etc.) |
|
No LLM |
"none" | Free | Good (regex + negative patterns only) | No setup needed |
Without LLM: AEGIS still works well — the regex pre-filter and negative pattern filter catch most false positives. You may see occasional false CRITICAL alerts that would have been caught by LLM verification.
Config examples:
CODEBLOCK5
The onboarding wizard (aegis_onboard.py) will help you choose during setup.
Anti-Hoax Protocol
- - Tier 0 sources: trusted directly (government/emergency)
- Tier 1+ CRITICAL candidates: must pass LLM semantic verification
- Tier 2+: require corroboration from ≥1 Tier 0-1 source for HIGH
- Social media: excluded entirely
- Extraordinary claims: require ≥3 independent sources
Briefings
Morning and evening briefings use agent-powered synthesis to create human-readable situation updates:
Situation Update Format
Each briefing includes:
- - Summary — What happened in plain English with real numbers
- Status — Current safety status (threat level with description)
- Actions — 4-6 concrete things a civilian should do right now
- Daily Impact — Flights, schools, work, supplies, roads, hospitals
- Outlook — What to expect in the next 12-24 hours
- Sources — Where to verify and get more info
Delivery Modes
| Mode | Frequency | Posts on |
|---|
| CRITICAL scan | Every 15 min | Imminent danger only (missiles inbound, shelter orders) |
| Morning briefing |
Once daily (8am local) | Full situation update with overnight summary |
|
Evening briefing | Once daily (8pm local) | Full situation update with daytime summary |
|
Live feed | Every 5 min (optional) | Discrete verified events from LiveUAMap + World Monitor |
Anti-Spam
- - CRITICAL scan: 4-hour cooldown (single source) / 1-hour cooldown (multi-source corroborated)
- Live feed: 5-minute batch interval, max 8 events per post
- Briefings: Agent-powered, pin to channel, once per cycle
Country Profiles
Each supported country has a profile in references/country-profiles/. Profiles contain:
- - Emergency contacts and hotlines
- Neighboring countries and regions of interest (for source filtering)
- Local threat keyword patterns
- Shelter and evacuation info
Currently available: UAE (uae.json). To add a country: copy _template.json, fill in details, submit PR.
Preparedness Resources
See references/preparedness/ for:
- -
go-bag-checklist.md — What to pack for emergency evacuation - INLINECODE30 — Family communication plan
- INLINECODE31 — Shelter-in-place protocol
- INLINECODE32 — Routes, transport, embassy registration
Configuration Reference
See references/config-reference.md for all configuration options.
Cost
- - Sources (30+): Free (RSS + web scraping + public APIs)
- LLM verification (optional): Free with Ollama; ~$0.001/check with cloud APIs; or disabled (regex-only)
- Briefings: Free with Copilot or local models; ~$0.03-0.05/day with commercial LLMs
- Optional NewsAPI: Free tier (100 req/day) is sufficient
AEGIS — 自动化紧急地缘政治情报系统
面向平民的冲突区域威胁情报系统。监控28+个来源(RSS、网页、API、开源情报聚合器),提供两种投递模式:
- 1. 仅关键扫描(每15分钟)——仅针对已验证的活跃紧急事件发布(三阶段验证)
- 早/晚间简报(当地时间早8点+晚8点)——基于智能体的态势报告,附带可操作指南
由World Monitor(实时地缘政治情报API)和LiveUAMap(已验证的开源情报事件源)提供支持,辅以政府来源、主流新闻机构和航空数据。
非恐慌工具。 冷静、基于事实、面向行动。遵循官方政府指导。
系统要求
- - curl — 用于所有HTTP获取(RSS、网页、API)。大多数系统预装。
- python3(3.8+)——运行所有脚本。无需额外pip包(仅需标准库)。
- 无需API密钥即可使用23个基础源。可选:NewsAPI免费版可扩展覆盖范围。
- LLM(可选) — 通过语义验证提高关键警报准确性。参见下方LLM验证。
快速开始
首次设置(交互式)
bash
python3 scripts/aegis_onboard.py
在~/.openclaw/aegis-config.json中创建位置、语言和警报偏好设置。
手动配置
创建~/.openclaw/aegis-config.json:
json
{
location: {
country: AE,
country_code: AE,
city: Dubai,
timezone: Asia/Dubai
},
language: en,
alerts: { critical
instant: true, highbatch
minutes: 30, mediumdigest_hours: 6 },
briefings: { morning: 07:00, evening: 22:00 },
scan
intervalminutes: 15,
api_keys: {}
}
运行扫描
bash
python3 scripts/aegis_scanner.py
设置定时监控
仅关键扫描(每15分钟)——仅针对迫在眉睫的威胁发布
openclaw cron add --every 15m --message Run AEGIS scan: python3
/scripts/aegis_cron.py
早间简报(根据用户时区调整时间——示例:4:00 UTC = 迪拜8:00)
openclaw cron add --cron 0 4 * --tz UTC --message Run AEGIS morning briefing: python3 /scripts/aegis_briefing.py morning
晚间简报(示例:16:00 UTC = 迪拜20:00)
openclaw cron add --cron 0 16 * --tz UTC --message Run AEGIS evening briefing: python3 /scripts/aegis_briefing.py evening
可选:实时推送(每5分钟)——仅用于高节奏情况,平静期禁用
openclaw cron add --cron /5 * --message Run AEGIS live feed: python3 /scripts/aegis_feed.py --disabled
可选:Telegram频道投递
设置环境变量以直接发布到频道:
- - AEGISBOTTOKEN — Telegram机器人令牌(来自BotFather)
- AEGISCHANNELID — Telegram频道ID
或添加到配置:
json
{
telegram: {
bot_token: your-token,
channel_id: -100xxxxxxxxxx
}
}
数据存储
AEGIS将扫描状态存储在~/.openclaw/aegis-data/(或$AEGISDATADIR如果设置):
- - seenhashes.json — 内容去重哈希(扫描48小时滚动窗口,推送6小时)
- pendingalerts.json — 等待批量投递的警报
- scanlog.json — 最近的扫描结果
- lastscan.json — 最近一次扫描输出(供简报使用)
- feedstate.json — 实时推送去重状态和最后发布时间戳
- lastalerttime.json — 频道发布冷却跟踪器
- scanhistory.log — 扫描结果滚动日志(最近500条)
所有文件均为本地JSON。除source-registry.json中列出的来源外,不会向外部服务器发送任何数据。
来源(30+)
所有来源定义在references/source-registry.json中。扫描器仅联系其中列出的URL。
| 层级 | 类型 | 数量 | 示例 |
|---|
| 0 🏛️ | 政府和应急机构 | 7 | GDACS、NCEMA、阿联酋国防部、美/英大使馆、外交部 |
| 1 📰 |
主流新闻和RSS | 11 | 半岛电视台、路透社、BBC、海湾商业、Emirates 24/7、Gulf Today |
| 2 🔍 | 开源情报和冲突地图 | 5 | World Monitor API、LiveUAMap(3个区域+推送) |
| 2 ✈️ | 航空 | 2 | FAA NOTAMs(DXB、AUH) |
| 3 📋 | 分析 | 2 | 危机组织、War on the Rocks |
| 4 🔑 | API增强(可选) | 1+ | NewsAPI(免费版)、GDELT |
出站连接
扫描器仅联系:
- 1. references/source-registry.json中列出的URL(RSS源、新闻网站、政府页面)
- https://world-monitor.com/api/signal-markers(World Monitor公共API)
- LiveUAMap区域页面(例如https://iran.liveuamap.com)
- Telegram Bot API(https://api.telegram.org/bot.../sendMessage)——仅当配置了频道投递时
无遥测。无分析。无回传。
警报分类
| 级别 | 含义 | 触发条件 |
|---|
| 🔴 关键 | 用户所在国家的即时人身危险 | 导弹来袭、警报响起、避难命令、机场关闭、核生化 |
| 🟠 高 |
重大区域威胁 | 邻国遭袭、海峡中断、航班取消、涉及阿联酋遭袭背景 |
| ℹ️ 中 | 态势感知 | 区域打击、外交动态、油价、制裁 |
关键警报保留给立即行动,你的生命可能处于危险中。区域发展和背景信息归类为高。
关键验证管道(v3.2)
关键警报经过三阶段验证以消除误报:
- 1. 正则预过滤 — 收紧模式仅匹配活跃攻击、警报、避难命令
- 否定模式过滤 — 排除:过去时态(已被击中)、体育、分析、推测、历史背景
- LLM验证(可选)— 确认项目描述的是活跃紧急事件
此外:
- - 政府信任 — 第0层来源(NCEMA、政府)绕过LLM验证
- 来源佐证 — 单一来源:4小时冷却;2+来源:1小时冷却
- 故障安全 — 如果LLM不可用或禁用,关键警报通过(安全第一)
LLM验证
LLM验证可选但推荐。它添加了正则过滤器无法捕捉的语义检查(例如因战争取消板球比赛触发关键警报)。
三种模式(在aegis-config.json的llm下配置):
| 模式 | 提供商 | 成本 | 准确性 | 设置 |
|---|
| 本地Ollama | ollama | 免费(在GPU上运行) | 最佳 | 安装Ollama,拉取模型 |
| 兼容OpenAI的API |
openai | ~$0.001/验证 | 最佳 | 任何兼容OpenAI的端点(OpenRouter、Together、vLLM、LiteLLM等) |
| 无LLM | none | 免费 | 良好(仅正则+否定模式) | 无需设置 |
无LLM: AEGIS仍能良好运行——正则预过滤和否定模式过滤能捕捉大多数误报。你可能偶尔会看到本应由LLM验证捕捉的错误关键警报。
配置示例:
json
// 本地Ollama(如有GPU推荐)
llm: { enabled: true, provider: ollama, endpoint: http://localhost:11434, model: qwen3