Skip to content

`uofa` CLI reference (v0.17.0)

Generated from uofa --help-all at 2026-08-30T02:53:22Z. 27 subcommands available.

uofa [--no-color] [--verbose] [--repo-root PATH] [--pack NAME] <command> [...]

Global flags inherited by every subcommand: --no-color, --verbose, --repo-root, --pack. See uofa --help for details.

generate ed25519 keypair for signing

uofa keygen [-h] [--no-color] [--verbose] [--repo-root PATH]
[--pack NAME] [--force]
path
FlagDescription
--forceoverwrite an existing keypair (every package signed with the old key stops verifying)

sign (or re-sign) a UofA file

uofa sign [-h] [--no-color] [--verbose] [--repo-root PATH]
[--pack NAME] --key KEY [--context CONTEXT] [--output OUTPUT]
[--as ROLES]
file
FlagDescription
--key, -ked25519 private key (PEM)
--context, -cJSON-LD context file
--output, -ooutput path (default: overwrite input)
--as ROLEScomma-separated signing roles: issuer, reviewer. One party signing both scopes uses one invocation (--as issuer,deciding-engineer); separate parties use separate invocations with their own keys.

verify hash + ed25519 signature (C1 integrity)

uofa verify [-h] [--no-color] [--verbose] [--repo-root PATH]
[--pack NAME] [--pubkey PUBKEY] [--context CONTEXT]
[--decision-pubkey DECISION_PUBKEY]
file
FlagDescription
--pubkeyed25519 public key for the measurement/issuer scope. No default: without it, verify tries the wheel-shipped anchors and names which one matched.
--context, -cJSON-LD context override (default: the package’s own @context)
--decision-pubkeypublic key for a decision signature. REPEATABLE: stacked decisions (source acceptance + concurrence + encoder attestation) carry signatures from several parties, and each key matches by key identity.

validate against SHACL profiles (C2 completeness)

uofa shacl [-h] [--no-color] [--verbose] [--repo-root PATH]
[--pack NAME] [--raw] [--explain]
[--explain-functions EXPLAIN_FUNCTIONS]
[--explain-format {text,json,markdown,html}]
[--explain-backend {ollama,anthropic,openai,openai-compatible,bundled,mock}]
[--explain-model EXPLAIN_MODEL]
[--explain-base-url EXPLAIN_BASE_URL]
[--explain-max-items EXPLAIN_MAX_ITEMS] [--explain-no-cache]
file
FlagDescription
--rawshow raw pyshacl output instead of friendly messages
--explainrun the interpretation pipeline after the primary analysis
--explain-functionscomma-separated list of interpretation functions to run (values: explain, group, contextualize, cross, narrative). Default: all applicable for the command.
--explain-format {text, json, markdown, html}output format for the interpretation block. Default: same as the command’s primary —format, falling back to text.
--explain-backend {ollama, anthropic, openai, openai-compatible, bundled, mock}LLM backend for explain (overrides [llm] backend in uofa.toml)
--explain-modelmodel name on the chosen backend (overrides [llm] model)
--explain-base-urlbase URL for openai-compatible backends
--explain-max-itemslimit interpretation to top N items by severity
--explain-no-cachebypass cached interpretation results

detect quality gaps with Jena rule engine (C3)

