{"id":50119375,"url":"https://github.com/refract-org/refract","last_synced_at":"2026-05-23T18:01:37.408Z","repository":{"id":357702425,"uuid":"1238081743","full_name":"refract-org/refract","owner":"refract-org","description":"Open infrastructure for agent-readable knowledge change. Turns source histories into replayable semantic change events.","archived":false,"fork":false,"pushed_at":"2026-05-23T01:53:33.000Z","size":812,"stargazers_count":0,"open_issues_count":4,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-23T03:28:00.358Z","etag":null,"topics":["claim-tracking","cli","knowledge-change","mcp","mediawiki","provenance","revision-history","semantic-events","typescript","wikipedia"],"latest_commit_sha":null,"homepage":"https://refract-org.github.io/refract-docs/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/refract-org.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":".github/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":".github/CODEOWNERS","security":".github/SECURITY.md","support":".github/SUPPORT.md","governance":null,"roadmap":"ROADMAP.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null},"funding":{"github":"nextconsensus"}},"created_at":"2026-05-13T19:49:06.000Z","updated_at":"2026-05-23T01:51:16.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/refract-org/refract","commit_stats":null,"previous_names":["nextconsensus/wikipedia-provenance","var-ia/var-ia","refract-org/refract"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/refract-org/refract","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/refract-org%2Frefract","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/refract-org%2Frefract/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/refract-org%2Frefract/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/refract-org%2Frefract/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/refract-org","download_url":"https://codeload.github.com/refract-org/refract/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/refract-org%2Frefract/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33406444,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-23T04:15:53.637Z","status":"ssl_error","status_checked_at":"2026-05-23T04:15:53.242Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["claim-tracking","cli","knowledge-change","mcp","mediawiki","provenance","revision-history","semantic-events","typescript","wikipedia"],"created_at":"2026-05-23T18:01:33.507Z","updated_at":"2026-05-23T18:01:37.392Z","avatar_url":"https://github.com/refract-org.png","language":"TypeScript","funding_links":["https://github.com/sponsors/nextconsensus"],"categories":[],"sub_categories":[],"readme":"# Refract\n\n[![CI](https://github.com/refract-org/refract/actions/workflows/ci.yml/badge.svg)](https://github.com/refract-org/refract/actions/workflows/ci.yml)\n[![Version](https://img.shields.io/github/v/release/refract-org/refract)](https://github.com/refract-org/refract/releases)\n[![License: AGPL-3.0](https://img.shields.io/badge/license-AGPL--3.0-0f172a.svg)](./LICENSE)\n\n\n\u003e **v0.5.0+**: Events now carry 6 deterministic enrichment fields ([editMagnitude](#), [directionSignal](#), [certaintyProfile](#), etc.) — byte-reproducible, no model.\n\n**Open infrastructure for agent-readable knowledge change.**\n\n\u003e Refract turns source histories into replayable semantic change events about claims, citations, and evidence bindings — so AI systems and human teams can reason over how knowledge became current.\n\nRefract is an open observation layer for changing knowledge. It ingests versioned and semi-versioned sources, computes structural and semantic change events, tracks claims and citations across time, and emits structured provenance events that downstream systems can query, replay, and audit.\n\nMost knowledge systems answer *what does this source say now?* Refract helps answer *what changed, when, where, and what did the record say at a specific point in time?*\n\nBuilt and maintained by [NextConsensus](https://nextconsensus.com) and [Kanav Jain](https://kanav.net) — founding PM, Doximity Dialer (300K clinicians); co-founder \u0026 CEO, Andwise; clinical AI safety evaluation via [Ethotechnics Studio](https://ethotechnics.com). Domain-neutral infrastructure. Refract observes change. Applications interpret relevance.\n\n[Repository boundary](./docs/repository-boundary.md).\n\n---\n\n## Core Concepts\n\n| Concept | Definition |\n|---------|-----------|\n| Source | A document, page, wiki, guideline, policy, or other knowledge artifact. |\n| Version | A captured state of a source at a point in time. |\n| Semantic Change Event | A structured representation of a meaningful change — a claim appearing, a citation shifting, a section moving, a dispute marker appearing. |\n| Claim | A discrete assertion detected or tracked across versions. |\n| Evidence Binding | The relationship between a claim and the sources used to support it at a given time. |\n| Replay | Reconstructing source state or claim state at a past time. |\n| Knowledge-State Memory | The system's ability to answer \"what did we know then?\" and \"what changed since?\" |\n\nRefract emits 26 deterministic event types — no model, no API, byte-reproducible on every run. These events are the substrate that provenance-aware systems build on.\n\n---## Why It Exists\n\nMachines do not just need more retrieved text. They need provenance, instability,\ndisagreement, and temporal change — six things that a current snapshot cannot provide:\n\n1. **Where it appeared** — when a claim first entered the public record\n2. **How it changed** — every addition, removal, reintroduction, and in-place modification\n3. **What was tagged** — policy templates, dispute signals, maintenance markers\n4. **What was reverted** — every revert, edit cluster, concentrated contestation\n5. **What moved** — section reorganization, lead promotion, category shifts, page moves\n6. **What was discussed** — correlated talk page activity, thread lifecycle, activity spikes\n\nRefract makes that knowledge legible to machines by decomposing every statement\ninto its history. That is more durable than search, monitoring, or summarization.\n\n## What It Does\n\nGiven a MediaWiki page, the engine produces a structured event stream with 26\ndeterministic event types:\n\n| Category | What Refract captures |\n|----------|---------------------|\n| **Appearance** | `sentence_first_seen`, `sentence_removed`, `sentence_modified`, `sentence_reintroduced` |\n| **Citations** | `citation_added`, `citation_removed`, `citation_replaced` |\n| **Templates** | `template_added`, `template_removed`, `template_parameter_changed` |\n| **Sections** | `section_reorganized`, `lead_promotion`, `lead_demotion` |\n| **Reverts** | `revert_detected`, `edit_cluster_detected` |\n| **Links \u0026 categories** | `wikilink_added`, `wikilink_removed`, `category_added`, `category_removed` |\n| **Page metadata** | `page_moved`, `protection_changed` |\n| **Talk page** | `talk_page_correlated`, `talk_thread_opened`, `talk_thread_archived`, `talk_reply_added`, `talk_activity_spike` |\n\n## Who This Is For\n\n- **Investigative journalists** — trace how a claim about a public figure evolved\n  across revision history: when it was added, who softened it, when sources\n  appeared or disappeared\n- **Wikipedia editors** — audit how policy templates (NPOV, BLP, due-weight)\n  correlate with content changes over time\n- **Data scientists \u0026 researchers** — deterministic features for edit-quality\n  models, sourcing-behavior studies, content-drift measurement\n- **OSINT analysts** — structured event streams from public editorial history,\n  reproducible on request\n- **Fan wiki communities** — canon disputes, headcanon drift, content-fork\n  detection across MediaWiki instances\n- **AI/ML teams** — training data curation (include stable, well-sourced claims; exclude contested or source-fragile ones), provenance-aware RAG, temporal leakage detection in training corpora\n- **Regulatory \u0026 compliance monitors** — track changes to drug safety pages, guideline entries, and policy language for early signals of institutional shifts\n- **Knowledge graph engineers** — extract entity and relationship changes across revision history for evolving ontologies\n- **Publishers \u0026 platform trust teams** — monitor how claims spread, get cited, and stabilize across the public record\n\n## What Downstream Systems Build\n\nEach consumer brings their own interpretation layer on top of Refract's deterministic event stream:\n\n| Consumer | They build | How they use Refract |\n|----------|-----------|---------------------|\n| **Healthcare intelligence** | Sourced briefs answering \"does this claim still hold up?\" | Feed structured events into a 4-lane measurement pipeline (clinical truth, ratification, economic stake, feasibility). Each event carries `FactProvenance` with the exact thresholds used. |\n| **AI training data curation** | Training datasets filtered by claim stability | Score each claim by revert count, citation churn, talk page correlation, and template dispute history from the event stream. Include only claims above a stability threshold. |\n| **Provenance-aware RAG** | Retrieval that weights results by claim stability | Enrich each retrieved chunk with its claim history — stable, recently changed, source-fragile, contested. The RAG system uses the signal to filter or demote low-confidence results. |\n| **Regulatory monitoring** | Early-warning dashboards for policy changes | Run `refract cron` on drug pages, guideline entries, and regulatory topics. When new events fire (citation removal, template dispute, section reorganization), alert the monitoring team with the structured diff. |\n| **Competitive intelligence** | Cross-jurisdiction claim divergence maps | Use `refract diff` to compare the same topic across wikis (English vs German Wikipedia, Fandom vs independent wiki). Track how framing differs and when it diverged. |\n| **Fact-checking** | Claim provenance timelines | Given a claim text, query its lifecycle across the event stream — first appearance, source additions, revert history, talk page correlation, stabilization time. Return a verifiable timeline. |\n| **Academic research** | Large-scale knowledge dynamics studies | Export `ObservationReport` with Merkle-verifiable claim histories. Run cohort analyses on claim stability across topics, time periods, and editorial environments. |\n| **Journalism forensics** | Edit pattern analysis for public figures | Track how a specific claim about a person or topic evolved. Look for coordinated editing, source softening, or removal without replacement. |\n| **Fan wiki canon tracking** | Canon divergence detection across competing wikis | Compare the same fictional universe's page across Fandom and independent wikis. Detect when one wiki retcons content while the other doesn't — and by how much. |\n| **Knowledge graph engineering** | Evolving ontologies from category and link changes | Use `refract analyze --depth forensic` to capture category_added/removed and wikilink_added/removed events. Build an entity graph that evolves with the public record. |\n\nThe common architecture: **Refract extracts the mechanical facts. The downstream system interprets what those facts mean for its domain.** No interpretation enters Refract's pipeline; no consumer re-extracts from raw revision history.\n\n\n## Why Refract Over Raw Wikipedia API?\n\nYou could write a script that calls the Wikipedia API and parses diffs.\nMany people do. Here is what Refract gives you that a raw script does not:\n\n| Raw API script | Refract |\n|---------------|---------|\n| You parse revision diffs | 26 deterministic event types, already classified |\n| You track citations manually | Citation add/remove/replace with source lineage |\n| You guess at section changes | Section-aware diffs with movement, promotion, demotion |\n| You detect reverts by pattern matching | 6 regex patterns + edit cluster detection |\n| You correlate talk pages by hand | Automatic talk-page correlation and activity spikes |\n| Your output format is ad-hoc | Standardized JSON/NDJSON with deterministic event IDs |\n| You write your own replay logic | Replay manifests with Merkle proofs for auditability |\n| You maintain your own Wikipedia client | Rate limiting, retries, auth, pagination — built in |\n| Your results change when you re-run | Byte-reproducible — same input, same output every time |\n| You build your own timeline | Timeline builder with claim lifecycle tracking |\n\nRefract is not magic. It is the 800+ lines of brittle Wikipedia analysis code\nyou would otherwise write and maintain, packaged as a deterministic,\nversioned, testable engine. See `examples/04-from-scratch-to-refract.ts`\nfor a side-by-side comparison.\n\n\n## Complementary technologies\n\nRefract pairs naturally with modern tools. The event stream is standard NDJSON — anything that reads JSON or speaks HTTP can consume it. See the [integrations docs](https://refract-org.github.io/refract-docs/integrations/) for full details.\n\n| Category | Technology | How they fit |\n|----------|-----------|-------------|\n| **Python / data science** | pandas, Jupyter, matplotlib | `refract-py` wraps the CLI and exports typed DataFrames. [Tutorial](https://refract-org.github.io/refract-docs/tutorials/python-sdk/) |\n| **Vector databases** | Pinecone, Weaviate, pgvector | Store claim embeddings alongside stability metadata. Query: \"find claims like X that are stable and well-sourced.\" |\n| **RAG frameworks** | LangChain, LlamaIndex | Use Refract's stability signals as retrieval filters or reranking features. [LangChain loader](https://github.com/refract-org/refract-py/blob/main/src/refract_langchain.py) available in refract-py. |\n| **AI coding agents** | Claude Code, Cline, Codex CLI, OpenClaw | Agents connect via Refract's built-in MCP server (`refract mcp`) to read claim history and cite provenance. |\n| **MCP (Model Context Protocol)** | Any MCP client | `refract mcp` is a native MCP server with tools for analyze, claim, export, cron, and classify. |\n| **Data query** | DuckDB, ClickHouse | Query NDJSON output with SQL: `SELECT event_type, count(*) FROM 'events.jsonl' GROUP BY event_type;` |\n| **Monitoring** | Slack, Email, Webhooks, GitHub Actions | `refract cron` + `--notify-slack` for scheduled monitoring with alerts. [Tutorial](https://refract-org.github.io/refract-docs/tutorials/scheduled-monitoring/) |\n| **Streaming** | Kafka, Redpanda, Cloudflare Queues | Each `EvidenceEvent` is a message keyed by claimId for real-time monitoring. |\n| **Visualization** | Observable Framework, Mermaid, D3 | `refract visualize --format mermaid` produces Mermaid diagrams. Observable has a `@refract-org/observable` data loader. |\n| **Model serving** | OpenAI API, DeepSeek, Ollama, vLLM, Workers AI | Any OpenAI-compatible endpoint plugs into `refract classify`. Workers AI runs at the edge. |\n| **Local inference** | WebGPU, MLX, llama.cpp | Run detection models on-device — no API key needed. Refract defaults are mechanical; any boundary can use a local model via Ollama or MCP sampling. |\n| **Notebooks** | Jupyter, Marimo, Observable | Load events into a DataFrame: `pd.read_json(\"events.jsonl\", lines=True)`. Marimo's reactive runtime is ideal for live event stream analysis. |\n| **Serverless** | Cloudflare Workers, D1, R2 | Run `refract` via `npx` in a Worker. Store events in D1, export to R2, queue re-observations. Entirely edge-deployable. |\n\n## Quick Start\n\nThe fastest way to understand what Refract does:\n\n```bash\n# 1. Run the guided onboarding (recommended first step)\nnpx @refract-org/cli init\n\n# 2. Analyze any page\nnpx @refract-org/cli analyze \"Bitcoin\" --depth brief\n\n# 3. Open the local web explorer (starts a server at localhost:8899)\nnpx @refract-org/cli explore \"Bitcoin\"\n\n# 4. Export as JSON for your own tools\nnpx @refract-org/cli analyze \"Bitcoin\" --json | jq .events[0]\n\n# 5. Export as structured data\nnpx @refract-org/cli export \"Bitcoin\" --format ndjson \u003e bitcoin-events.ndjson\n```\n\n\u003e **What you're seeing**: Refract reports deterministic, reproducible claim and citation changes. It does not decide whether a change is true or important — that's for downstream applications.\n\n\n\u003e **Install once, run fast**: `npx` downloads on every run (~20s cold start).\n\u003e For repeated use: `bun add @refract-org/cli` (install once, `refract` command available instantly).\n\n### Other install options\n\n| Method | Command |\n|--------|---------|\n| **Bun** (if installed) | `bunx @refract-org/cli analyze \"Bitcoin\"` |\n| **Bun** (one command) | `bunx @refract-org/cli analyze \"Bitcoin\"` |\n| **Local install** | `bun add @refract-org/cli \u0026\u0026 refract analyze \"Bitcoin\"` (or `wikihistory`) |\n| **Build from source** | `git clone https://github.com/refract-org/refract \u0026\u0026 cd refract \u0026\u0026 bun install \u0026\u0026 bun run build` |\n\n### Use individual packages\n\n```bash\nbun add @refract-org/evidence-graph @refract-org/analyzers\n```\n\n```ts\nimport type { EvidenceEvent, Revision } from \"@refract-org/evidence-graph\";\nimport { sectionDiffer, citationTracker } from \"@refract-org/analyzers\";\n```\n\n## Packages\n\n| Package | npm | Description |\n|---------|-----|-------------|\n| `@refract-org/evidence-graph` | [![npm](https://img.shields.io/npm/v/@refract-org/evidence-graph)](https://www.npmjs.com/package/@refract-org/evidence-graph) | Core types, schemas, BYO-inference boundaries |\n| `@refract-org/ingestion` | [![npm](https://img.shields.io/npm/v/@refract-org/ingestion)](https://www.npmjs.com/package/@refract-org/ingestion) | Wikimedia API adapters — fetching, diffing, rate limits |\n| `@refract-org/analyzers` | [![npm](https://img.shields.io/npm/v/@refract-org/analyzers)](https://www.npmjs.com/package/@refract-org/analyzers) | Deterministic analyzers — sections, citations, reverts, templates |\n| `@refract-org/cli` | [![npm](https://img.shields.io/npm/v/@refract-org/cli)](https://www.npmjs.com/package/@refract-org/cli) | CLI tool — `refract` / `wikihistory` commands, `classify` inference |\n| `@refract-org/persistence` | — | Local SQLite persistence (bun:sqlite, not published) |\n| `@refract-org/eval` | [![npm](https://img.shields.io/npm/v/@refract-org/eval)](https://www.npmjs.com/package/@refract-org/eval) | Evaluation harness — ground truth validation and benchmarks |\n| `@refract-org/observable` | — | Observable Framework data loader (not published) |\n\n## How It Compares\n\nRefract tracks **claim provenance** — structured evidence linking a claim's lifecycle\nto specific revisions, sources, and policy signals. It complements existing tools:\n\n| Tool | What it does | What Refract adds |\n|------|-------------|-----------------|\n| **WikiWho** | Sentence-level authorship (who wrote which token) | Sentence lifecycle: when a sentence first appeared, was removed, rewrote, or was reintroduced |\n| **ORES** | ML edit quality scores (likely damaging, good-faith) | Deterministic edit classification + policy-coded signals |\n| **XTools** | Edit stats, page history summaries, top editors | Structured event stream: section changes, citation turnover, template diffs, page moves, category shifts |\n| **PetScan** | Category intersection queries across pages | Category evolution per-page over time |\n\n## Architecture\n\nThe engine follows a two-knowledge-split:\n\n1. **Deterministic**: Wikipedia API ingestion, diff computation, section\n   extraction, citation tracking, template classification, revert detection —\n   byte-reproducible, no model involved.\n2. **Outcome labels**: Independently sourced ground truth (talk page\n   consensus, page protection events) — never redefined by the pipeline.\n\n[Full architecture](./ARCHITECTURE.md)\n\n## Configurable heuristics / BYO-inference boundaries\n\nEvery analyzer threshold is a typed function signature where a model can replace the default heuristic. The defaults work offline with no configuration required:\n\n| Boundary | Default (mechanical) | Plug in a model to decide |\n|----------|----------------------|---------------------------|\n| Sentence similarity | Word-overlap ratio (0.8) | \"Are these two sentences the same claim?\" |\n| Revert detection | 6 regex patterns | \"Is this edit comment a revert?\" |\n| Template classification | Name-to-type lookup | \"What policy signal does this template represent?\" |\n| Edit cluster detection | Time window + min size | \"Are these edits semantically related?\" |\n| Heuristic classification | Size thresholds + comment patterns | \"What kind of edit is this?\" |\n\nPass overrides via `--config` file or inline CLI flags (`--similarity`, `--spike-factor`, `--cluster-window`, etc.). The effective parameters are recorded in each event's `FactProvenance.parameters` when non-default values are used.\n\n```bash\n# Domain-tuned: Fandom wikis have tighter edit clusters\nrefract analyze \"Darth_Vader\" --api https://starwars.fandom.com/api.php --cluster-window 30 --similarity 0.85\n```\n\n## Private Instances\n\nRefract connects to any MediaWiki instance — corporate wikis, institutional\nknowledge bases, private fan wikis. Use the `--api` flag with the wiki's\n`api.php` URL.\n\n### Authentication\n\n| Method | CLI flags | Description |\n|--------|-----------|-------------|\n| Bearer token | `--api-key \u003ctoken\u003e` | Sends `Authorization: Bearer \u003ctoken\u003e` with every request |\n| Basic auth | `--api-user \u003cuser\u003e --api-password \u003cpass\u003e` | Sends HTTP basic auth credentials |\n| OAuth2 | `OAUTH_CLIENT_ID` + `OAUTH_CLIENT_SECRET` env vars | Sends `X-OAuth-Client-Id` and `X-OAuth-Client-Secret` headers |\n\nAll three methods work with every command:\n\n```bash\n# Bearer token\nrefract analyze \"Page\" --api https://corp-wiki.example.com/w/api.php --api-key \"sk-...\"\n\n# Basic auth\nrefract analyze \"Page\" --api https://corp-wiki.example.com/w/api.php --api-user \"admin\" --api-password \"...\"\n\n# OAuth2 (via env vars)\nOAUTH_CLIENT_ID=\"...\" OAUTH_CLIENT_SECRET=\"...\" \\\n  refract analyze \"Page\" --api https://corp-wiki.example.com/w/api.php\n```\n\nCredentials are never logged or exposed in error messages.\n\n### Local Docker Testing\n\nA Docker Compose setup is available for testing against a local MediaWiki\ninstance with auth:\n\n```bash\ncd docker\ndocker compose up -d\nDOCKER_TESTS=true bun run test\n```\n\nThis starts MediaWiki at `http://localhost:8080` and an nginx proxy with basic\nauth at `http://localhost:8081`. The auth integration tests validate bearer\ntoken, basic auth, and OAuth2 paths.\n\n## Beyond Wikipedia\n\nRefract works on any public MediaWiki instance — Fandom.com, independent fan wikis,\nprivate wikis. Wikipedia's editorial norms suppress the most interesting dynamics;\nfandom wikis don't.\n\n| Dynamic | What Refract captures |\n|---------|-------------------|\n| **Canon disputes** | `category_removed`: `Canon characters` → `category_added`: `Legends characters` after the 2014 Disney acquisition |\n| **Headcanon drift** | \"Vader turned because of fear of loss\" vs \"pride and ambition\" — reversibly edited, both cite the same films |\n| **Warring wikis** | Cross-wiki diff detects a Game of Thrones Fandom wiki fork vs parallel evolution on an independent ASOIAF wiki |\n| **Decade-spanning consensus** | 2008 talk page consensus about what's canon, overturned in 2023 — L3 outcome labels with temporal validity windows |\n\nIf the engine handles fandom, it handles anything.\n\n## What It Is Not\n\n| Category | Why |\n|----------|-----|\n| Truth detector | Reports what changed, not whether the change is accurate |\n| Model interpreter | No LLM in the pipeline — interpretation lives downstream in consumers |\n| Editor quality judge | No scoring, ranking, or profiling of individual editors |\n| Prediction engine | No forecasting, no sentiment analysis, no trend extrapolation |\n| Live monitor | Polling-based, not real-time — use `cron` mode for scheduled observation |\n| Healthcare scorer | Domain-agnostic by design — no clinical, regulatory, or payer logic |\n\n## License\n\nAGPL-3.0. See [LICENSE](./LICENSE).\n\nIf you modify this software and deploy it as a network service, you must release\nyour modifications.\n\n**Commercial use:** NextConsensus offers commercial licenses for proprietary\nintegration without AGPL obligations. See [nextconsensus.com](https://nextconsensus.com).\n\n## Community\n\n- [Contributing](./CONTRIBUTING.md) — how to get started\n- [Good first tasks](./ROADMAP.md) — ready-to-pick-up work items\n- [Discussions](https://github.com/refract-org/refract/discussions) — questions, ideas\n- [Code of Conduct](./.github/CODE_OF_CONDUCT.md)\n- [Security](./.github/SECURITY.md)\n- [Changelog](./CHANGELOG.md)\n- [Cite this software](./CITATION.cff)\n\n## Ecosystem\n\nThese repos extend the core engine:\n\n| Repo | Purpose |\n|------|---------|\n| [refract-docs](https://github.com/refract-org/refract-docs) | Public documentation site — [integrations](https://refract-org.github.io/refract-docs/integrations/), quickstart, CLI, SDK, tutorials |\n| [refract-labs](https://github.com/refract-org/refract-labs) | Experimental probes applying the engine to adjacent verticals |\n| [refract-ui](https://github.com/refract-org/refract-ui) | Standalone visualization — load JSONL, render timelines, diffs, citations |\n| [refract-demo-data](https://github.com/refract-org/refract-demo-data) | Safe, fictional datasets for the eval harness (no real PII or medical data) |\n| [refract-py](https://github.com/refract-org/refract-py) | Python SDK — typed dataclasses and pandas integration for ML workflows |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frefract-org%2Frefract","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frefract-org%2Frefract","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frefract-org%2Frefract/lists"}