Accelerate your ML journey—deploy production-ready MLOps in minutes, not months.
Project description
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.
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:
- Architecture Guide (humans) — codebase walkthrough
- Architecture Guide (agents) — high-risk areas and invariants
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
- Bug reports
- Documentation improvements
- Feature requests
- New service implementations
- Examples and tutorials
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:
Supporters
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
Release history Release notifications | RSS feed
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 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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
63a212369e0058ff8db658d1a312c59f708efa222c613e197206a952bf71a001
|
|
| MD5 |
242e697531e3c74a209eb48fb73e956a
|
|
| BLAKE2b-256 |
ba0e3808c2bfbce98f8335c26c4d7d97887490692cd834fefac324d44b73ed6e
|
File details
Details for the file busysloths_mlox-0.2.0.post2-py3-none-any.whl.
File metadata
- Download URL: busysloths_mlox-0.2.0.post2-py3-none-any.whl
- Upload date:
- Size: 4.2 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d8e59b74c6d731ec851a05f2b66f903c352f733361beca7c0a55fa94b58d6705
|
|
| MD5 |
c5aee0fe5dfff05fb1409e4c8e82c002
|
|
| BLAKE2b-256 |
de78d3c80607e04140bb08b3ba69c706d4d80551591bd968f77f995efc446d60
|