uofa rules [-h] [--no-color] [--verbose] [--repo-root PATH]
[--pack NAME] [--rules RULES] [--context CONTEXT] [--build]
[--raw] [--format {summary,turtle,ntriples,jsonld,json}]
[--output OUTPUT] [--explain]
[--explain-functions EXPLAIN_FUNCTIONS]
[--explain-format {text,json,markdown,html}]
[--explain-backend {ollama,anthropic,openai,openai-compatible,bundled,mock}]
[--explain-model EXPLAIN_MODEL]
[--explain-base-url EXPLAIN_BASE_URL]
[--explain-max-items EXPLAIN_MAX_ITEMS] [--explain-no-cache]
file
FlagDescription
--rules, -rpath to .rules file
--context, -cJSON-LD context file
--buildauto-build the Jena JAR if missing
--rawshow raw output without coloring
--format, -f {summary, turtle, ntriples, jsonld, json}output format (default: summary). ‘json’ is the parsed-firings shape suitable for snapshot tests; ‘jsonld’ is the raw RDF.
--output, -owrite reasoned output to a file (default: stdout)
--explainrun the interpretation pipeline after the primary analysis
--explain-functionscomma-separated list of interpretation functions to run (values: explain, group, contextualize, cross, narrative). Default: all applicable for the command.
--explain-format {text, json, markdown, html}output format for the interpretation block. Default: same as the command’s primary —format, falling back to text.
--explain-backend {ollama, anthropic, openai, openai-compatible, bundled, mock}LLM backend for explain (overrides [llm] backend in uofa.toml)
--explain-modelmodel name on the chosen backend (overrides [llm] model)
--explain-base-urlbase URL for openai-compatible backends
--explain-max-itemslimit interpretation to top N items by severity
--explain-no-cachebypass cached interpretation results

full pipeline: SHACL + integrity + rules (C1+C2+C3)

uofa check [-h] [--no-color] [--verbose] [--repo-root PATH]
[--pack NAME] [--pubkey PUBKEY] [--context CONTEXT]
[--rules RULES] [--skip-rules] [--build] [--oos | --no-oos]
[--derivations | --no-derivations] [--explain]
[--explain-functions EXPLAIN_FUNCTIONS]
[--explain-format {text,json,markdown,html}]
[--explain-backend {ollama,anthropic,openai,openai-compatible,bundled,mock}]
[--explain-model EXPLAIN_MODEL]
[--explain-base-url EXPLAIN_BASE_URL]
[--explain-max-items EXPLAIN_MAX_ITEMS] [--explain-no-cache]
file
FlagDescription
--pubkeyed25519 public key
--context, -cJSON-LD context file
--rules, -rpath to .rules file
--skip-rulesskip the Jena rule engine (no Java required)
--buildauto-build the Jena JAR if missing
--oosforce OOS rules on for this run, overriding pack config
--no-oosforce OOS rules off for this run, overriding pack config
--derivationsforce derivation pre-pass on for this run, overriding pack config
--no-derivationsforce derivation pre-pass off for this run, overriding pack config
--explainrun the interpretation pipeline after the primary analysis
--explain-functionscomma-separated list of interpretation functions to run (values: explain, group, contextualize, cross, narrative). Default: all applicable for the command.
--explain-format {text, json, markdown, html}output format for the interpretation block. Default: same as the command’s primary —format, falling back to text.
--explain-backend {ollama, anthropic, openai, openai-compatible, bundled, mock}LLM backend for explain (overrides [llm] backend in uofa.toml)
--explain-modelmodel name on the chosen backend (overrides [llm] model)
--explain-base-urlbase URL for openai-compatible backends
--explain-max-itemslimit interpretation to top N items by severity
--explain-no-cachebypass cached interpretation results

render a credibility report for a bundle, or for an HF model id/URL (fetch + extract)

