Skip to content

singularity atlas.stub

Nicolas Cravino edited this page Aug 22, 2026 · 1 revision

id: singularity-atlas name: The Singularity Atlas repo_path: ~/Documents/sw30labs/repos/singularity-atlas remote_url: https://github.com/sw30labs/singularity-atlas.git primary_language: Python framework: LangGraph + FastAPI + Neo4j (local Ollama, optional) category: agentic-frameworks stacks: [langgraph, agentic, rag, cli] ingested: 2026-08-22 last_commit_date: 2026-08-19

The Singularity Atlas

Purpose

A local situational-awareness dashboard for the AI build-out. The news of models, fabs, capital, robots and launches does not arrive as one story; the Atlas fuses those public feeds into a 3D globe, eight live vectors, a composite Singularity Index, and a daily brief — "so you can watch the approach in one place instead of fourteen tabs." v0.1.0, Apache-2.0. No API keys, no account, nothing uploaded.

What it renders

  • Globe — datacenters, fabs, labs and launch pads (plus upcoming launches), geolocated AI signals, and co-mention flow arcs, on globe.gl.
  • Eight vector panels — Capability · Compute · Capital · Embodiment · Agency · Security · Space · Culture.
  • Singularity Index — composite 0–100 with eight sub-indices, a sparkline, and a Stross epoch dial (Slow Takeoff → Point of Inflexion → Singularity) counting down to 2045.
  • Convergence radar — entities crossing ≥2 streams within 72 hours, clickable to a constellation view.
  • The Daily Loop — today's edition written on-machine by qwen3 via Ollama, or by heuristics when the model is down.
  • Loop ArchiveInnermost Loop editions kept current from the author's public Substack feed, seeded into the graph and full-text searchable.

Architecture

singularity_atlas/ (~2,700 lines) over Neo4j, served by FastAPI/uvicorn with a vanilla-JS frontend in web/:

  • innermost_loop.py (413) and loop_archive.py (185) / loop_sync.py (191) — archive ingestion, daily feed sync, and search.
  • store.py (371) — the Neo4j layer; pipeline.py (322) — the LangGraph ingest cycle.
  • feeds.py (292) — public feed fetchers, smoke-testable as a module.
  • taxonomy.py (230), scoring.py (106) — vector classification and index computation.
  • config.py (196) — single config surface: feeds, vector weights, epoch years, globe site catalog, ports, model name. Env overrides ATLAS_PORT, ATLAS_NEO4J_URI, ATLAS_NEO4J_PASSWORD, ATLAS_MODEL, OLLAMA_HOST.
  • scheduler.py (83) — APScheduler, in-process.

Scheduling is deliberately in-process: ingest runs every 15 minutes inside the dashboard process via APScheduler, not cron, so it stops when uvicorn does. POST /api/ingest forces a cycle, POST /api/brief/regenerate re-synthesizes the day's edition, POST /api/archive/sync pulls the feed immediately. /api/feeds reports per-feed health (last fetch, item count, errors); /api/state.loop_sync reports when the archive feed was last checked.

Degradation stance

The LLM is optional by construction — every panel falls back to heuristics when Ollama is offline. setup_and_run.sh is the canonical entry point (--setup-only, --no-tests, --sync); it runs one ingest before serving so the dashboard is not empty on first paint, and clears a stale instance holding the port, since a forgotten dashboard keeps ingesting in the background.

Licence scope — third-party content

The repo draws an explicit boundary the other repos here do not need. Apache-2.0 covers repository code only. ref/ is gitignored and never redistributed: a local Accelerando (Charles Stross, CC BY-NC-ND 2.5) and a local Innermost Loop archive (Dr. Alex Wissner-Gross, all rights reserved) may sit on a developer's machine but do not ship. The 2026-08-19 commit — the tip of this ingest — is titled "Stop publishing Accelerando; keep the local copy gitignored." A fresh clone therefore starts with an empty archive until the daily sync populates data/loop_issues/ from the public feed (latest 20 editions). NOTICE records the full attribution.

Dependencies

apscheduler ≥3.11.3, fastapi ≥0.141.1, feedparser ≥6.0.14, httpx ≥0.28.1, langgraph ≥1.2.11, neo4j ≥6.2.0, pydantic ≥2.13.4, uvicorn[standard] ≥0.52.3. Python ≥3.12, built with uv_build and managed by uv (uv.lock committed). Neo4j runs from docker-compose.yml on :7476 / bolt :7689. Dashboard on :8055.

CI/CD

No CI workflows. 12 pytest modules under tests/ with a conftest.py and an integration marker for tests needing the Neo4j container (skipped otherwise); addopts = "-q".

Entities and topics

  • wiki-vs-rag — the org's other retrieval-shaped experiment over a curated corpus
  • loopscope — the other August 2026 addition to this category; both are local dashboards over a running process
  • gitnexus-fleet — the other graph-database project here (KuzuDB rather than Neo4j)
  • Tags: [python, langgraph, rag, cli, fastapi, llm, local-inference]

Clone this wiki locally