omphalOS exists for a simple reason: Analytic conclusions outlive the circumstances that produced them.
In U.S.-governmental environments vis-à-vis trade, technology, export controls, and enforcement — the setting(s) for which this system was first built in May 2024, then modernized for open release in December 2025 — an output that may inform action is expected to remain (i) legible under review, (ii) traceable to its provenance, and (iii) transmissible only under deliberate restraint.
The purpose, here, is practical: to make that posture routine.
This public release is a sanitized reference implementation, and all example data is synthetic.
A run is treated as an evidentiary package: it yields deliverables for a reader and, inseparably, a record adequate to explain what was done, reproduce it when feasible, and detect post-hoc alteration without argument.
The claims, then, are intentionally narrow:
- Integrity: a completed run directory can be checked against its manifest. (To wit, if the fingerprints do not match, the package has changed.)
- Comparability: two runs can be compared at the level of declared outputs, so disagreement can be located rather than narrated.
- Controlled distribution: a publishability scan surfaces common disclosure hazards before a package leaves its originating context.
No stronger guarantee is implied. Correctness remains a matter of method, inputs, and judgment.
A run produces a directory intended to travel as a unit. The directory is structured so a reviewer can answer, from the artifacts alone, the questions that reliably matter once work leaves its originating workspace:
- What inputs were admitted, and what boundaries were enforced?
- What rules governed transformations, and where are those rules stated?
- Which outputs are intended for consumption, which are intermediate, and which require human review?
- What may be shared, with whom, and with what risk of inadvertent disclosure?
- When two executions disagree, is the disagreement substantive or procedural?
If a package cannot answer these questions, it is incomplete work.
One may verify the included sample run:
python -m omphalos verify --run-dir examples/sample_runExecute the synthetic reference pipeline:
python -m omphalos run --config config/runs/example_run.yamlVerify a generated run directory:
python -m omphalos verify --run-dir artifacts/runs/<run_id>Compare two runs for payload-level equivalence:
python -m omphalos certify --run-a artifacts/runs/<runA> --run-b artifacts/runs/<runB>When a run must be transmitted as a single object:
python -m omphalos release build --run-dir artifacts/runs/<run_id> --out artifacts/releases/<run_id>.tar.gz
python -m omphalos release verify --bundle artifacts/releases/<run_id>.tar.gzBefore distributing outputs outside the environment in which they were generated:
python -m omphalos publishability scan --path . --out artifacts/reports/publishability.jsonThe scan ought to be treated as a pre-flight gate, whereupon a clean report reduces common failure modes; it does not constitute a blanket safety determination.
Runs are configured in config/runs/. Schemas and rule packs live in contracts/.
The governing posture is explicitness. Shapes worth consuming should be declared. Rules worth relying on should be written down. Failures should be inspectable.
A typical run directory includes:
-
run_manifest.json
Inventory of outputs with integrity fingerprints. -
exports/
Reader-facing products (tables, narrative, packet-style records). -
reports/
Structured checks and summaries (quality, determinism comparison, publishability scan, dependency inventory). -
lineage/
Append-only event record of execution. -
warehouse/
Local SQLite artifact used by the reference pipeline.
omphalOS assumed two expectations throughout itself:
Firstly, the run directory is treated as an immutable package once the run completes. Editing outputs “for presentation” after completion is a change in evidence. If edits are required, the disciplined move is to rerun under a revised configuration and allow the record to reflect the revision.
Secondly, comparisons are only as meaningful as the boundaries you enforce. If the run’s inputs depend on ambient state—untracked files, implicit credentials, external services whose responses are not recorded—then replay will converge on approximation rather than identity. The system will still produce a record; it cannot supply missing constraints.
I recommend that you start with:
docs/overview.mddocs/architecture.mddocs/artifacts.mddocs/cli.mddocs/open_source_readiness.mddocs/threat_model.md
Apache-2.0; see LICENSE and NOTICE; citation metadata is in CITATION.cff.
omphalos run --config config/runs/example_run.yamlThis produces a run directory under artifacts/runs/<run_id>/ with run_manifest.json binding inputs, artifacts, and exports by hash.
omphalos serve --runs-root artifacts/runs --host 127.0.0.1 --port 8000Open http://127.0.0.1:8000/.
The UI is a client of the API exposed at /api/* and reads all data from the run directories on disk.