uofa report [-h] [--no-color] [--verbose] [--repo-root PATH]
[--pack NAME] [--format {text,markdown,json}]
[--output OUTPUT] [--deterministic] [--revision REVISION]
[--save-bundle PATH] [--no-save-bundle]
[--extract-backend {ollama,anthropic,openai,openai-compatible,bundled,mock}]
[--extract-model EXTRACT_MODEL]
[--extract-base-url EXTRACT_BASE_URL] [--cou TEXT]
[--mrl N] [--raidex PATH] [--raidex-hub] [--raidex-run]
[--raidex-args ARGS] [--raidex-yes]
source
examples:
uofa report package.jsonld --pack model-credibility
a saved bundle: deterministic, no extraction
uofa report allenai/OLMo-2-1124-13B-Instruct --pack model-credibility
a live HuggingFace card: fetch, extract, assess. Section [1] is
documentation completeness, section [3] evaluation sufficiency.
uofa report owner/model --pack model-credibility --cou 'clinical triage' --mrl 3
scope the assessment to a decision. --cou raises W-EV-COU-05 to
Critical; --mrl enables COMPOUND-EV-01. Omitting them is not a
pass -- the readout states the escalation was not assessed.
uofa report owner/model --pack model-credibility --raidex-hub
attach independently furnished benchmark results, which is what
makes reported-vs-furnished divergence (W-EV-DIV-07) expressible.
FlagDescription
--format {text, markdown, json}output format (default: text)
--outputwrite the report to FILE instead of stdout
--deterministicid mode: skip the LLM and map the card with the README section/keyword scan (approximate; needs no model)
--revisionid mode: model-card git revision (default: latest)
--save-bundle PATHid mode: write the generated bundle to PATH (default: ./__..jsonld)
--no-save-bundleid mode: do not keep the generated bundle
--extract-backend {ollama, anthropic, openai, openai-compatible, bundled, mock}id mode: LLM backend for extraction (else README scan)
--extract-modelid mode: model name on the chosen backend
--extract-base-urlid mode: base URL for openai-compatible backends
--cou TEXTstate the context of use this assessment is scoped to (run-context; raises W-EV-COU-05 to Critical)
--mrl Nstate the model risk level of the decision this evidence informs, 1-5 (run-context; enables COMPOUND-EV-01)
--raidex PATHingest a local raidex results.json as Group-B evidence
--raidex-hubfetch this model’s published raidex record from the cloudronin/raidex-results dataset
--raidex-runrun raidex eval now and assess its output (needs: pip install uofa[raidex]; UNVERIFIED against a live run, see docs/live-run-verification.md)
--raidex-args ARGSpassthrough arguments for raidex eval, uninterpreted
--raidex-yesskip the —raidex-run confirmation (for CI)

validate all examples against SHACL profiles

uofa validate [-h] [--no-color] [--verbose] [--repo-root PATH]
[--pack NAME] [--dir DIR] [--verify] [--pubkey PUBKEY]
FlagDescription
--dirdirectory to scan (default: all pack examples)
--verifyalso verify hash + signature integrity on each file
--pubkeyed25519 public key (default: keys/research.pub)

scaffold a new UofA project (template + keys + uofa.toml)

uofa init [-h] [--no-color] [--verbose] [--repo-root PATH]
[--pack NAME] [--profile {minimal,complete}] [--dir DIR]
[--provider PROVIDER] [--model MODEL]
name
FlagDescription
--profile {minimal, complete}starting profile (default: complete)
--dirparent directory (default: cwd)
--providerLLM provider for uofa extract (default: ollama)
--modelLLM model for uofa extract (default: llama3.2)

compare weakener profiles between two UofA files (COU divergence)

uofa diff [-h] [--no-color] [--verbose] [--repo-root PATH]
[--pack NAME] [--build] [--skip-rules] [--explain]
[--explain-functions EXPLAIN_FUNCTIONS]
[--explain-format {text,json,markdown,html}]
[--explain-backend {ollama,anthropic,openai,openai-compatible,bundled,mock}]
[--explain-model EXPLAIN_MODEL]
[--explain-base-url EXPLAIN_BASE_URL]
[--explain-max-items EXPLAIN_MAX_ITEMS] [--explain-no-cache]
file_a file_b
FlagDescription
--buildauto-build the Jena JAR if missing
--skip-rulescompare static hasWeakener arrays instead of running rules
--explainrun the interpretation pipeline after the primary analysis
--explain-functionscomma-separated list of interpretation functions to run (values: explain, group, contextualize, cross, narrative). Default: all applicable for the command.
--explain-format {text, json, markdown, html}output format for the interpretation block. Default: same as the command’s primary —format, falling back to text.
--explain-backend {ollama, anthropic, openai, openai-compatible, bundled, mock}LLM backend for explain (overrides [llm] backend in uofa.toml)
--explain-modelmodel name on the chosen backend (overrides [llm] model)
--explain-base-urlbase URL for openai-compatible backends
--explain-max-itemslimit interpretation to top N items by severity
--explain-no-cachebypass cached interpretation results

