尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证Open-source situational awareness: unattended OSINT ingest → live theater picture with MIL-STD-2525 symbology. Open sources only, not an official government product.
翻译准备中
取自仓库 README
正在加载完整 README。 以下为已保存的摘录。
A web product where an intelligence professional picks a combatant command and gets a
live, filterable geospatial picture of that theater — then exports it as a doctrinally
correct, briefable sheet.
Open sources only, forever. Not an official product of any government agency, and
not a document produced under any classification system — it carries no classification
markings. MIT licensed — see LICENSE and CONTRIBUTING.md.
Live: https://intel-os.org (all six combatant commands, 12-hour unattended cycle)查看完整 README ↗A web product where an intelligence professional picks a combatant command and gets a live, filterable geospatial picture of that theater — then exports it as a doctrinally correct, briefable sheet.
Open sources only, forever. Not an official product of any government agency, and
not a document produced under any classification system — it carries no classification
markings. MIT licensed — see LICENSE and CONTRIBUTING.md.
Place data: GeoNames (CC-BY 4.0), bundled in worker/data/
and rebuilt with scripts/build-places.ts.
Live: https://intel-os.org (all six combatant commands, 12-hour unattended cycle)
Long-term goal: Theater Picture is the first app. The larger aim is a platform for
building and deploying unit-specific tools that are born accreditation-ready for
restricted US government networks — see docs/VISION.md.
The product spec and the hand-built proof sheet (OS-IRN-26-001) are maintained outside this repository; the spec's requirement IDs (AUTO/DATA/UX/ANL/GEO/MARK/NFR) referenced throughout the code are mapped in the conformance table below.
worker/ Ingest loop (Railway, cron 0 */12 * * *): each cycle sweeps ALL six
AORs. Every source is fetched ONCE into a shared pool — shared public
feeds (Al Jazeera, BBC World, UN News, DoD releases, DVIDS, Defense One,
gCaptain, Naval News), regional feeds (BBC desk feeds, France 24
regions), and all six per-AOR GDELT sweeps of thousands of outlets.
Each command then selects its slice of the whole pool (own-source hits
+ articles matching its gazetteer terms), so every theater mines the
full source breadth → Claude extraction (reported facts only,
attribution discipline) → dedup → geolocation validated against that
AOR's curated gazetteer → publish situation update per AOR
packages/core Domain logic: event model, MIL-STD-2525E SIDC mapping, dedup,
gazetteer + confidence scoring, situation-update builder, marking guards
web/ Next.js theater view (Vercel): command selector → MapLibre map with
milsymbol 2525E symbols, synced event list, time control, URL-encoded
filter state, per-event sourcing and confidence
supabase/ Postgres schema: events, event_sources, event_revisions, issues
(immutable snapshots), ingest_runs. Everything is free: anon reads
full issues + archive via SECURITY DEFINER projections; ingest writes use service role only.
docs/ VISION.md (long-term goal) · DECISIONS.md · symbology/ (MIL-STD-2525E
w/CHG 1 + machine-readable tables)
research/ Market, NIPRNet/compliance, and 14N-workflow research reports
Two product types (spec §4): a situation update generates unattended every 12 hours and carries no judgement layer in any form; an assessment (Phase 2) adds key judgements, alternatives and implications, and publishes only over a named analyst's signature. Auto-accept of drafted judgements is never built.
npm install
npm test # core + worker + web unit tests
npm run typecheck
npx next dev --prefix web # or: cd web && npx next dev
# one manual ingest cycle against the linked Supabase project
cd worker && npx tsx src/index.ts # needs .env (see .env.example) + ANTHROPIC_API_KEY
npx tsx src/seed.ts # deterministic seed (proof-build events, no LLM)
Env:
web/.env.local — NEXT_PUBLIC_SUPABASE_URL, NEXT_PUBLIC_SUPABASE_ANON_KEY;
billing and optional analytics variables are documented in docs/STRIPE_SETUP.md
worker/.env — SUPABASE_URL, SUPABASE_SERVICE_ROLE_KEY, ANTHROPIC_API_KEY, AOR
| Requirement | Where |
|---|---|
| AUTO-1 no-change issues publish | worker/src/pipeline.ts |
| AUTO-2 dedup carries all sources | packages/core/src/dedup.ts |
| AUTO-3 low-confidence / ambiguous geocodes withheld | packages/core/src/gazetteer.ts (curated + GeoNames index) |
| AUTO-5 no judgement sections | packages/core/src/issue.ts (+ tests) |
| AUTO-5 "US impact" shows reported effect only | packages/core/src/usimpact.ts (+ tests) |
| AUTO-9 failed run publishes nothing, and is recorded and alarmed | worker/src/pipeline.ts, worker/src/index.ts, /api/health, .github/workflows/staleness.yml |
| AUTO-10 issues immutable/addressable | issues.snapshot column |
| DATA-1..6 provenance/precision/revisions | schema + core types |
| UX-1/2 one state, URL-encoded | web/lib/urlState.ts |
| UX-4 info cut-off always visible | theater masthead |
| UX-5 cluster / symbol degrade | web/components/TheaterMap.tsx |
| GEO-3/4 2525-informed framing | packages/core/src/sidc.ts, web/lib/symbols.ts |
| MARK-2/3/4 markings + public-source guard | layout banners, assertPublicSource |
| Community reports kept out of issues; public source + gazetteer-only placement | supabase/migrations/20261030220000_community_reports.sql, web/lib/community.ts |
Export (the differentiator — vector ANSI-D/tabloid sheet) is Phase 3 and not built yet.