Syntology Docs

Syntology — orientation

{: .fs-9 }

A provenance-first knowledge graph of AI/ML research — papers, authors, venues, citations, methods, datasets, concepts, reviews, code repositories, and verified code samples — served to humans at syntology.ai / app.syntology.ai and to agents over REST and MCP. {: .fs-6 .fw-300 }

Architecture{: .btn .btn-primary .fs-5 .mb-4 .mb-md-0 .mr-2 } File catalog{: .btn .fs-5 .mb-4 .mb-md-0 }


What it is (one paragraph)

Syntology indexes AI/ML research into a Neo4j graph where every edge carries provenance (deterministic:*, derived:*, llm:*, measured, …). Humans get a marketing site, Atlas citation map, and demo/API surfaces; agents get trial tokens, /api/graph/ask, and an MCP server with typed tools. The graph is built by a local batch pipeline (codename canebrake) on a Mac writer machine and served from Neo4j Aura; the public edge is a Cloudflare Worker; the query API + MCP run on AWS App Runner.

Live product framing for agents: public/llms.txt and /developers.


5-minute system map

 browser / agent
      │
      ▼
 Cloudflare Worker (worker.js + modules, public/ assets)
      │  /api/graph/*, /mcp, /api/atlas/*, billing, trial tokens
      │  KV · Turnstile · Stripe · Aura HTTP (pulse/slice/atlas)
      ▼
 AWS App Runner — uvicorn main:app (Dockerfile.api)
      │  /graph/ask · templates · MCP · reviewer-bot
      ▼
 Neo4j Aura Professional
      ▲
      │  writer: local Mac (launchd + canebrake stages + WriteLedger)
 Local ingestion / enrichment / code harvest / QC
RuntimeWhereMain codeCredential tier
Site + edge APICloudflare Workersworker.js, *.js, public/Aura HTTP as syntology_web (RO); Stripe; KV
Query API + MCPAWS App Runner syntology-apimain.py, mcp_server.py, query_engine/syntology_api_reader (RO); Bedrock via task role
Ingestion / QCLocal MacNN_*.py, load_*.py, run_*.sh, groundwork/syntology_loader (write); admin break-glass

Three runtimes share one repository but not one process. The ~130GB corpus (PDFs, TEI, parsed JSON) is not in git — it lives under a local corpus root (canebrake_corpus → working set) with S3/Glacier backup.


How to read these docs (black-box → white-box)

This project grew fast (“vibe-coded” with mechanical provenance standards bolted on). Docs here are intentionally layered:

  1. Black box — this page + Architecture: what exists, who talks to whom, what is live vs illustrative.
  2. Subsystem prose — Serving, Edge/CF, Ingestion, Graph & ledger, Code harvest, Frontend / Atlas, Ops / deploy, Modular candidate.
  3. White box — File / module catalog: path → role → inputs → outputs → interactions → risks. Honest gaps beat invention.
  4. Fragility — Security & fragility (key names only; link out to incident / review docs).
  5. Contributor path — Reading order: which root markdown to trust when local main leads origin/main.

External deep dives (repo root, not always present on every branch): ARCHITECTURE.md, REVIEW_FINDINGS.md, UPGRADE_CANDIDATE.md, STANDARDS.md / USAGE.md / QC_PROCESS.md, SECURITY_INCIDENT_2026-08-21.md, CLAUDE.md. See Reading order.


What’s covered vs deferred

Covered hereDeferred / elsewhere
Topology, credentials tiers (names), pipeline stages, serving pathsLive graph counts (change daily — use python -m syntology census when available)
Important module roles and known risksExhaustive listing of every root *.py / every groundwork lane artifact
How to enable GitHub Pages from /docsAuto-generated API reference from OpenAPI
Pointers to security findingsSecret values, PEM contents, .env

Local main may lead origin/main by hundreds of commits; a refresh pass after merge timing makes sense is expected.