# Marimo Flow 🌊
[](https://python.org)
[](https://marimo.io)
[](https://mlflow.org)
[](https://docker.com)
[](LICENSE)
[](https://github.com/psf/black)
**Modern reactive ML development with Marimo notebooks and MLflow experiment tracking**
## Why Marimo Flow is Powerful 🚀
**Marimo Flow** combines the best of reactive notebook development with robust ML experiment tracking:
- **🔄 Reactive Development**: Marimo's dataflow graph ensures your notebooks are always consistent - change a parameter and watch your entire pipeline update automatically
- **🤖 AI-Enhanced Workflow**: Built-in GitHub Copilot support and AI assistants accelerate your ML development
- **📊 Seamless ML Pipeline**: MLflow integration tracks every experiment, model, and metric without breaking your flow
This combination eliminates the reproducibility issues of traditional notebooks while providing enterprise-grade experiment tracking.
## Features ✨
- **📓 Marimo Reactive Notebooks**: Git-friendly `.py` notebooks with automatic dependency tracking
- **🔬 MLflow Experiment Tracking**: Complete ML lifecycle management with model registry
- **🐳 Docker Deployment**: One-command setup with docker-compose
- **💾 SQLite Backend**: Lightweight, file-based storage for experiments
- **🎯 Interactive ML Development**: Real-time parameter tuning with instant feedback
## Quick Start 🏃♂️
### With Docker (Recommended)
```bash
# Clone and start services
git clone <repository-url>
cd marimo-flow
docker-compose up -d
# Access services
# Marimo: http://localhost:2718
# MLflow: http://localhost:5000
```
### Local Development
```bash
# Install dependencies
uv sync
# Start MLflow server
uv run mlflow server --host 0.0.0.0 --port 5000 --backend-store-uri sqlite:///data/mlflow/db/mlflow.db --default-artifact-root ./data/mlflow/artifacts
# Start Marimo (in another terminal)
uv run marimo edit examples/
```
## Example Notebooks 📚
Explore our focused, production-ready notebooks:
### 🚀 [Basic ML Workflow](examples/01_basic_ml_workflow.py)
- Simple classification with Random Forest
- Real-time parameter tuning
- MLflow experiment tracking
- Interactive visualizations
### 🏆 [Model Comparison](examples/02_model_comparison.py)
- Compare multiple algorithms (RF, GB, LR, SVM)
- Cross-validation analysis
- Performance benchmarking
- Built-in datasets (Wine, Iris, Breast Cancer)
### 🔍 [Data Exploration](examples/03_data_exploration.py)
- Interactive statistical analysis
- Correlation heatmaps
- Distribution visualizations
- PCA and t-SNE dimensionality reduction
Each notebook demonstrates reactive development principles and follows Marimo best practices for maintainable, reproducible ML code.
## Project Structure 📁
```
marimo-flow/
├── examples/ # Marimo notebooks
│ ├── 01_basic_ml_workflow.py # Basic ML pipeline
│ ├── 02_model_comparison.py # Multi-model comparison
│ └── 03_data_exploration.py # Interactive data analysis
├── data/
│ └── mlflow/ # MLflow storage
│ ├── artifacts/ # Model artifacts
│ ├── db/ # SQLite database
│ └── prompts/ # Prompt templates
├── docker-compose.yaml # Service orchestration
├── Dockerfile # Container definition
├── pyproject.toml # Dependencies
└── README.md # This file
```
## Configuration ⚙️
### Environment Variables
- `MLFLOW_TRACKING_URI`: MLflow server URL (default: `http://localhost:5000`)
- `MLFLOW_BACKEND_STORE_URI`: Database connection string
- `MLFLOW_DEFAULT_ARTIFACT_ROOT`: Artifact storage location
### Docker Services
- **Marimo**: Port 2718 - Interactive notebook environment
- **MLflow**: Port 5000 - Experiment tracking UI
## Pre-installed ML & Data Science Stack 📦
### Machine Learning & Scientific Computing
- **[scikit-learn](https://scikit-learn.org/)** `^1.5.2` - Machine learning library
- **[NumPy](https://numpy.org/)** `^2.1.3` - Numerical computing
- **[pandas](https://pandas.pydata.org/)** `^2.2.3` - Data manipulation and analysis
- **[PyArrow](https://arrow.apache.org/docs/python/)** `^18.0.0` - Columnar data processing
- **[SciPy](https://scipy.org/)** `^1.14.1` - Scientific computing
- **[matplotlib](https://matplotlib.org/)** `^3.9.2` - Plotting library
### High-Performance Data Processing
- **[Polars](https://pola.rs/)** `^1.12.0` - Lightning-fast DataFrame library
- **[DuckDB](https://duckdb.org/)** `^1.1.3` - In-process analytical database
- **[Altair](https://altair-viz.github.io/)** `^5.4.1` - Declarative statistical visualization
### AI & LLM Integration
- **[OpenAI](https://platform.openai.com/docs/)** `^1.54.4` - GPT API integration
- **[FastAPI](https://fastapi.tiangolo.com/)** `^0.115.4` - Modern web framework
- **[Pydantic](https://docs.pydantic.dev/)** `^2.10.2` - Data validation
### Database & Storage
- **[SQLAlchemy](https://www.sqlalchemy.org/)** `^2.0.36` - SQL toolkit and ORM
- **[Alembic](https://alembic.sqlalchemy.org/)** `^1.14.0` - Database migrations
- **[SQLGlot](https://sqlglot.com/)** `^25.30.2` - SQL parser and transpiler
### Web & API
- **[Starlette](https://www.starlette.io/)** `^0.41.2` - ASGI framework
- **[Uvicorn](https://www.uvicorn.org/)** `^0.32.0` - ASGI server
- **[httpx](https://www.python-httpx.org/)** `^0.27.2` - HTTP client
### Development Tools
- **[Black](https://black.readthedocs.io/)** `^24.10.0` - Code formatter
- **[Ruff](https://docs.astral.sh/ruff/)** `^0.7.4` - Fast Python linter
- **[pytest](https://docs.pytest.org/)** `^8.3.3` - Testing framework
- **[MyPy](https://mypy.readthedocs.io/)** `^1.13.0` - Static type checker
## API Endpoints 🔌
### MLflow REST API
- **Experiments**: `GET /api/2.0/mlflow/experiments/list`
- **Runs**: `GET /api/2.0/mlflow/runs/search`
- **Models**: `GET /api/2.0/mlflow/registered-models/list`
### Marimo Server
- **Notebooks**: `GET /` - File browser and editor
- **Apps**: `GET /run/<notebook>` - Run notebook as web app
## Contributing 🤝
1. Fork the repository
2. Create a feature branch: `git checkout -b feature-name`
3. Make your changes following the coding standards
4. Test your changes: `uv run pytest`
5. Submit a pull request
## License 📄
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
---
**Built with ❤️ using Marimo and MLflow**
Raw data
{
"_id": null,
"home_page": null,
"name": "marimo-flow",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.9",
"maintainer_email": null,
"keywords": "marimo, mlflow, machine-learning, notebooks, interactive",
"author": null,
"author_email": "Bjoern Bethge <bjoern.bethge@gmail.com>",
"download_url": "https://files.pythonhosted.org/packages/67/15/b13feb5a5b569cd208ffb557930ab496abc93ce985404d25b58a18ac6c42/marimo_flow-0.1.2.tar.gz",
"platform": null,
"description": "# Marimo Flow \ud83c\udf0a\n\n[](https://python.org)\n[](https://marimo.io)\n[](https://mlflow.org)\n[](https://docker.com)\n[](LICENSE)\n[](https://github.com/psf/black)\n\n**Modern reactive ML development with Marimo notebooks and MLflow experiment tracking**\n\n## Why Marimo Flow is Powerful \ud83d\ude80\n\n**Marimo Flow** combines the best of reactive notebook development with robust ML experiment tracking:\n\n- **\ud83d\udd04 Reactive Development**: Marimo's dataflow graph ensures your notebooks are always consistent - change a parameter and watch your entire pipeline update automatically\n- **\ud83e\udd16 AI-Enhanced Workflow**: Built-in GitHub Copilot support and AI assistants accelerate your ML development\n- **\ud83d\udcca Seamless ML Pipeline**: MLflow integration tracks every experiment, model, and metric without breaking your flow\n\nThis combination eliminates the reproducibility issues of traditional notebooks while providing enterprise-grade experiment tracking.\n\n## Features \u2728\n\n- **\ud83d\udcd3 Marimo Reactive Notebooks**: Git-friendly `.py` notebooks with automatic dependency tracking\n- **\ud83d\udd2c MLflow Experiment Tracking**: Complete ML lifecycle management with model registry\n- **\ud83d\udc33 Docker Deployment**: One-command setup with docker-compose\n- **\ud83d\udcbe SQLite Backend**: Lightweight, file-based storage for experiments\n- **\ud83c\udfaf Interactive ML Development**: Real-time parameter tuning with instant feedback\n\n## Quick Start \ud83c\udfc3\u200d\u2642\ufe0f\n\n### With Docker (Recommended)\n\n```bash\n# Clone and start services\ngit clone <repository-url>\ncd marimo-flow\ndocker-compose up -d\n\n# Access services\n# Marimo: http://localhost:2718\n# MLflow: http://localhost:5000\n```\n\n### Local Development\n\n```bash\n# Install dependencies\nuv sync\n\n# Start MLflow server\nuv run mlflow server --host 0.0.0.0 --port 5000 --backend-store-uri sqlite:///data/mlflow/db/mlflow.db --default-artifact-root ./data/mlflow/artifacts\n\n# Start Marimo (in another terminal)\nuv run marimo edit examples/\n```\n\n## Example Notebooks \ud83d\udcda\n\nExplore our focused, production-ready notebooks:\n\n### \ud83d\ude80 [Basic ML Workflow](examples/01_basic_ml_workflow.py)\n- Simple classification with Random Forest\n- Real-time parameter tuning\n- MLflow experiment tracking\n- Interactive visualizations\n\n### \ud83c\udfc6 [Model Comparison](examples/02_model_comparison.py)\n- Compare multiple algorithms (RF, GB, LR, SVM)\n- Cross-validation analysis\n- Performance benchmarking\n- Built-in datasets (Wine, Iris, Breast Cancer)\n\n### \ud83d\udd0d [Data Exploration](examples/03_data_exploration.py)\n- Interactive statistical analysis\n- Correlation heatmaps\n- Distribution visualizations\n- PCA and t-SNE dimensionality reduction\n\nEach notebook demonstrates reactive development principles and follows Marimo best practices for maintainable, reproducible ML code.\n\n## Project Structure \ud83d\udcc1\n\n```\nmarimo-flow/\n\u251c\u2500\u2500 examples/ # Marimo notebooks\n\u2502 \u251c\u2500\u2500 01_basic_ml_workflow.py # Basic ML pipeline\n\u2502 \u251c\u2500\u2500 02_model_comparison.py # Multi-model comparison\n\u2502 \u2514\u2500\u2500 03_data_exploration.py # Interactive data analysis\n\u251c\u2500\u2500 data/\n\u2502 \u2514\u2500\u2500 mlflow/ # MLflow storage\n\u2502 \u251c\u2500\u2500 artifacts/ # Model artifacts\n\u2502 \u251c\u2500\u2500 db/ # SQLite database\n\u2502 \u2514\u2500\u2500 prompts/ # Prompt templates\n\u251c\u2500\u2500 docker-compose.yaml # Service orchestration\n\u251c\u2500\u2500 Dockerfile # Container definition\n\u251c\u2500\u2500 pyproject.toml # Dependencies\n\u2514\u2500\u2500 README.md # This file\n```\n\n## Configuration \u2699\ufe0f\n\n### Environment Variables\n\n- `MLFLOW_TRACKING_URI`: MLflow server URL (default: `http://localhost:5000`)\n- `MLFLOW_BACKEND_STORE_URI`: Database connection string\n- `MLFLOW_DEFAULT_ARTIFACT_ROOT`: Artifact storage location\n\n### Docker Services\n\n- **Marimo**: Port 2718 - Interactive notebook environment\n- **MLflow**: Port 5000 - Experiment tracking UI\n\n## Pre-installed ML & Data Science Stack \ud83d\udce6\n\n### Machine Learning & Scientific Computing\n- **[scikit-learn](https://scikit-learn.org/)** `^1.5.2` - Machine learning library\n- **[NumPy](https://numpy.org/)** `^2.1.3` - Numerical computing\n- **[pandas](https://pandas.pydata.org/)** `^2.2.3` - Data manipulation and analysis\n- **[PyArrow](https://arrow.apache.org/docs/python/)** `^18.0.0` - Columnar data processing\n- **[SciPy](https://scipy.org/)** `^1.14.1` - Scientific computing\n- **[matplotlib](https://matplotlib.org/)** `^3.9.2` - Plotting library\n\n### High-Performance Data Processing\n- **[Polars](https://pola.rs/)** `^1.12.0` - Lightning-fast DataFrame library\n- **[DuckDB](https://duckdb.org/)** `^1.1.3` - In-process analytical database\n- **[Altair](https://altair-viz.github.io/)** `^5.4.1` - Declarative statistical visualization\n\n### AI & LLM Integration\n- **[OpenAI](https://platform.openai.com/docs/)** `^1.54.4` - GPT API integration\n- **[FastAPI](https://fastapi.tiangolo.com/)** `^0.115.4` - Modern web framework\n- **[Pydantic](https://docs.pydantic.dev/)** `^2.10.2` - Data validation\n\n### Database & Storage\n- **[SQLAlchemy](https://www.sqlalchemy.org/)** `^2.0.36` - SQL toolkit and ORM\n- **[Alembic](https://alembic.sqlalchemy.org/)** `^1.14.0` - Database migrations\n- **[SQLGlot](https://sqlglot.com/)** `^25.30.2` - SQL parser and transpiler\n\n### Web & API\n- **[Starlette](https://www.starlette.io/)** `^0.41.2` - ASGI framework\n- **[Uvicorn](https://www.uvicorn.org/)** `^0.32.0` - ASGI server\n- **[httpx](https://www.python-httpx.org/)** `^0.27.2` - HTTP client\n\n### Development Tools\n- **[Black](https://black.readthedocs.io/)** `^24.10.0` - Code formatter\n- **[Ruff](https://docs.astral.sh/ruff/)** `^0.7.4` - Fast Python linter\n- **[pytest](https://docs.pytest.org/)** `^8.3.3` - Testing framework\n- **[MyPy](https://mypy.readthedocs.io/)** `^1.13.0` - Static type checker\n\n## API Endpoints \ud83d\udd0c\n\n### MLflow REST API\n- **Experiments**: `GET /api/2.0/mlflow/experiments/list`\n- **Runs**: `GET /api/2.0/mlflow/runs/search`\n- **Models**: `GET /api/2.0/mlflow/registered-models/list`\n\n### Marimo Server\n- **Notebooks**: `GET /` - File browser and editor\n- **Apps**: `GET /run/<notebook>` - Run notebook as web app\n\n## Contributing \ud83e\udd1d\n\n1. Fork the repository\n2. Create a feature branch: `git checkout -b feature-name`\n3. Make your changes following the coding standards\n4. Test your changes: `uv run pytest`\n5. Submit a pull request\n\n## License \ud83d\udcc4\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n---\n\n**Built with \u2764\ufe0f using Marimo and MLflow**\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Marimo Flow - Interactive ML notebooks with MLflow integration",
"version": "0.1.2",
"project_urls": {
"Documentation": "https://marimo-flow.readthedocs.io",
"Homepage": "https://github.com/bjoernbethge/marimo-flow",
"Issues": "https://github.com/bjoernbethge/marimo-flow/issues",
"Repository": "https://github.com/bjoernbethge/marimo-flow"
},
"split_keywords": [
"marimo",
" mlflow",
" machine-learning",
" notebooks",
" interactive"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "8c5c6230cc50e3528680556f3a514b1fc40424ed3e64966109244543c17d0fee",
"md5": "14d956cb1f54dff853e2487e9efd2ad0",
"sha256": "902cf505609fd05f57c30abd3b9dabd3ab0a88f5c58058035ac2bd8d325a2443"
},
"downloads": -1,
"filename": "marimo_flow-0.1.2-py3-none-any.whl",
"has_sig": false,
"md5_digest": "14d956cb1f54dff853e2487e9efd2ad0",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.9",
"size": 5273,
"upload_time": "2025-07-08T17:34:27",
"upload_time_iso_8601": "2025-07-08T17:34:27.127164Z",
"url": "https://files.pythonhosted.org/packages/8c/5c/6230cc50e3528680556f3a514b1fc40424ed3e64966109244543c17d0fee/marimo_flow-0.1.2-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "6715b13feb5a5b569cd208ffb557930ab496abc93ce985404d25b58a18ac6c42",
"md5": "a75f9f436b7ba3d30927e12684724130",
"sha256": "8a78980ca6f3271f928bb07a8d664cbc5fc59783c65e6db6ba3902996e67cb6c"
},
"downloads": -1,
"filename": "marimo_flow-0.1.2.tar.gz",
"has_sig": false,
"md5_digest": "a75f9f436b7ba3d30927e12684724130",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.9",
"size": 5719,
"upload_time": "2025-07-08T17:34:28",
"upload_time_iso_8601": "2025-07-08T17:34:28.481633Z",
"url": "https://files.pythonhosted.org/packages/67/15/b13feb5a5b569cd208ffb557930ab496abc93ce985404d25b58a18ac6c42/marimo_flow-0.1.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-07-08 17:34:28",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "bjoernbethge",
"github_project": "marimo-flow",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "marimo-flow"
}