ExaMLOps v0.37.0¶
This is the only long-form release note on the site
ExaMLOps is at v0.48.0; this note covers v0.37.0. It is kept because it is the fullest
written account of the project-centric control plane and authored providers, not because it
is current. The complete, per-release history is CHANGELOG.md in the repository.
Theme: a project-centric, editable control plane — and user-authored calculation plugins.
This release makes the dashboard editable end-to-end around the Project as the unit of work, and introduces authored providers — the ability to write the Python behind any calculation from a Jupyter notebook, the CLI, or the dashboard, safely and per-project.
Highlights¶
Authored calculation plugins (ADR 0074)¶
Author the Python behind FinOps cost/carbon (and drift, promotion, llm_*) without shipping
a package:
- From a Jupyter notebook —
examlops.providers.register_from_source(test live) /save_provider(persist). Notebooks now mount the platform and a shared plugin store, soimport examlopsjust works. Starter notebook:docs/notebooks/manage-providers.ipynb. - From the CLI —
exa providers author | authored | show | activate | rm | validate. - From the dashboard — the Providers card on each project: a code editor with a Validate button, plus per-row Edit / Activate / Delete.
- Safe by construction — every upload passes an AST-allowlist sandbox (no
import,eval,exec,open,getattr, dunder access, orglobals;Provider/ProviderMeta/mathpre-injected). Each(project, domain)has one active provider that FinOps honours.
Editable project workspace¶
- Create / start / stop / delete a project workbench (notebook) from the UI, each with its own persistent volume and the project's connections injected as env vars.
- Edit a project's quota (CPU / memory / storage / GPU), budgets, and isolated namespace.
Editable MLOps operations¶
- Serving traffic split — set per-alias weights (sum-to-100) from the MLOps console.
- Drift actions — set baseline, reset snapshots, and enable/disable auto-retrain per model.
Fixes¶
- Services tab no longer 500s (image name read from container attrs, not the forbidden images API).
- The HTTP client wraps read-phase socket timeouts so tools degrade gracefully instead of crashing.
Notes¶
- All dashboard writes reuse the same
examlops.*code paths as theexaCLI, are role-gated (viewer read-only, admin writes), and audited. - New env var
EXAMLOPS_PROVIDERS_DIRsets the shared authored-provider store; point every process (CLI, dashboard, notebooks) at one path so plugins resolve everywhere.