Skip to main content

Accelerate your ML journey—deploy production-ready MLOps in minutes, not months.

Project description

MLOX Logo

Sovereign AI Infrastructure. Open by Design. Slothfully Simple.

A configuration-driven control plane for deploying production-grade MLOps on your own servers — without cloud lock-in.

Maintainability Code Coverage GitHub Issues GitHub Discussions Slides: State of the Union


What is MLOX?

Cloud MLOps costs thousands per month. Setup is painful. Vendor lock-in is a trap.

MLOX is a calm, reproducible way to run production-grade ML infrastructure on your own servers or hybrid cloud. You define your stack in YAML, MLOX handles the rest — deploying services, managing secrets, and wiring dependencies across backends. Three interfaces (Web UI, TUI, CLI) share one inspectable config-driven core, while frontend-specific UI handlers are registered separately.

It's for engineers who prefer thoughtful systems over chaos. Backed by open source. Powered by sloths.

State of the Union (Sept 2025) — a short slide overview of what MLOX is, what problem it solves, and where it's heading.


Current Status

MLOX is in active alpha development (v0.x). Core infrastructure, all three backends (Native, Docker, Kubernetes), and the major services are functional. The project has been accepted at CAIN 2026.

We welcome contributors, early adopters, and honest feedback. If you hit something broken, please open an issue or reach out at contact@mlox.org.


What Can You Do with MLOX?

Area What's included
Infrastructure Add/remove/tag servers; choose Native, Docker, or Kubernetes runtime; spin up single- or multi-node clusters
Services Deploy, update, and remove services; centralized secrets; dependency wiring between services
Code busysloths-mlox PyPI package with client integrations, SDK helpers, and example snippets
Lifecycle Management Migrate, upgrade, export, and decommission services (planned)

Services Catalog

Category Services Status
ML Platforms MLflow 2.x, MLflow 3.x, Airflow 2.x, Airflow 3.x ✅ Stable
Model Serving MLflow MLServer ✅ Stable
LLMs & Inference LiteLLM ✅ Stable
Vector & Feature Stores Milvus, Feast ✅ Stable
Data & Streaming PostgreSQL, Redis, MinIO, Kafka ✅ Stable
Observability InfluxDB, OpenTelemetry ✅ Stable
Secrets & Access OpenBao, Tiny Secret Manager, Docker Registry ✅ Stable
Kubernetes Add-ons K8s Dashboard, Headlamp, KubeApps 🔄 Experimental
Cloud Integrations GCP (BigQuery, Cloud Storage, Sheets, Secret Manager) 🔄 Experimental
Source Control GitHub repository import ✅ Stable

Architecture in 30 Seconds

CLI     TUI     Streamlit Web UI     Other UIs
  \      |             |                /
   \     |             |               /
    +----+-------------+--------------+
                    |
                    v
      `mlox/application/use_cases/*`
         shared session-based logic
                    |
                    v
              `MloxSession`
   project + encrypted secret manager + infrastructure
             /                               \
            v                                 v
 secret-manager backend                `Infrastructure`
 (InMemory/TinySM/OpenBao/GCP)      topology for one project
                                            |
                                            v
                           `Bundle` = compute/server + services[*]
                                      |
                                      v
                    execution via `mlox/executors.py` + `mlox/execution/*`

