Developers
Integrate the engine, honestly
The same signed engine is reachable from Claude, the CLI, the REST API, and the Python SDK. Every surface below is labelled with its real maturity — and the exact boundary of what has been tested — so nothing reads as more finished than it is.
Live API base: https://veritas-backend-production-0aab.up.railway.app · public certificates: https://veritas-certificates-production.up.railway.app
Live surfaces
Live · user-readyUser-ready today: Claude via MCP, the CLI, the REST API, the web console, the Python SDK, the public signed certificate, and the reproducibility export.
REST API
# 1. Sign up + get a token (OAuth2 password flow)
curl -X POST https://veritas-backend-production-0aab.up.railway.app/auth/signup \
-H "Content-Type: application/json" \
-d '{"email":"you@lab.org","password":"...","org_name":"Your Lab"}'
TOKEN=$(curl -s -X POST https://veritas-backend-production-0aab.up.railway.app/auth/token \
-d "username=you@lab.org&password=..." | jq -r .access_token)
# 2. List bundled samples (no data of your own needed)
curl -s https://veritas-backend-production-0aab.up.railway.app/samples | jq '.samples[].id'
# 3. Open a signed certificate — NO AUTH required
curl -s https://veritas-backend-production-0aab.up.railway.app/verify/PUBLIC_ID | jq '.overall_verdict, .signature_valid'Public certificate + reproducibility export
# Anyone can re-check a certificate by its public id — no account.
# The endpoint reconstructs the engine certificate and recomputes its signature.
curl -s https://veritas-backend-production-0aab.up.railway.app/verify/PUBLIC_ID
# Download the reproducibility bundle (pins data, spec, deps) and reproduce:
curl -L -o bundle.zip https://veritas-backend-production-0aab.up.railway.app/verify/PUBLIC_ID/bundle
unzip bundle.zip && python reproduce.py # asserts the signature matchesPython SDK
# The Python SDK is 'veritas-client' — a thin, typed client over the API.
# NOTE: it is NOT the unrelated PyPI package named 'veritas'. Install from source:
pip install ./backend/sdk/python
from veritas_client import VeritasClient
vc = VeritasClient("https://veritas-backend-production-0aab.up.railway.app")
vc.login("you@lab.org", "...")
org = vc.my_orgs()[0]
proj = vc.create_project(org["id"], "Microglia study")
ds = vc.upload_dataset(org["id"], proj["id"], "microglia.h5ad", fmt="h5ad")
an = vc.create_analysis(org["id"], proj["id"], "condition-B DE",
dataset_id=ds["id"],
spec={"findings": [{ "gene": "GENE_1999",
"group_col": "condition", "group_a": "A",
"group_b": "B", "expected_direction": "up" }]})
# launch the async run, then poll for the engine's signed certificate
run = vc.verify(org["id"], an["id"])
cert = vc.wait_for_certificate(org["id"], run["id"])
print(cert["overall_verdict"], cert["signature"])CLI
# The CLI ships with the engine package (entry point: 'veritas').
pip install -e . # from the repo root (src layout)
# Verify a finding on any common single-cell artifact — zero code edits.
# DATA may be .h5ad, .loom, .rds (Seurat), a 10x MTX dir, or a raw matrix + --meta.
veritas verify microglia.h5ad \
--map condition=diagnosis:AD/Control --map donor=Donor \
--spec finding.json --bundle ./out
# The signed certificate prints to stdout; --bundle writes a reproducible zip.Claude via MCP
# Claude via MCP — the connector exposes the SAME engine as a tool.
# Remote (hosted) endpoint:
https://veritas-mcp-production.up.railway.app/mcp
# Or run the local stdio server (Claude Code / Desktop mcp.json):
{
"mcpServers": {
"veritas": {
"command": "python",
"args": ["-m", "veritas.mcp_server"],
"env": { "PYTHONUNBUFFERED": "1" }
}
}
}
# Claude may PROPOSE adversarial attacks; the engine executes them and owns the
# verdict. Claude never produces a statistic or a verdict.Tested-local surfaces
Tested · localWork today in a local setup, but are not published packages. The Jupyter magic is loaded from source via PYTHONPATH / %load_ext, not installed from a registry.
Jupyter %veritas magic
# Tested LOCAL notebook integration (NOT a published pip package).
# Put integrations/jupyter/veritas_magic.py on your PYTHONPATH, then:
%load_ext veritas_magic
# Verify a finding on an AnnData already in the kernel — renders the
# certificate inline. The engine computes every number; the magic only formats.
%veritas adata gene=LYZ group_col=cell_type \
group_a=B_cell group_b=CD14_monocyte direction=upStudio (static)
A static analysis studio surface.
Streamlit dashboard
The demo trust-map visual, run locally.
Reviewer-report generator
Generates a reviewer-facing report from a certificate.
Developer preview
Developer preview · sourceReal source exists, but these are not installable products yet. We name the exact tested boundary rather than imply a finished package.
GitHub Action / CI
A CI integration exists in source form. It is not a published, installable action.
Do not use pip install veritas — the PyPI name veritas is an unrelated library. The engine installs from this repo (pip install -e .) and the SDK is veritas-client.
R SDK + RStudio addin
Real R client + RStudio addin source lives in the repo, but has not been verified against a live R runtime. Treat as source integration, not a released package.
Read a certificate over the wire
The public /verify endpoint needs no account — fetch any certificate as JSON and re-check its signature yourself.