Skip to content

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 notebookexamlops.providers.register_from_source (test live) / save_provider (persist). Notebooks now mount the platform and a shared plugin store, so import examlops just works. Starter notebook: docs/notebooks/manage-providers.ipynb.
  • From the CLIexa 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, or globals; Provider/ProviderMeta/math pre-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 the exa CLI, are role-gated (viewer read-only, admin writes), and audited.
  • New env var EXAMLOPS_PROVIDERS_DIR sets the shared authored-provider store; point every process (CLI, dashboard, notebooks) at one path so plugins resolve everywhere.