MloxSession is the runtime center: it always carries project metadata, an encrypted key-value secret manager, and the current Infrastructure. The important shared application layer is mlox/application/use_cases/*; CLI already routes through it, and TUI/Web/future UIs should do the same. Infrastructure models topology through bundles, where each bundle groups one compute/server with its services. Anything executed on a compute goes through the execution layer, while compute capabilities already exist (git, docker, kubernetes, ...) and service capabilities are an emerging architectural direction.

YAML stays focused on deployable configs and Python build classes. Frontend-specific setup/settings components live in the frontend packages (mlox/view/*, mlox/tui/*) and are resolved through mlox/ui/registry.py, which keeps UI code out of service/server config definitions and creates a future extension point for plugin-provided UI handlers.

For deeper reading:


Quickstart

# 1. Install Task (https://taskfile.dev/installation/)

# 2. Clone
git clone https://github.com/BusySloths/mlox.git && cd mlox

# 3. Set up environment (creates conda env 'mlox-dev' with Python 3.12.5)
task first:steps

# 4. Launch the Web UI
task ui:streamlit

# 5. Or try the CLI
task ui:cli CLI_ARGS="--help"

See Installation Guide for a fuller walkthrough including Docker and Kubernetes setup.


Project Structure

mlox/
├── mlox/
│   ├── application/    # facade + session-based use_cases
│   ├── cli/            # Typer CLI package (root app + command modules)
│   ├── services/       # 20+ deployable ML services (one directory each)
│   ├── servers/        # Native and Ubuntu/SSH backends
│   ├── tui/            # Textual terminal UI + TUI-specific UI handlers
│   ├── ui/             # frontend UI handler registry
│   ├── view/           # Streamlit web UI + Streamlit-specific UI handlers
│   ├── session.py      # Runtime state & persistence
│   ├── infra.py        # Service/server graph
│   ├── config.py       # YAML loading + plugin discovery + UI handler lookup
│   ├── execution/      # backend/system execution helpers
│   └── executors.py    # remote task executor layer used by services/servers
├── tests/
│   ├── unit/           # Fast tests, no external deps
│   └── integration/    # Multipass VM tests
├── examples/           # OTel, MLflow tracking, DAG templates
├── docs/               # Architecture, installation, contribution guides
└── website/            # Astro landing page

Contributing

Sloth-Friendly Setup

# 1. Install Task (https://taskfile.dev/installation/)
# 2. Clone the repo
git clone https://github.com/BusySloths/mlox.git && cd mlox
# 3. Set up the dev environment
task first:steps
# 4. Install dev dependencies
pip install -e .[dev]

Run Tests

task dev:lint                   # flake8
task tests:unit:run             # unit tests (fast, no external deps)
task tests:integration:run      # integration tests (requires Multipass VMs)

Ways to Contribute

See CONTRIBUTING.md for the full guide and docs/WORKFLOW_QUICK_REFERENCE.md for how we use GitHub Projects, Milestones, and Issues.


Documentation

Document Description
Installation Guide Setup from scratch
Architecture (humans) Codebase walkthrough
Architecture (agents) High-risk areas and invariants
Contributing Guide How to contribute
Workflow Quick Reference Labels, milestones, PRs
Plugin Guide External service and server config plugins
API Docs Generated Python API reference

Sponsors

MLOX is proudly funded by:

BMFTR

Supporters

PrototypeFund


License & Contact

MLOX is open-source, distributed under the MIT License. Contributions are welcome and subject to the same terms.

We are looking for people invested in the problem we're solving. Say hello at contact@mlox.org or start a conversation in GitHub Discussions.

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

busysloths_mlox-0.2.0.post2.tar.gz (4.1 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

busysloths_mlox-0.2.0.post2-py3-none-any.whl (4.2 MB view details)

Uploaded Python 3

File details

Details for the file busysloths_mlox-0.2.0.post2.tar.gz.

File metadata

  • Download URL: busysloths_mlox-0.2.0.post2.tar.gz
  • Upload date:
  • Size: 4.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for busysloths_mlox-0.2.0.post2.tar.gz
Algorithm Hash digest
SHA256 63a212369e0058ff8db658d1a312c59f708efa222c613e197206a952bf71a001
MD5 242e697531e3c74a209eb48fb73e956a
BLAKE2b-256 ba0e3808c2bfbce98f8335c26c4d7d97887490692cd834fefac324d44b73ed6e

See more details on using hashes here.

File details

Details for the file busysloths_mlox-0.2.0.post2-py3-none-any.whl.

File metadata

File hashes

Hashes for busysloths_mlox-0.2.0.post2-py3-none-any.whl
Algorithm Hash digest
SHA256 d8e59b74c6d731ec851a05f2b66f903c352f733361beca7c0a55fa94b58d6705
MD5 c5aee0fe5dfff05fb1409e4c8e82c002
BLAKE2b-256 de78d3c80607e04140bb08b3ba69c706d4d80551591bd968f77f995efc446d60

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page