interpret pre-existing structured output from rules/check/diff/shacl

uofa explain [-h] [--no-color] [--verbose] [--repo-root PATH]
[--pack NAME] (--from-file FROM_FILE | --from-stdin)
[--input-type {rules,check,diff,shacl}]
[--functions FUNCTIONS] [--format {text,json,markdown}]
[--max-items MAX_ITEMS] [--no-cache]
[--backend {ollama,anthropic,openai,openai-compatible,bundled,mock}]
[--model MODEL] [--base-url BASE_URL]
FlagDescription
--from-fileread structured output from FILE
--from-stdinread structured output from stdin
--input-type {rules, check, diff, shacl}override auto-detection of input type
--functionscomma-separated list of interpretation functions to run
--format {text, json, markdown}output format (default: text)
--max-itemslimit interpretation to top N items by severity
--no-cachebypass cached interpretation results
--backend {ollama, anthropic, openai, openai-compatible, bundled, mock}LLM backend (overrides [llm] backend in uofa.toml)
--modelmodel name on the chosen backend
--base-urlbase URL for openai-compatible backends

generate JSON Schema or import constants from SHACL shapes

uofa schema [-h] [--no-color] [--verbose] [--repo-root PATH]
[--pack NAME] [--output OUTPUT] [--emit {json,python}]
[--freeze VERSION]
FlagDescription
--output, -ooutput path (default depends on —emit format)
--emit {json, python}output format: json (JSON Schema, default) or python (import constants)
--freeze VERSIONfreeze the generated schema to spec/schemas/.json with a versioned $id, e.g. —freeze v0.5. Frozen versions are published at https://uofa.net/schemas/.json for adopters to pin, and are never regenerated. Refuses to overwrite one.

list and inspect installed domain packs

uofa packs [-h] [--no-color] [--verbose] [--repo-root PATH]
[--pack NAME] [--detail]
[name]
FlagDescription
--detailshow detailed pack information

list all weakener patterns across active packs

uofa catalog [-h] [--no-color] [--verbose] [--repo-root PATH]
[--pack NAME] [--format {table,json,md}] [--all-packs]
FlagDescription
--format, -f {table, json, md}output format (default: table)
--all-packsenumerate patterns across every installed pack (overrides —pack). Use this for a complete catalog view; the default —pack=vv40 only surfaces core + vv40 patterns.

migrate UofA files from v0.3 to v0.4

uofa migrate [-h] [--no-color] [--verbose] [--repo-root PATH]
[--pack NAME] [--from FROM_VER] [--to TO_VER] [--dry-run]
file
FlagDescription
--fromsource version (default: v0.3)
--totarget version (default: v0.4)
--dry-runprint changes without modifying the file

import an Excel workbook into a UofA JSON-LD file

uofa import [-h] [--no-color] [--verbose] [--repo-root PATH]
[--pack NAME] [--output OUTPUT] [--sign] [--key KEY]
[--check] [--protocol-check] [--profile {minimal,complete}]
[--base-uri BASE_URI] [--evidence EVIDENCE]
[--sip-pubkey SIP_PUBKEY]
[--decision-pubkey DECISION_PUBKEY]
[file]
FlagDescription
--output, -ooutput path (default: same directory, .jsonld extension)
--signsign the output after generation
--key, -kpath to ed25519 private key (required with —sign, or auto-detected from project)
--checkrun all quality gates on the output
--protocol-checkgate the import on the reference-encoding conformance checks. Runs the workbook-side checks against the input and the package-side checks against the artifacts beside the output. Any failure exits non-zero.
--profile {minimal, complete}override profile auto-detection
--base-urinamespace to mint identifiers under, e.g. https://acme.example/uofa. Overrides [project] base_uri in uofa.toml. Defaults to a reserved example.org placeholder; uofa.net is refused.
--evidenceevidence sidecar from uofa evidence seal; its manifest, source pins and corroboration are folded in BEFORE hashing, so the seal sits inside the signature scope
--sip-pubkeySIP measurement public key for verifying a SIP-bundle input (default: keys/research.pub)
--decision-pubkeyengineer public key for verifying a SIP-bundle hasDecisionRecord on import

