The web-readable foundation for live, AI-verifiable research papers.
Full Documentation · uv pip install scitex-live-paper[all]
| # | Problem | Solution |
|---|---|---|
| 1 | A PDF is dead — you cannot click a claim, see the code that produced it, re-run it, or check provenance. | Live-paper renderer — turns an accepted manuscript bundle into a page where every claim is hash-linked to the executable artefact that produced it. |
| 2 | Verification rots — a badge stamped at acceptance says nothing about whether the claims still hold after the code moved on. | Live re-verify (M2 shipped) — per-claim and bulk verify endpoints call scitex-clew against the live project so the badge tracks a continuous re-review cycle. |
| 3 | Claim-model drift — every consumer re-defines Claim slightly differently until nothing interoperates. |
Deliberately thin consumer — the claim model is owned upstream by scitex-clew; this package reads it, never extends it. |
from scitex_live_paper import bundle
loaded = bundle.load("./bundle/")
print(len(loaded.claims), "claims,", loaded.paper_state.stage)# Render the static site (viewer + claims sidebar + DAG + index)
scitex-live-paper render ./bundle/ --out ./site/For a runnable walk-through see examples/example_live_paper.py.
A runnable load-and-summarise demo lives in
examples/example_live_paper.py
(run every example with
examples/00_run_all.sh):
python examples/example_live_paper.py
# bundle: bundle-min
# claims: 3
# manuscript: manuscript.pdf
# paper stage: preprintuv pip install "scitex-live-paper[all]"
pip install "scitex-live-paper[all]"
pip install scitex-live-paper # CLI + library onlyRecommended:
uv pip install scitex-live-paper[all]— uv's Rust resolver handles the SciTeX dep set in 1-3 min where pip's serial backtracker can take 30+ min on the full extras. Plainpip installstill works, as shown above.
Extras matrix
| Extra | Pulls | For |
|---|---|---|
django |
django>=4.2 |
standalone serve + scitex-hub mount |
server |
django>=4.2 + scitex-sdk[gui] |
serve via the SDK workspace shell (superset of django) |
clew |
scitex-clew>=0.1.0 |
live re-verify (M2) |
mcp |
fastmcp>=2.0 |
MCP server for agents |
test |
pytest>=8.0 |
test suite |
all |
everything above | the one install line operators need |
Table 1. Optional-dependency extras.
Without [clew] the M2 api/claim/verify and api/claims/verify
endpoints stay reachable but degrade gracefully (every per-claim
response carries fallback: true + a clear reason); install
[clew] to get the real verify_claim() call.
Working on
scitex-live-paperitself? See Dev quickstart — editable install, render the in-tree fixture bundle, bundle-layout contract, and where the Django app pattern is mirrored from.
scitex-live-paper is deliberately thin. It is a consumer /
rendering layer, not an authority on claims. If a feature requires
extending the claim or DAG model, the change belongs upstream in
scitex-clew, not here.
flowchart TD
bundle["accepted manuscript bundle<br/>(LaTeX + claims.json + DAG + figz + provenance)"] --> lp["scitex-live-paper<br/>(thin renderer)"]
lp --> viewer["viewer (PDF.js)"]
lp --> claims["claims panel"]
lp --> dag["DAG nav (mermaid)"]
lp --> badge["badge (verification status)"]
Figure 1. Bundle in, four surfaces out — the package renders, upstream owns the models.
| Concern | Owner | This package's role |
|---|---|---|
Claim data model, VerificationStatus, DAG |
scitex-clew |
reads only — never defines, never mutates |
| Hash-linked provenance graph | scitex-clew |
reads clew.dag() / clew.verify_claim() outputs |
| Manuscript bundle layout | scitex-writer |
ingests the bundle as-is |
| Acceptance + re-review verdicts | scitex-agentic-journal |
receives accepted bundle, surfaces badge |
| Auth / Django app surface | scitex-hub |
mounted on /apps/live-paper/ (M3 shipped) |
Table 2. Ownership boundaries — who owns what.
| Milestone | Status | Goal |
|---|---|---|
| M1 | shipped | Read-only static-site renderer for an accepted bundle (CLI) |
| M2 | shipped | Live re-verify (api/claim/verify + api/claims/verify + SPA Re-verify button) — see runbook |
| M3 | shipped | Django app on scitex-hub at /apps/live-paper/ + standalone SDK GUI app (serve, 0.2.x) |
| M4 | pending | Re-review badge fed from scitex-agentic-journal |
| M5 | future | Public DOI landing page (sandbox → Zenodo → JaLC) |
Table 3. Milestone roadmap.
Issues for M1 are filed in this repo — see open issues.
Python API (primary)
from scitex_live_paper import BundleContext, BundleSource, PaperState, bundle
loaded = bundle.load("./bundle/")CLI
scitex-live-paper render ./bundle/ --out ./site/ emits the static
site; scitex-live-paper serve ./bundle/ boots the standalone SDK
GUI app pinned to a bundle (requires the [server] extra); python -m scitex_live_paper works too. Agent-facing surfaces: scitex-live-paper mcp
(FastMCP tools projecting the Python API, [mcp] extra) and the
scitex.livepaper.renderers entry-point group + conformance kit for
external figure/snippet/claim-graph adapters — see
consumer guide.
Django app
Mounted under scitex-hub at /apps/live-paper/ (M3 shipped): SPA shell +
<path:endpoint> API dispatcher backed by the HANDLERS registry.
Host apps inject per-request bundle resolution via
scitex_live_paper.mount(resolver=...). The same engine also runs
standalone: scitex-live-paper serve ./bundle/ boots the SDK
workspace shell (scitex_sdk.app.embed.run_standalone) for local
use, demo, and testability.
| Variable | Set by | Read by | Purpose |
|---|---|---|---|
SCITEX_LIVE_PAPER_BUNDLE |
serve CLI / operator |
bundle cache | bundle path pinned for the process |
SCITEX_CLEW_DB_PATH |
— (retired) | — | retired — clew has no database file |
SCITEX_STORE_DSN |
operator | scitex-clew |
clew's store switch (owned by clew, not this package) |
Table 4. Environment variables referenced by this package.
scitex-live-paper is part of SciTeX.
Upstream dependencies (this package consumes them; it does not define their models): scitex-clew (claim model, DAG, verification), scitex-writer (bundle layout + Django viewer pattern), scitex-hub (Django host, auth), scitex-ui (viewer widgets). Producer: scitex-agentic-journal (accepted bundle + re-review verdicts).
Four Freedoms for Research
- The freedom to run your research anywhere — your machine, your terms.
- The freedom to study how every step works — from raw data to final manuscript.
- The freedom to redistribute your workflows, not just your papers.
- The freedom to modify any module and share improvements with the community.
AGPL-3.0 — because we believe research infrastructure deserves the same freedoms as the software it runs on.
AGPL-3.0-only. See LICENSE.