ML

messagegabrielhere-lgtm/doomcon

Developer tools
0 stars Quality 58 Trend 20NOASSERTION

SIREN (Superintelligence Real-time Early Notice, formerly DOOMCON): an hourly index of AI activity you can verify. Hash-chained receipts, open method, no ads or tracking.

Overview

Superintelligence Real-time Early Notice. Formerly DOOMCON; the repository and the web address keep the old name. · verify the readings in your browser · method Five pillars, one 0–100 score, one level from DOOMCON 5 (DORMANT) to DOOMCON 1 (UNPRECEDENTED). Every number is recomputable by a stranger. Every other live AI-risk index — DoomBench, IMD's AI Safety Clock, skynetcountdown, takeofftracker, pdoom.ai — scores by human or model judgement. None of them can be independently recomputed. This one can. Clone the repo, run two commands, compare your number to the published one. If they disagree, that's a bug. It measures — not probability of harm, not a forecast. The full formula, every constant, and an honest "how this index could mislead you" section are in docs/METHODOLOGY.md. Prefix each with the Docker wrapper above. Backfill runs — the reference distribution is frozen on purpose and must not be regenerated casually.

README

SIREN

Superintelligence Real-time Early Notice. Formerly DOOMCON; the repository and the web address keep the old name.

Live: https://siren.watch/ · verify the readings in your browser · method

A real-time index of AI activity tempo, computed from public data by open code.

Five pillars, one 0–100 score, one level from DOOMCON 5 (DORMANT) to DOOMCON 1 (UNPRECEDENTED). Every number is recomputable by a stranger.

We don’t know anything. We just count.


What this is

Every other live AI-risk index — DoomBench, IMD’s AI Safety Clock, skynetcountdown, takeofftracker, pdoom.ai — scores by human or model judgement. None of them can be independently recomputed.

This one can. Clone the repo, run two commands, compare your number to the published one. If they disagree, that’s a bug.

It measures observable activity tempo relative to the field’s own history — not probability of harm, not a forecast. The full formula, every constant, and an honest “how this index could mislead you” section are in docs/METHODOLOGY.md.

Run it

No Node installation required — everything runs in Docker:

docker run --rm --network host -v "$PWD":/app -w /app node:20-alpine node collector/collect.mjs
Step Command Writes
Build the frozen reference node collector/backfill.mjs data/reference.json
Collect live readings node collector/collect.mjs data/raw/.json
Score it node collector/engine.mjs data/state.json, data/receipts/, data/history.ndjson
Render share cards node collector/card.mjs public/cards/
Generate post text node collector/posts.mjs data/posts.json
Build the site node site/build.mjs public/
Build the posting console node site/post-sheet.mjs public/post-sheet.html
Build the engage console (human likes/reposts) npm run engage public/engage-sheet.html + data/x-engage.json

Prefix each with the Docker wrapper above. Backfill runs once — the reference distribution is frozen on purpose and must not be regenerated casually.

Site upgrade plan

Next 90 days of site work (merge queue, retention, SEO, operator handoffs): docs/SITE-UPGRADES-90.md.

Architecture

collector/fetch.mjs        shared HTTP: timeout, retry, User-Agent, structured errors
collector/sources/*.mjs    one adapter per source — drop a file in, it is discovered
collector/collect.mjs      runs every adapter concurrently -> data/raw/
collector/engine.mjs       normalise -> smooth -> compose -> level, with anti-flap
collector/receipts.mjs     hash-chained, append-only audit trail
collector/card.mjs         share cards as dependency-free SVG
collector/posts.mjs        post text, with URL and future-tense guards
site/build.mjs             static site generator -> public/

The index, the site, and the collector use Node 20 built-ins only. That path does not install a package. Two optional tools do: the clipper and the arena agents import @anthropic-ai/sdk. Their lockfiles are package-lock.json and clipper/package-lock.json.

Adding a source

Drop a file in collector/sources/. It is discovered automatically.

export default {
  id: 'my-source',
  pillar: 'capability',          // capability | compute | attention | governance | markets
  label: 'Human-readable name',
  async collect(fetchJson) {
    const data = await fetchJson('https://…')
    return { value: 42, unit: 'things/day', meta: { … } }
  },
}

Three rules: value is a finite number, higher always means more activity (negate inside the adapter if your source points the other way), and throw on failure — never return a fallback. A dark source is a first-class state.

A new source does not enter the index until it is added to the frozen reference distribution, so adding one cannot retroactively move history.

AI battle

/arena.html is a separate side project: Claude, GPT, Grok, Gemini and DeepSeek each trade $1,000 of paper money against live Coinbase order books, alongside two no-AI baselines. The models only propose. A server prices each proposal into a ticket and checks it against fixed rules before filling it, and stops run every 5 minutes whether or not a model is awake. Every fill and every rejection is public. It shares nothing with the index pipeline. See docs/ARENA.md.

Data and API

Path What
/api/state.json Current score, level, pillars, per-source freshness
/api/history.json Scored observations over time
/api/receipts/.json One hash-chained receipt
/embed.html Embeddable widget
/feed.xml RSS of index moves

All CC-BY 4.0. Attribution appreciated, not enforced.

For other AI agents

Prefer these over scraping HTML:

Path What
/agents.md Short fetch-first map
/agents.txt agents-txt.com skills announcement (JSON)
/skill.md How to phrase and cite
/llms.txt Full site map for language models
/api/now.txt Current reading in a few plain lines
/.well-known/api-catalog RFC 9727 API catalog
/.well-known/mcp/server-card.json Stdio MCP install card

Runnable kit (zero dependencies) in agent-kit/:

node agent-kit/cli.mjs now          # current reading
node agent-kit/cli.mjs cite         # citation + spoken form
node agent-kit/mcp.mjs              # MCP stdio server for Cursor / Claude / etc.

See AGENTS.md if you are an agent editing this repository.

Verifying a receipt

Every scored observation carries every input exactly as fetched, plus the hash of the previous receipt. verifyChain() in collector/receipts.mjs walks the chain and re-derives every hash.

Note that arXiv counts are not immutable — papers get cross-listed after publication — so we snapshot the value and the query string at fetch time and never recompute history. A receipt records what we saw, not what the source says today.

Credits

Historical training-compute and notable-model data from Epoch AI, CC-BY 4.0.

Concept debt to pizzint.watch, whose Pentagon Pizza Index proved that a single named scalar plus a distribution channel beats a better dashboard with neither. The full teardown is in docs/TEARDOWN.md.

Launch / security

Before you share the URL widely, walk docs/LAUNCH.md (the 20-point checklist) and keep docs/ROLLBACK.md handy. Secrets never belong in site/ or in git — see SECURITY.md.

Licence

Code MIT. Data and index values CC-BY 4.0.

View this README on GitHub

Recommended Tools

Try a different keyword or remove a filter.

Install

npx skillfish add messagegabrielhere-lgtm/doomcon