extract assessment data from evidence documents into an Excel template

uofa extract [-h] [--no-color] [--verbose] [--repo-root PATH]
[--pack NAME] [--model MODEL] [--output OUTPUT]
[--glob GLOB] [--thinking]
[--prompt-version PROMPT_VERSION]
[--extract-backend {ollama,anthropic,openai,openai-compatible,bundled,mock}]
[--extract-model EXTRACT_MODEL]
[--extract-base-url EXTRACT_BASE_URL] [--protocol-check]
[--keyless]
[source ...]
FlagDescription
--modellegacy litellm model string (e.g. ‘ollama/qwen3.5:4b’). For new configs, prefer —extract-backend + —extract-model.
--output, -ooutput Excel path (default: {source}-extracted.xlsx)
--globfile filter pattern (e.g. ‘.pdf’ or ‘.pdf,*.docx’)
--thinkingenable thinking/reasoning mode (slower, may improve accuracy)
--prompt-versiontag for scoring log tracking (e.g. ‘v2-detailed’)
--extract-backend {ollama, anthropic, openai, openai-compatible, bundled, mock}LLM backend for extract (overrides [llm] backend)
--extract-modelmodel name on the chosen backend (overrides [llm] model)
--extract-base-urlbase URL for openai-compatible backends (e.g. Together AI, vLLM)
--protocol-checkreport the reference-encoding conformance checks against the written workbook. Informational here: a fresh extract has no citation anchors, because anchors are what the review pass produces. The gate is on uofa import.
--keylessextract without a language model: no API key, no network, no spend. Fills only the fields with a route measured to beat a null model, and leaves the rest blank rather than guessing

generate / orchestrate / classify synthetic credibility evidence packages

uofa adversarial [-h] [--no-color] [--verbose] [--repo-root PATH]
[--pack NAME]
{generate,run,analyze,prep-review,bundle,judge,triage,adjudicate}
...

install or verify the LLM extract runtime (Ollama + qwen3.5:4b)

uofa setup [-h] [--no-color] [--verbose] [--repo-root PATH]
[--pack NAME] [--bundle BUNDLE]
[--create-bundle CREATE_BUNDLE] [--model MODEL]
[--port PORT] [--no-byo] [--yes] [--no-verify]
{verify,uninstall} ...
FlagDescription
--bundleinstall from an offline bundle (REQ-DIST-004 air-gapped path)
--create-bundlepackage the current install into a tar.gz for an offline machine
--modelmodel tag to pull (default: qwen3.5:4b)
--portport for the managed Ollama daemon (default: 11434)
--no-byoskip BYO Ollama detection; install a UofA-managed copy
--yes, -yskip confirmation prompts (downloads, uninstall)
--no-verifyskip the post-install verify step

run the C1+C2+C3 pipeline against a bundled fixture (no setup needed)

uofa demo [-h] [--no-color] [--verbose] [--repo-root PATH]
[--pack NAME] [--no-passage] [--no-jsonld]
FlagDescription
--no-passageskip printing the input passage (useful for piping)
--no-jsonldskip printing the pre-computed JSON-LD

measure a surrogate and emit a signed evidence bundle (or init to set up)

