Ocura OSS
A local execution ledger for recording, branching, and comparing command runs.
Record a baseline, explain the next variation, and keep its result connected to the original run. Ocura OSS stores command arguments, outcomes, timing, output logs, declared parameters, and branch lineage in your project. It verifies the relevant records and logs before branching or comparing them.
Use it from your terminal, Python scripts, or an AI agent with a shell. The CLI provides JSON output throughout the workflow; the Python API returns typed results.
Install and try
Python 3.11 or later is required. Ocura OSS uses only the standard library at runtime.
Install from PyPI in a virtual environment:
python -m pip install ocura-oss
ocura-oss demo --root ./ocura-oss-demo
The demo runs the complete workflow and retains a new directory for inspection.
Its destination must not already exist. To install a repository checkout instead,
run python -m pip install . from its root.
Compare two runs
ocura-oss init --name example --json
ocura-oss run --json --param count=1 -- python -c "print(1)"
ocura-oss branch --json --from <chokepoint-id> --reason "try count 2" --param count=2
ocura-oss run --json --pathway <child-pathway-id> --param count=2 -- python -c "print(2)"
ocura-oss verify --json
ocura-oss compare --json --from <chokepoint-id>
Use the baseline's chokepoint_id to branch and the branch result's id for the
child run. compare reports each variant's relationship to its source, parameter
changes, outcomes, and timing. Read the recorded output logs for workload-specific
metrics, such as validation loss or accuracy.
Parameters are recorded labels. Set actual inputs in your command as well:
--param batch=4 -- python train.py --batch 4. Each run records its own labels.
Omit --json for terminal output. By default, run streams the command's output
while retaining stdout and stderr logs; --json or --quiet keeps that output in
the logs without streaming. A first Ctrl+C records an interrupted attempt; a
second exits immediately and may leave that attempt unrecorded.
Autoregressive example: PyTorch, JAX, and Ray
The autoregressive example trains a small character-level next-token model on an included text corpus. Choose PyTorch or JAX, run a baseline and a longer-training variant, then reconstruct the comparison from saved evidence. An optional Ray Core executor runs either backend as a local task. The example stays in the source repository; neither the wheel nor the source distribution includes its scripts or framework dependencies. Install only what you use.
From a repository checkout, after installing Ocura:
python -m pip install -r examples/autoregressive/requirements-pytorch.txt
python examples/autoregressive/experiment.py run --backend pytorch --root ./ar-pytorch
python examples/autoregressive/experiment.py report --root ./ar-pytorch
The guide includes JAX and Ray commands. The script supplies metric reading and interpretation; the package supplies recording, lineage, and verification.
Python and automation
import sys
from ocura_oss import branch, compare, initialize, run, verify
root = initialize("experiment", name="example").root
baseline = run([sys.executable, "-c", "print(1)"], root=root, parameters={"count": "1"})
child = branch(baseline.chokepoint.id, root=root, reason="try count 2", parameters={"count": "2"})
run([sys.executable, "-c", "print(2)"], root=root, pathway_id=child.id, parameters={"count": "2"})
assert verify(root).ok
comparison = compare(baseline.chokepoint.id, root=root)
An agent can use the same CLI or Python workflow inside its existing execution environment. The automation guide explains JSON results, exit codes, parameter labels, and how to inspect earlier attempts.
Documentation
- CLI reference: every command, JSON fields, and exit codes
- Python API: functions, typed results, and
Store - State and verification: records and checks
- Autoregressive example: PyTorch, JAX, and Ray
- Hosted documentation: the currently published release
Repository references describe this checkout and remain readable directly on GitHub.
Local state and operating model
State lives under .ocura-oss/ in the project root. A den identifies that state;
a pathway groups runs in a lineage; an atom records one command attempt;
a chokepoint identifies terminal evidence from which a branch can be created.
Each branch records its source and reason. It represents a new line of work;
workspace files, process state, and model weights are managed by the workload.
One mutating process per state root is supported at a time. Delete .ocura-oss/
to discard that project's records. Legacy .ocura/ records are unsupported.
Commands run with shell=False in the project root and inherit the invoking
environment's permissions. Use trusted, owner-authorized workloads. For generated
or otherwise untrusted commands, provide isolation and permissions through your
execution environment; Ocura OSS itself does not sandbox or restrict them.
Records retain command arguments, parameter labels, reasons, and output. Keep secrets out of these fields. SHA-256 checksums detect local inconsistencies; they do not authenticate authorship or prevent a writer from replacing records and checksums.
Project status
Ocura OSS is research software under MPL-2.0. The 0.x interface and record format may change before 1.0, and there is no production support commitment.
The package adapts an early Ocura research concept. Current Ocura engine development is a separate project.
Bug reports and focused pull requests are welcome. See Contributing and the security policy.
Metadata
Release files for ocura-oss 0.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| ocura_oss-0.3.0.tar.gz | 59.3 kB | Without provenance | Details for ocura_oss-0.3.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| ocura_oss-0.3.0-py3-none-any.whl | Python 3 | none | any | Details for ocura_oss-0.3.0-py3-none-any.whl |
Total release size: 93.9 kB
Release files / ocura_oss-0.3.0.tar.gz
| Download URL | ocura_oss-0.3.0.tar.gz |
|---|---|
| Size | 59.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c3fa74217f91fee02a7088fffe5d7aa805a627758f7a83686049cd843dd55962
|
|
BLAKE2b-256 checksum How to use checksums |
63a671777440ffefde9e14fa1f31fc6d00ab2ffecbc34d16a3452ac2aa0bcef5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.6
|
Release files / ocura_oss-0.3.0-py3-none-any.whl
| Download URL | ocura_oss-0.3.0-py3-none-any.whl |
|---|---|
| Size | 34.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c146a2a6029162c74747860be3f63df27e70860bdfe25ac5857859943e6cf946
|
|
BLAKE2b-256 checksum How to use checksums |
577c653347bedba81d1b5bbae624152c9b44800784e3582070dc3aaaeeb22d5f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.6
|
Security for ocura-oss 0.3.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.