Self-hosted microservices stack for monitoring Israel's Homefront Command alerts with real-time maps, push notifications, AI situation reports, and smart home automation.
# Clone and configure
git clone https://github.com/danielrosehill/Red-Alert-Monitoring-Stack-Public.git
cd Red-Alert-Monitoring-Stack-Public
cp .env.example .env
# Edit .env with your values (ALERT_AREA, MQTT_BROKER, API keys, etc.)
# Launch the stack
docker compose up -d
# Or with bundled MQTT broker:
docker compose -f docker-compose.with-broker.yml up -d
# Or for Home Assistant users (no actuator):
docker compose -f docker-compose.ha.yml up -d
Requirement: The Oref Alert Proxy must run from an Israeli IP address (geo-restricted API).
This repo includes slash commands for guided setup. Run /setup in Claude Code for a step-by-step walkthrough that configures MQTT, lights, Snapcast, and Cloudflare Tunnel.
Polls Pikud HaOref every 3 seconds. Single source of truth for the entire stack. Dumb relay — passes raw alert data with no interpretation.
Real-time multi-map dashboard with 1,450 polygon overlays, InfluxDB time-series storage, historical playback, and TV-optimized view.
Push notifications when alert count crosses thresholds (50, 100, 200, 500, 1000 simultaneous areas).
On-demand intelligence bot. /sitrep generates AI situation reports using dual-model synthesis via OpenRouter.
Physical alert outputs: TTS voice announcements via Snapcast whole-house audio, and smart light color control via MQTT. Fully customizable.
Polls news feeds on a schedule, serves cached articles. Used by Geodash and available for AI sitreps.
Streamable HTTP MCP server exposing alert tools for AI agents (Claude Code, Claude Desktop, etc.).
Stack health dashboard showing status of all services with auto-refresh every 30 seconds.
Use when you have an existing Mosquitto MQTT broker on your network. Set MQTT_BROKER in .env to your broker's IP.
docker compose up -d
Self-contained deployment with a bundled Mosquitto broker. Set MQTT_BROKER=mosquitto in .env.
docker compose -f docker-compose.with-broker.yml up -d
For Home Assistant users. Removes the actuator service — HA handles smart light and TTS automations directly by polling the proxy at http://<stack-ip>:8764/api/alerts.
docker compose -f docker-compose.ha.yml up -d
The recommended way to customize the stack without modifying tracked files:
cp docker-compose.override.example.yml docker-compose.override.yml
# Edit docker-compose.override.yml with your customizations
docker compose up -d # automatically merges override
Use overrides for: adding services (Cloudflare Tunnel, Grafana), overriding env vars, pinning image versions, setting resource limits, or adding volumes. The override file is gitignored so your changes survive git pull.
The actuator source is included at actuator/ — edit actuator.py directly to change:
COLORS dictionary)generate_audio.py)| Variable | Required | Description |
|---|---|---|
ALERT_AREA | Yes | Your area in Hebrew (e.g., ירושלים - דרום). Passed to all services. |
MQTT_BROKER | Yes | Broker IP or mosquitto for bundled |
PUSHOVER_API_TOKEN | For push | Pushover application token |
PUSHOVER_USER_KEY | For push | Pushover user key |
TELEGRAM_BOT_TOKEN | For bot | Bot token from @BotFather |
OPENROUTER_API_KEY | No | For AI situation reports in Telegram |
MQTT_LIGHT_TOPICS | No | Comma-separated MQTT topics for lights |
SNAPCAST_FIFO | No | Path to Snapcast FIFO pipe (default: /tmp/snapfifo) |
TTS_ENABLED | No | Enable/disable TTS (default: true) |
OPENAI_API_KEY | No | For one-time TTS audio generation |
The stack includes an MCP server for AI agent integration:
# Claude Code
claude mcp add --transport http red-alert http://localhost:8786/mcp
# Claude Desktop — add to claude_desktop_config.json:
{
"mcpServers": {
"red-alert": {
"url": "http://localhost:8786/mcp"
}
}
}
| Tool | Description |
|---|---|
get_current_alerts | All currently active alerts nationwide |
get_area_alerts | Alerts within a radius of a lat/lon point |
get_alert_history | Recent alert history including resolved |
get_news | Cached news articles from RSS feeds |
get_sample_payloads | Stored sample alert payloads for dev |
get_proxy_status | Health check of the Oref Alert Proxy |
We recommend Cloudflare Tunnel for secure remote access to the stack. It provides HTTPS, authentication, and DDoS protection without opening router ports — and the free tier covers personal use.
Suggested subdomain pattern:
| Subdomain | Service |
|---|---|
redalert.yourdomain.com | Management UI (:8888) |
redalertdash.yourdomain.com | Geodash Dashboard (:8083) |
redalertmcp.yourdomain.com | MCP Server (:8786) |
Claude Code users: run /setup-tunnel for a guided Cloudflare Tunnel setup.