AI-native OSINT, built in public
Digital War Room is an AI-native OSINT project that fuses fragmented conflict signals into one visual picture—escalation score, theater context, and BLUF-style briefings—with methodology and sources you can inspect.
Try it: Live Demo · Docs · Local quickstart
Canonical in code: PINNED_ONE_LINER — when you change the wording, sync index.html / app/index.html meta and JSON-LD. Author and social bios live on the website (footer), not duplicated here.
Real-time conflict monitoring with specialized agents across GEOINT, SIGINT, SOCMINT, FININT, CYBER, and related domains — orchestrated by a single Claude Sonnet supervisor with rule-based routing.
Built at the intersection of AI engineering, international relations, and OSINT tradecraft. This is a serious open pipeline—not a claim to be a finished enterprise intelligence product.
Digital War Room deploys 11+ specialized OSINT agents — supervised by a Claude Sonnet orchestrator — to monitor, analyze, and synthesize intelligence from open sources. Instead of aggregating headlines, it produces structured assessments (scores, BLUF-style briefings, and source-linked findings) across multiple streams: sanctions/finance, flight patterns, civil unrest events, cyber signals, and more.
Why it matters: Many dashboards show what happened. Digital War Room aims to help you interpret what it may mean — by cross-referencing streams and surfacing where signals corroborate (or contradict) each other.
Use the live dashboard to see the platform’s full loop: pick a conflict context → run analysis → watch streaming updates → read the BLUF briefing with source-backed findings.
This repo currently ships without media assets. Here’s the recommended layout once you capture them (see the workflow below).
- Open the dashboard and pick a conflict context (e.g.
Iran). - Hit Run Analysis (or open the latest cached result) and watch the briefing + panels populate.
- Use Documentation → Source Directory to inspect sources and mappings.
- OSINT builders who want a real multi-agent pipeline they can inspect and extend
- Researchers / analysts who want cross-stream synthesis (not just a news feed)
- Policy / newsroom / NGO workflows that need a fast situational picture with traceable sources
- Multi-stream corroboration: signals are compared across domains (finance, flights, civil unrest events, cyber, energy)
- Structured outputs: scores + key findings + briefings (not a pile of links)
- Inspectable methodology & sources: the “why” is part of the product (docs hub + source directory)
- Daily situational picture for a theater (score, threat level, BLUF briefing, key findings)
- Source traceability for briefs: jump from a claim to the originating stream and source directory
- Cost-controlled monitoring: rule-based agents by default; optional supervisor modes for savings
- Open the live demo at desktop width (e.g. 1440px).
- Capture 3 screenshots:
- Dashboard overview (score + map)
- Agent monitor/panel
- Briefing / intelligence feed
- Optional: record a 10–20s clip (“Run Analysis” → stream → briefing updates) and convert to GIF.
- Save under
docs/assets/:docs/assets/dashboard-overview.pngdocs/assets/agent-monitor.pngdocs/assets/briefing-panel.pngdocs/assets/demo-run-analysis.gif(optional)
- Uncomment the image block above to embed them in the README.
- How it works (UX & flows): docs/how-it-works.md (canonical in-product: Documentation → How It Works)
- Architecture: docs/ARCHITECTURE.md
- API overview: docs/API-REFERENCE.md
- Deployment & env: docs/DEPLOYMENT.md
- API keys & backend config: docs/API-KEYS.md
Deep dives (methodology, governance, project index)
| Topic | Repository |
|---|---|
| Attention playbook (audience, content loop, credibility) | docs/ATTENTION-PLAYBOOK.md |
| Conflict prioritization | docs/CONFLICT-PRIORITIZATION.md |
| Full project index | docs/PROJECT-DOCUMENTATION.md |
| Privacy & GDPR governance | docs/PRIVACY-GDPR-DSGVO.md |
| Retention policy | docs/DATA-RETENTION-POLICY.md |
| Audit trail policy | docs/AUDIT-TRAIL-POLICY.md |
| DSR runbook | docs/DSR-RUNBOOK.md |
| Contributing | CONTRIBUTING.md |
┌─────────────────────────────────────────────────────────────────┐
│ CLAUDE SONNET SUPERVISOR │
│ Orchestrates agents · Resolves conflicts · Briefs │
└──────────────┬──────────────────────────────────┬───────────────┘
│ │
┌──────────▼──────────┐ ┌──────────▼──────────┐
│ INTELLIGENCE LAYER │ │ MONITORING LAYER │
│ │ │ │
│ 📡 SIGINT Agent │ │ 🌍 GEOINT Agent │
│ 💰 FININT Agent │ │ 📱 SOCMINT Agent │
│ 🔒 CYBER Agent │ │ 📰 NEWS Agent │
│ 🏛️ DIPLO Agent │ │ ⚡ ENERGY Agent │
│ 🔬 TECHINT Agent │ │ ✊ CIVIL_UNREST Agent │
│ │ │ 📍 PROXIMITY Agent │
└──────────┬───────────┘ └──────────┬───────────┘
│ │
┌──────────▼───────────────────────────────────▼──────────┐
│ DATA SOURCES │
│ ACLED · GDELT · OONI · IODA · Polymarket · ADS-B │
│ GreyNoise · OpenSanctions · OFAC · EU Sanctions List │
└─────────────────────────────────────────────────────────┘
| Agent | Role | Key data sources | Often pairs with |
|---|---|---|---|
| SIGINT | Flight patterns, airspace, ADS-B | ADS-B Exchange, Flightradar24 | GEOINT, PROXIMITY |
| FININT | Sanctions, ownership chains, commodities | OpenSanctions, OFAC SDN, EU list | ENERGY, DIPLO |
| GEOINT | Geographic conflict events, mapping | ACLED, GDELT | SIGINT, NEWS |
| SOCMINT | Social narratives, sentiment | X/Twitter, Telegram | CIVIL_UNREST, NEWS |
| NEWS | Breaking news, multilingual | RSS, wires | All agents |
| CYBER | Outages, DDoS, hacktivism | GreyNoise, OONI, IODA | SIGINT, TECHINT |
| ENERGY | Infrastructure, Hormuz / commodity stress | Maritime AIS, oil APIs | FININT, GEOINT |
| TECHINT | Tech / defense industry signals | SIPRI, defense wires | SIGINT, DIPLO |
| CIVIL_UNREST | Unrest, crackdowns | ACLED, SOCMINT | SOCMINT, CYBER |
| DIPLO | Diplomatic / legal signals | UN, ICJ, sanctions lists | FININT, ENERGY |
| PROXIMITY | Geographic risk / proximity | FIRMS, OSM | GEOINT, SIGINT |
- Interactive theater map — Conflict visualization with overlays (events, flights, maritime, civil unrest events).
- Daily intelligence briefings — Synthesized assessments with confidence and attribution.
- Predictive outlook — Scenario-style views using market-implied signals (e.g. Polymarket) where configured.
- Source directory — Trace claims back to primary sources with reliability context.
- Strait of Hormuz monitor — Maritime and commodity stress through the chokepoint.
- Sanctions-oriented workflows — OFAC / EU / UN screening patterns where APIs and keys are configured.
- Documentation hub routing —
/how-it-works,/methodology, and/sourcesredirect to/docs/documentationwithdocquery params. - Full-width content pages — Documentation/legal/blog/newsletter pages use the available desktop width by default.
| Layer | Technology |
|---|---|
| Frontend | React 18, TypeScript, Vite, Tailwind CSS, shadcn-style UI |
| Backend | Python 3.11+, FastAPI, Pydantic |
| AI | Claude Sonnet (supervisor), rule-based agent dispatch |
| Hosting | Vercel (frontend), Railway (backend) |
| Analytics | Vercel Analytics |
The project moved from a full LangGraph multi-agent graph to a hybrid: rule-based dispatch with one Claude Sonnet supervisor for synthesis. That reduced token cost substantially while keeping analytical quality for contradiction resolution, source weighting, and natural-language briefings.
- Live site:
https://digital-war-room.com - Docs hub:
https://digital-war-room.com/docs/documentation - If you want the full picture: run an analysis once, then inspect sources via Source Directory.
- Node.js 18+
- Python 3.11+
git clone https://github.com/lina767/digital-war-room.git
cd digital-war-room
npm install
npm run dev
# → http://localhost:8080cd backend
pip install -r requirements.txt
# optional: lint, tests, types
pip install -r requirements-dev.txt
uvicorn main:app --reload
# → http://localhost:8000Without external API keys, you can still use the health checks and interactive docs (/health, /docs). For live analysis, configure keys as needed in docs/API-KEYS.md.
In the project root, create .env as needed:
VITE_API_URL=http://localhost:8000Copy and fill examples from:
- Root:
.env.development.example,.env.staging.example,.env.production.example - Backend:
backend/.env.exampleandbackend/.env.*.example
Secrets are documented in docs/API-KEYS.md.
docker compose up --build- Frontend:
http://localhost:8080 - Backend:
http://localhost:8000 - Postgres (pgvector):
localhost:5432
For local Docker development details, see docs/DOCKER-DEV.md. For production deployment, see docs/DEPLOYMENT.md.
Base URL (local): http://localhost:8000
| Endpoint | Method | Purpose |
|---|---|---|
/health |
GET | Liveness |
/api/analyze/status?conflict=Iran |
GET | Cache / error status |
/api/analyze/latest?conflict=Iran |
GET | Latest cached analysis |
/api/analyze/refresh?conflict=Iran |
POST | Trigger background refresh |
/api/analyze/stream?conflict=Iran |
GET (SSE) | Stream agent + supervisor events |
/api/agents/status |
GET | Last per-agent snapshot |
/api/agents/history |
GET | Recent run history |
Interactive docs: http://localhost:8000/docs (local). See docs/API-REFERENCE.md for more.
flowchart LR
A[Client] --> B[/FastAPI Routes/]
B --> C[Supervisor]
C --> D[Specialized Agents]
D --> E[(StateService Cache)]
E --> B
Backend tests live under backend/tests/ (test_agents/, test_integration/, test_api/, conftest.py).
cd backend
pytest
mypy .
ruff check .Coverage uses pytest-cov with a minimum threshold (see pytest config in the backend).
.pre-commit-config.yaml can run Ruff, mypy, and Prettier — install with pre-commit install if you use it locally.
| Command | Description |
|---|---|
npm run dev |
Dev server (Vite) |
npm run build |
Production build |
npm run preview |
Preview production build |
npm run lint |
ESLint |
npm run test |
Vitest |
npm run typecheck |
TypeScript check |
npm run version:patch / minor / major |
SemVer bump |
- Dependabot:
.github/dependabot.yml— automated updates for GitHub Actions, npm, and pip. - Versioning: CHANGELOG.md follows the project’s release notes.
- Multi-theater support (beyond Middle East)
- Collaborative annotation layer
- API access for researchers
- Webhook-based alerts
- Mobile-optimized briefing view
- Integration with Bellingcat-style verification tooling
Contributions are welcome — new data pipelines, agent improvements, or UI fixes.
- Fork the repository
- Branch (
git checkout -b feature/your-feature) - Commit with clear messages
- Push and open a Pull Request
See CONTRIBUTING.md for local setup and how to report issues.
MIT License — Copyright (c) 2026 Lina Braun.
Lina Braun — Political science & AI engineering