CLI

Publish from your GitHub repository. Future pushes publish automatically.

Publish from your terminal

Sign in to OpenVS, then connect GitHub and authorize the OpenVS GitHub App for your repository. You need write access to the repository. Commit your paper as a PDF, Markdown, or LaTeX file alongside its code and data before publishing. No claims file is required.

npm install -g https://openversions.com/openversions-cli.tgz
cd your-research-repo
openvs login
openvs publish
openvs status

# If the repo contains multiple PDFs, select the paper:
openvs publish --manuscript papers/main.pdf

# Continue working in your own GitHub repository:
git add paper.pdf analysis/ data/
git commit -m "Update findings"
git push origin main

The CLI detects your GitHub remote. Publishing imports the committed files from GitHub, not uncommitted files on your computer. OpenVS follows the repository’s default branch selected at connection time. Imports and reviews run in the background. Use openvs status or the repository page to see progress.

Privacy and unpublishing

Publishing requires a public GitHub repository. If you make it private, OpenVS stops importing changes. Previously published versions remain public until you choose Unpublish on OpenVS. Unpublishing hides your repository, claims, and evidence while retaining a private archive. To republish, make your GitHub repository public and publish again.

openvs unpublish
# Later, with the GitHub repository public again:
openvs publish

You can also unpublish from GitHub settings. Unpublishing cannot recall files already downloaded or independently published copies.

Claims and checks

Without a claims manifest, OpenVS extracts major claims from your selected PDF, Markdown, or LaTeX manuscript. With a manifest, each named claim supplies its statement, optional reasoning, source references, and evidence. Files must be committed to the repository; external evidence can be linked or uploaded by hash.

Prefer a manuscript: use openvs publish --manuscript paper.md to select it explicitly. PDF pages use physical page numbers; Markdown and LaTeX references use page: null. For LaTeX, select the main .tex file. A root-level claims.yaml or claims.yml takes precedence over manuscript extraction; remove it to switch to automatic extraction.

Advanced: supply your own claims with claims.yaml

Statements can summarize findings; references must quote committed sources exactly. Optional claim_sources and reasoning_sources contain path, page, and quote. A reasoning reference requires a reasoning summary. Optional discipline is science, theoretical, or qualitative; omit it to let review choose. Authors do not fill out review axes.

claims:
  sample-mean:
    statement: The mean of the three observations is 2.
    reasoning: The submitted observations are 1, 2, and 3; their sum divided by three is 2.
    evidence:
      files: [data/sample.csv]
    # Optional exact attribution (page: null for Markdown):
    claim_sources:
      - path: paper.md
        page: null
        quote: The mean of the three observations is 2.

# Optional reproducibility declaration within evidence:
# run: python analysis/mean.py
# expect: { mean: 2.00 }

CI reviews each claim’s submitted evidence and reasoning. Verified means its completed checks passed; Unsupported means a completed check found an evidence or reasoning problem; Unverified means the checks could not establish an outcome. Missing evidence, unavailable tools, and failed reviews do not count as verification.

Code execution is currently disabled on the hosted service. A claim that declares a required rerun stays Unverified if that rerun cannot be completed. Where execution is enabled in an isolated runner, run must print a JSON object on its last line and expect defines the expected values. Numeric tolerances such as 0.38 ± 0.02 are supported. An env file is recorded, not automatically installed.

Claim neighborhoods use embedding similarity. They do not label claims as supporting or contradicting one another. A claim ID is <commit SHA>:<claim name>; new commits preserve the earlier version’s record.

Building an integration? See the API reference.