Singularity Tracker — Brain Dump
Singularity Tracker — Brain Dump
The Singularity Tracker Predictor is a live meta-consensus dashboard that blends prediction market data, expert opinions, and crowdsourced forecasts into a single weighted estimate of when AGI and the Singularity will arrive. Live at /singularity-tracker-predictor/.
Files
| File | Role |
|---|---|
_pages/singularity-tracker.md |
Jekyll page (layout: default, permalink: /singularity-tracker-predictor/). Contains all HTML: hero, status bar, source cards, chart canvas, expert table, definition key, embed snippet. |
assets/js/singularity-tracker.js |
All logic: API fetching, meta-estimate math, countdown, Chart.js rendering, DOM updates, embed code generation, localStorage caching. |
assets/css/singularity-tracker.css |
Styles, all scoped to .st-* namespace. Uses site CSS variables (--phosphor, --amber, --bg-card, etc.). No changes needed here unless redesigning. |
_pages/singularity-widget.md |
Minimal embed widget (countdown only). Separate layout. |
Data Sources
Manifold Markets
- What it is: Prediction market; users bet on outcomes with play money (mana) and real-money prizes.
- Markets tracked: “Will there be AGI before [year]?” binary markets.
- API: Public REST, no auth required.
- Endpoint:
https://api.manifold.markets/v0/market/{slug} - Slug example:
will-there-be-agi-before-2028-real(check annually; slugs change when new markets are created) - Returns:
probability(0–1 float),isResolved,closeTime
- Endpoint:
- How we use it: Fetches ~5 markets (2027, 2029, 2030, 2031, 2035). Maps each to
{ year, prob }. Passes tointerpolateMedian(). - Weight in meta-estimate: 1.0 (highest; most active market)
- Live fallback: Static
agiCurvePointsarray in the JS is updated manually when Manifold data changes significantly.
Metaculus
- What it is: Structured forecasting platform; community predictions on question timelines.
- Market tracked: “When will the first general AI system be developed?” (Question #5121)
- API: Requires read-only auth token.
- Token (as of Aug 2026):
3b342d0ef1cca84c56ed87006b36c14e1d83a2bc - Endpoint v3:
https://www.metaculus.com/api/posts/5121/?with_cp=true - Known issue: v3 returns
nullforaggregations.recency_weighted.latest.centerswhen the question has a lot of forecasters and is still open. Likely a Metaculus API bug.
- Token (as of Aug 2026):
- Manual fallback (
metaculusManualin JS): HardcodedimpliedYear: 2032with anupdatedAttimestamp. This is what actually displays. - Weight: 1.2 (live) / 0.9 (manual, discounted for staleness)
- Live status: Effectively broken as of Aug 2026 — live fetch always fails gracefully and falls back to manual data. The code still attempts the live fetch; when it fails, it shows a “Manual data” banner.
Kalshi
- What it is: Real-money US prediction exchange, CFTC-regulated.
- Markets tracked:
- KXAGICO-COMP series: “Will any company announce AGI before [date]?”
- KXOAIAGI series: “Will OpenAI announce AGI before [date]?”
- API: Requires auth token.
- Token (as of Aug 2026):
511c58f1-b178-4495-bf9f-1325fac01001 - Base URL:
https://api.elections.kalshi.com/trade-api/v2/(NOTtrading-api.kalshi.com— that old URL is dead) - Endpoint:
/markets?series_ticker=KXAGICO-COMP&status=open&limit=20 - Key response field:
last_price_dollars(string, e.g. “0.49”) — NOTlast_price
- Token (as of Aug 2026):
- How we use it: Fetches both series in parallel via
Promise.allSettled(). Converts prices toprob(float), usesclose_timeto deriveimpliedYear. - Manual fallback (
kalshiManualin JS): Hardcoded answers + impliedYears updated manually from live Kalshi data.- As of Aug 2026: KXAGICO-COMP impliedYear 2028 (49% before Jan 2028, 67% before 2030, 80% before 2031); KXOAIAGI impliedYear 2031 (35.9% before 2028, 48% before 2030)
- Weight: 0.7 (live) / 0.6 (manual, discounted)
Meta-Estimate Math
metaYear = weightedAverage([
manifoldYear * 1.0, (or agiCurvePoints static fallback)
metaculusYear * 1.2, (live) or * 0.9 (manual)
kalshiYear * 0.7, (live) or * 0.6 (manual)
...staticSources each weighted individually
]) / totalWeight
interpolateMedian(points): Given [{ year, prob }], finds where cumulative probability crosses 0.5. If all points are below 50%, extrapolates linearly from the last two points.
The Singularity year is the AGI year + a fixed offset (currently +2 years, to approximate AGI → recursive self-improvement → Singularity).
Chart (Chart.js 4.4.3)
- Two line datasets: AGI curve (green
#5dbb6f), Singularity curve (red#c0392b). - Two scatter datasets: Named AGI predictions (green dots), Named Singularity predictions (red dots).
- X-axis: years. Y-axis: probability 0–100%.
NAMED_AGI_PREDICTIONS:[{ year, label, prob }]— theprobis where the dot sits on the curve (Manifold’s probability for AGI by that year, or the nearest proxy).NAMED_SINGULARITY_PREDICTIONS: similar, offset by ~2 years and Singularity-curve prob.- Chart uses a custom tooltip plugin that shows the label+year for scatter points.
- Canvas ID:
stChart.
Countdown
startCountdown(targetYear): Counts down to Jan 1 of targetYear. Updates every second via setInterval. Renders into #st-countdown-days/hours/minutes/seconds.
Caching
- localStorage key:
tdc_st_v2 - TTL: 2 hours (7200000ms)
- Stores the full computed result (meta year, source breakdown, chart data) so repeat page loads don’t re-fetch APIs.
- Busts on TTL expiry; no manual busting needed.
Expert Table
Static HTML in _pages/singularity-tracker.md. Columns: Name, Year, Type (Expert/Model/Survey), Category (AGI/Superintelligence), Note, Last Verified, Source.
Current entries (Aug 2026): | Name | Year | Category | Notes | |——|——|———-|——-| | Elon Musk | 2030 | AGI | 2026 prediction passed; revised ~2030 | | Sam Altman | 2026 | AGI | “Not quite yet” but expects AGI by year-end; CRO Mark Chen says “80% of the way” | | Sam Altman | 2026–27 | Superintelligence | “The Gentle Singularity” blog post (Sep 2024) | | Dario Amodei | 2026–27 | AGI | “Machines of Loving Grace” essay | | Demis Hassabis | ~2030 | AGI | General AI systems by decade-end | | Ray Kurzweil | 2029 | AGI/Singularity | “The Singularity Is Nearer” | | Samotsvety | 2035 | AGI | Forecasting superforecaster aggregate | | AI Impacts Survey | 2047 | AGI | Annual survey median |
Known Limitations / Maintenance Checklist
When to update manually:
- Manifold slugs change when new markets open → grep for
manifold.marketsin the JS, update slugs andagiCurvePointsstatic fallback. - Kalshi series tickers can change → check
series_tickerparams infetchKalshi(). - Metaculus Q5121 rarely updates its API response; check every few months.
- Expert entries in the HTML table: verify dates, add new entries, flag outdated ones.
When to update metaculusManual.updatedAt: every time you manually verify the Metaculus community prediction hasn’t changed (even if staying at 2032).
When to update kalshiManual: after checking Kalshi prices live via curl or the site — quarterly or when a major market resolves.
Auth tokens (do not rotate unless they expire):
- Metaculus:
3b342d0ef1cca84c56ed87006b36c14e1d83a2bc - Kalshi:
511c58f1-b178-4495-bf9f-1325fac01001
The locked-files problem: Never leave singularity tracker edits uncommitted. GitHub Desktop or git operations can wipe unstaged changes. Always git add and git commit immediately after editing these files.
Embed
The page generates an <iframe> embed snippet pointing at /singularity-widget/. The widget page is _pages/singularity-widget.md (layout: widget). The JS in the tracker page auto-generates the embed code shown in the “embed” section of the UI.