Anchor MLflow artifacts to Bitcoin. One line to production.
Project description
umarise-mlflow
Anchor every MLflow artifact at inception. One hash. Independent proof. Bitcoin-anchored.
What it does
Every model, dataset, and artifact you log in MLflow gets a cryptographic fingerprint anchored in Bitcoin via OpenTimestamps. Not after the fact. At the moment of creation.
The origin_id is logged back into your MLflow run. Verifiable by anyone. Without trusting Umarise. Without an account. Forever.
Install
pip install umarise-mlflow
Usage
Auto-anchor everything in a run
import mlflow from umarise_mlflow import auto_anchor
with mlflow.start_run(): with auto_anchor(api_key="um_..."): mlflow.log_artifact("model.pkl") mlflow.log_artifact("dataset.parquet")
Every artifact logged inside the context is automatically anchored. The origin_id appears as a parameter in your MLflow run.
Anchor a single artifact
from umarise_mlflow import anchor_artifact
result = anchor_artifact("model.pkl", api_key="um_...") print(result["origin_id"])
Anchor all artifacts in an existing run
from umarise_mlflow import anchor_run_artifacts
results = anchor_run_artifacts(run_id="abc123", api_key="um_...")
What gets anchored
The SHA-256 hash of the file. Nothing else. The file never leaves your system. Umarise receives only the fingerprint.
What you get back
{ "origin_id": "fb025c0e-...", "hash": "sha256:a1b2c3...", "captured_at": "2026-03-30T09:00:00Z", "proof_status": "pending" }
proof_status moves from pending to anchored after Bitcoin confirmation. Typically within 1-2 hours.
Verify independently
Every anchor is verifiable without Umarise:
curl https://core.umarise.com/v1-core-proof?origin_id=fb025c0e-...
The returned .ots file verifies against Bitcoin directly using the OpenTimestamps CLI. No account. No permission. No Umarise dependency.
Why this exists
MLflow logs everything. Every log lives next to the thing it describes. The timestamp comes from the same clock as the run. The audit trail is written by the audited.
When a regulator, auditor, or counterparty asks "prove this model existed before the incident" — MLflow alone cannot answer that.
umarise-mlflow gives MLflow the one thing it cannot give itself: independently verifiable origin proof, anchored at inception.
Get an API key
umarise.com/developers
License
MIT
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file umarise_mlflow-0.1.2.tar.gz.
File metadata
- Download URL: umarise_mlflow-0.1.2.tar.gz
- Upload date:
- Size: 4.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b5c3f97618ff941d449c7aee475044b587abb9cbd9fa086ab276905ebff07ade
|
|
| MD5 |
3b6dfdc0fa182af3111d8f08b0a66d37
|
|
| BLAKE2b-256 |
81da6a124842512fa2318a55e95e084fba26827ffa74fc47ef41cfef0f4f88c5
|
File details
Details for the file umarise_mlflow-0.1.2-py3-none-any.whl.
File metadata
- Download URL: umarise_mlflow-0.1.2-py3-none-any.whl
- Upload date:
- Size: 4.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fcc0da1eb19dfcca4b489ac247a826af98995fbdbdcb27c0600fa70d5fd5af2b
|
|
| MD5 |
c7ad054cb5737034dad6e576d389c6b9
|
|
| BLAKE2b-256 |
b83c41fc962303e0a525c0b0379898701990f0005d1a7566dedd3dc62284789b
|