{"id":34077534,"url":"https://github.com/busysloths/mlox","last_synced_at":"2026-05-04T09:03:49.629Z","repository":{"id":262798880,"uuid":"887801339","full_name":"BusySloths/mlox","owner":"BusySloths","description":"Sovereign AI Infrastructure. Open by Design. Slothfully Simple. ","archived":false,"fork":false,"pushed_at":"2026-04-29T12:08:45.000Z","size":11951,"stargazers_count":11,"open_issues_count":6,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-04-29T12:24:53.079Z","etag":null,"topics":["ai","airflow","infrastructure-management","mlflow","mlops","model-deployment","model-tracking","secret-management","ui"],"latest_commit_sha":null,"homepage":"https://busysloths.github.io/mlox/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/BusySloths.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":["nicococo"],"patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"lfx_crowdfunding":null,"polar":null,"buy_me_a_coffee":null,"thanks":null,"custom":null}},"created_at":"2024-11-13T10:04:53.000Z","updated_at":"2026-04-29T10:14:38.000Z","dependencies_parsed_at":"2026-01-04T06:08:04.471Z","dependency_job_id":null,"html_url":"https://github.com/BusySloths/mlox","commit_stats":null,"previous_names":["nicococo/mlox","busysloths/mlox"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/BusySloths/mlox","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BusySloths%2Fmlox","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BusySloths%2Fmlox/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BusySloths%2Fmlox/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BusySloths%2Fmlox/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/BusySloths","download_url":"https://codeload.github.com/BusySloths/mlox/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BusySloths%2Fmlox/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32600968,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-03T22:12:39.696Z","status":"online","status_checked_at":"2026-05-04T02:00:06.625Z","response_time":58,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","airflow","infrastructure-management","mlflow","mlops","model-deployment","model-tracking","secret-management","ui"],"created_at":"2025-12-14T10:06:25.907Z","updated_at":"2026-05-04T09:03:49.624Z","avatar_url":"https://github.com/BusySloths.png","language":"Python","funding_links":["https://github.com/sponsors/nicococo"],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/BusySloths/mlox\"\u003e\n    \u003cimg src=\"https://github.com/BusySloths/mlox/blob/main/mlox/resources/mlox_sloth_logo.png?raw=true\" alt=\"MLOX Logo\" width=\"400px\"/\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003eSovereign AI Infrastructure. Open by Design. Slothfully Simple.\u003c/strong\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  A configuration-driven control plane for deploying production-grade MLOps on your own servers — without cloud lock-in.\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://qlty.sh/gh/BusySloths/projects/mlox\" target=\"_blank\"\u003e\u003cimg src=\"https://qlty.sh/gh/BusySloths/projects/mlox/maintainability.svg\" alt=\"Maintainability\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://qlty.sh/gh/BusySloths/projects/mlox\" target=\"_blank\"\u003e\u003cimg src=\"https://qlty.sh/gh/BusySloths/projects/mlox/coverage.svg\" alt=\"Code Coverage\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/BusySloths/mlox/issues\" target=\"_blank\"\u003e\u003cimg alt=\"GitHub Issues\" src=\"https://img.shields.io/github/issues/busysloths/mlox\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/BusySloths/mlox/discussions\" target=\"_blank\"\u003e\u003cimg alt=\"GitHub Discussions\" src=\"https://img.shields.io/github/discussions/busysloths/mlox\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://drive.google.com/file/d/1Y368yXcaQt1dJ6riOCzI7-pSQBnJjyEP/view?usp=sharing\"\u003e\u003cimg src=\"https://img.shields.io/badge/Slides-State_of_the_Union-9cf\" alt=\"Slides: State of the Union\" /\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n---\n\n## What is MLOX?\n\nCloud MLOps costs thousands per month. Setup is painful. Vendor lock-in is a trap.\n\nMLOX 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.\n\nIt's for engineers who prefer thoughtful systems over chaos. Backed by open source. Powered by sloths.\n\n\u003e **[State of the Union (Sept 2025)](https://drive.google.com/file/d/1Y368yXcaQt1dJ6riOCzI7-pSQBnJjyEP/view?usp=sharing)** — a short slide overview of what MLOX is, what problem it solves, and where it's heading.\n\n---\n\n## Current Status\n\nMLOX 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**.\n\nWe welcome contributors, early adopters, and honest feedback. If you hit something broken, please [open an issue](https://github.com/BusySloths/mlox/issues/new/choose) or reach out at `contact@mlox.org`.\n\n---\n\n## What Can You Do with MLOX?\n\n| Area | What's included |\n|------|----------------|\n| **Infrastructure** | Add/remove/tag servers; choose Native, Docker, or Kubernetes runtime; spin up single- or multi-node clusters |\n| **Services** | Deploy, update, and remove services; centralized secrets; dependency wiring between services |\n| **Code** | `busysloths-mlox` PyPI package with client integrations, SDK helpers, and example snippets |\n| **Lifecycle Management** | Migrate, upgrade, export, and decommission services *(planned)* |\n\n---\n\n## Services Catalog\n\n| Category | Services | Status |\n|----------|----------|--------|\n| ML Platforms | MLflow 2.x, MLflow 3.x, Airflow 2.x, Airflow 3.x | ✅ Stable |\n| Model Serving | MLflow MLServer | ✅ Stable |\n| LLMs \u0026 Inference | LiteLLM | ✅ Stable |\n| Vector \u0026 Feature Stores | Milvus, Feast | ✅ Stable |\n| Data \u0026 Streaming | PostgreSQL, Redis, MinIO, Kafka | ✅ Stable |\n| Observability | InfluxDB, OpenTelemetry | ✅ Stable |\n| Secrets \u0026 Access | OpenBao, Tiny Secret Manager, Docker Registry | ✅ Stable |\n| Kubernetes Add-ons | K8s Dashboard, Headlamp, KubeApps | 🔄 Experimental |\n| Cloud Integrations | GCP (BigQuery, Cloud Storage, Sheets, Secret Manager) | 🔄 Experimental |\n| Source Control | GitHub repository import | ✅ Stable |\n\n---\n\n## Architecture in 30 Seconds\n\n```text\nCLI     TUI     Streamlit Web UI     Other UIs\n  \\      |             |                /\n   \\     |             |               /\n    +----+-------------+--------------+\n                    |\n                    v\n      `mlox/application/use_cases/*`\n         shared session-based logic\n                    |\n                    v\n              `MloxSession`\n   project + encrypted secret manager + infrastructure\n             /                               \\\n            v                                 v\n secret-manager backend                `Infrastructure`\n (InMemory/TinySM/OpenBao/GCP)      topology for one project\n                                            |\n                                            v\n                           `Bundle` = compute/server + services[*]\n                                      |\n                                      v\n                    execution via `mlox/executors.py` + `mlox/execution/*`\n```\n\n`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.\n\nYAML 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.\n\nFor deeper reading:\n\n- [Architecture Guide (humans)](docs/ARCHITECTURE_HUMANS.md) — codebase walkthrough\n- [Architecture Guide (agents)](docs/ARCHITECTURE_AGENTS.md) — high-risk areas and invariants\n\n---\n\n## Quickstart\n\n```bash\n# 1. Install Task (https://taskfile.dev/installation/)\n\n# 2. Clone\ngit clone https://github.com/BusySloths/mlox.git \u0026\u0026 cd mlox\n\n# 3. Set up environment (creates conda env 'mlox-dev' with Python 3.12.5)\ntask first:steps\n\n# 4. Launch the Web UI\ntask ui:streamlit\n\n# 5. Or try the CLI\ntask ui:cli CLI_ARGS=\"--help\"\n```\n\nSee [Installation Guide](docs/INSTALLATION.md) for a fuller walkthrough including Docker and Kubernetes setup.\n\n---\n\n## Project Structure\n\n```\nmlox/\n├── mlox/\n│   ├── application/    # facade + session-based use_cases\n│   ├── cli/            # Typer CLI package (root app + command modules)\n│   ├── services/       # 20+ deployable ML services (one directory each)\n│   ├── servers/        # Native and Ubuntu/SSH backends\n│   ├── tui/            # Textual terminal UI + TUI-specific UI handlers\n│   ├── ui/             # frontend UI handler registry\n│   ├── view/           # Streamlit web UI + Streamlit-specific UI handlers\n│   ├── session.py      # Runtime state \u0026 persistence\n│   ├── infra.py        # Service/server graph\n│   ├── config.py       # YAML loading + plugin discovery + UI handler lookup\n│   ├── execution/      # backend/system execution helpers\n│   └── executors.py    # remote task executor layer used by services/servers\n├── tests/\n│   ├── unit/           # Fast tests, no external deps\n│   └── integration/    # Multipass VM tests\n├── examples/           # OTel, MLflow tracking, DAG templates\n├── docs/               # Architecture, installation, contribution guides\n└── website/            # Astro landing page\n```\n\n---\n\n## Contributing\n\n### Sloth-Friendly Setup\n\n```bash\n# 1. Install Task (https://taskfile.dev/installation/)\n# 2. Clone the repo\ngit clone https://github.com/BusySloths/mlox.git \u0026\u0026 cd mlox\n# 3. Set up the dev environment\ntask first:steps\n# 4. Install dev dependencies\npip install -e .[dev]\n```\n\n### Run Tests\n\n```bash\ntask dev:lint                   # flake8\ntask tests:unit:run             # unit tests (fast, no external deps)\ntask tests:integration:run      # integration tests (requires Multipass VMs)\n```\n\n### Ways to Contribute\n\n- [Bug reports](https://github.com/BusySloths/mlox/issues/new/choose)\n- [Documentation improvements](https://github.com/BusySloths/mlox/issues/new/choose)\n- [Feature requests](https://github.com/BusySloths/mlox/issues/new/choose)\n- [New service implementations](docs/ARCHITECTURE_HUMANS.md)\n- [Examples and tutorials](examples/)\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md) for the full guide and [docs/WORKFLOW_QUICK_REFERENCE.md](docs/WORKFLOW_QUICK_REFERENCE.md) for how we use GitHub Projects, Milestones, and Issues.\n\n---\n\n## Documentation\n\n| Document | Description |\n|----------|-------------|\n| [Installation Guide](docs/INSTALLATION.md) | Setup from scratch |\n| [Architecture (humans)](docs/ARCHITECTURE_HUMANS.md) | Codebase walkthrough |\n| [Architecture (agents)](docs/ARCHITECTURE_AGENTS.md) | High-risk areas and invariants |\n| [Contributing Guide](CONTRIBUTING.md) | How to contribute |\n| [Workflow Quick Reference](docs/WORKFLOW_QUICK_REFERENCE.md) | Labels, milestones, PRs |\n| [Plugin Guide](docs/PLUGIN_CONFIGS.md) | External service and server config plugins |\n| [API Docs](https://busysloths.github.io/mlox/mlox.html) | Generated Python API reference |\n\n---\n\n## Sponsors\n\nMLOX is proudly funded by:\n\n\u003cimg src=\"https://github.com/BusySloths/mlox/blob/main/mlox/resources/BMFTR_logo.jpg?raw=true\" alt=\"BMFTR\" width=\"420px\"/\u003e\n\n## Supporters\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://github.com/BusySloths/mlox/blob/main/mlox/resources/PrototypeFund_logo_dark.png?raw=true\" alt=\"PrototypeFund\" width=\"380px\"/\u003e\n\u003c/p\u003e\n\n---\n\n## License \u0026 Contact\n\nMLOX is open-source, distributed under the [MIT License](LICENSE). Contributions are welcome and subject to the same terms.\n\nWe are looking for people invested in the problem we're solving. Say hello at `contact@mlox.org` or start a conversation in [GitHub Discussions](https://github.com/BusySloths/mlox/discussions).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbusysloths%2Fmlox","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbusysloths%2Fmlox","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbusysloths%2Fmlox/lists"}