uofa interrogate [-h] [--no-color] [--verbose] [--repo-root PATH]
[--pack NAME] [--adapter ADAPTER]
[--benchmark BENCHMARK] [--reference REFERENCE]
[--scope SCOPE] [--output OUTPUT] [--key KEY]
[--seed SEED]
{init} ...
FlagDescription
--adapterModelAdapter ref: ‘pkg.module.ClassName’ or ‘/path/file.py:ClassName’
--benchmarkbenchmark inputs (.npz/.json)
--referencereference outputs (.npz/.json) — supplied, never generated
--scopedeclared-scope config (.json/.toml)
--output, -ooutput path for the signed evidence bundle (.json)
--key, -ked25519 SIP measurement key (auto-detected from project keys/ if omitted)
--seedseed recorded in measurement provenance

review a SIP comparison (read-only) or sign an engineer decision

uofa decision [-h] [--no-color] [--verbose] [--repo-root PATH]
[--pack NAME]
{review,record} ...

look up what a vocabulary term means

uofa define [-h] [--no-color] [--verbose] [--repo-root PATH]
[--pack NAME] [--site] [--search TEXT] [--list]
[--all-packs] [--format {text,json}]
[term]
FlagDescription
--siteemit the namespace-grouped payload the site build consumes
--search TEXTsearch labels and definitions for TEXT
--listlist the terms in scope
--all-packscover every installed pack, not just the active ones
--format {text, json}output format (default: text)

look up what a vocabulary term means

uofa vocab [-h] [--no-color] [--verbose] [--repo-root PATH]
[--pack NAME] [--site] [--search TEXT] [--list]
[--all-packs] [--format {text,json}]
[term]
FlagDescription
--siteemit the namespace-grouped payload the site build consumes
--search TEXTsearch labels and definitions for TEXT
--listlist the terms in scope
--all-packscover every installed pack, not just the active ones
--format {text, json}output format (default: text)

basic guardrail: turn weakener firings into a signed engineer-commanded action (§6)

uofa guardrail [-h] [--no-color] [--verbose] [--repo-root PATH]
[--pack NAME] [--key KEY]
[--threshold {Critical,High,Medium,Low}]
[--action {restrict,clip,refuse}] [--min-hits MIN_HITS]
[--output OUTPUT]
file
FlagDescription
--key, -ked25519 key to sign the action (auto-detected from project keys/ if omitted)
--threshold {Critical, High, Medium, Low}engineer-commanded severity threshold to trigger (default: High)
--action {restrict, clip, refuse}engineer-commanded response on trigger (default: restrict)
--min-hitsminimum hits for a firing to count toward the trigger (default: 1)
--output, -ooutput path for the package + guardrailAction (default: in place)

inject a known flaw and record it in a manifest; inject verify scores the result

uofa inject [-h] [--no-color] [--verbose] [--repo-root PATH]
[--pack NAME] [--package PACKAGE] [--out OUT]
[--pattern PATTERN] [--operator OPERATOR] [--site SITE]
[--all] [--manifest MANIFEST]
{verify} ...
Examples:
uofa inject --pattern W-AL-01 --package pkg.jsonld --out /tmp/m
uofa inject --all --package pkg.jsonld --out /tmp/m
uofa rules /tmp/m/<mutant>.jsonld
uofa inject verify --manifest /tmp/m/manifest.json
FlagDescription
--packagesubstrate package
--outoutput directory
--patterntarget pattern id (e.g. W-AL-01)
--operatoroperator id (e.g. MUT-DEL-01); overrides —pattern
--sitesite index (default: 0)
--allevery operator at every site
--manifestmanifest path (default: /manifest.json)

inventory and seal a simulation evidence folder (no model, no network)

uofa evidence [-h] [--no-color] [--verbose] [--repo-root PATH]
[--pack NAME]
{inventory,seal} ...
Examples:
uofa evidence inventory osf-n4pjz/
uofa evidence inventory osf-n4pjz/ --members # every archive member
uofa evidence seal osf-n4pjz/ -o evidence.json
uofa evidence seal osf-n4pjz/ --source-map osf-urls.txt -o evidence.json
uofa import extracted.xlsx --evidence evidence.json --sign --key k.key