marimo-flow


Namemarimo-flow JSON
Version 0.1.2 PyPI version JSON
download
home_pageNone
SummaryMarimo Flow - Interactive ML notebooks with MLflow integration
upload_time2025-07-08 17:34:28
maintainerNone
docs_urlNone
authorNone
requires_python>=3.9
licenseMIT
keywords marimo mlflow machine-learning notebooks interactive
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Marimo Flow 🌊

[![Python](https://img.shields.io/badge/Python-3.8%2B-blue?logo=python&logoColor=white)](https://python.org)
[![Marimo](https://img.shields.io/badge/Marimo-Latest-orange?logo=python&logoColor=white)](https://marimo.io)
[![MLflow](https://img.shields.io/badge/MLflow-Latest-blue?logo=mlflow&logoColor=white)](https://mlflow.org)
[![Docker](https://img.shields.io/badge/Docker-Ready-blue?logo=docker&logoColor=white)](https://docker.com)
[![License](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE)
[![Code Style](https://img.shields.io/badge/Code%20Style-Black-black)](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[![Python](https://img.shields.io/badge/Python-3.8%2B-blue?logo=python&logoColor=white)](https://python.org)\n[![Marimo](https://img.shields.io/badge/Marimo-Latest-orange?logo=python&logoColor=white)](https://marimo.io)\n[![MLflow](https://img.shields.io/badge/MLflow-Latest-blue?logo=mlflow&logoColor=white)](https://mlflow.org)\n[![Docker](https://img.shields.io/badge/Docker-Ready-blue?logo=docker&logoColor=white)](https://docker.com)\n[![License](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE)\n[![Code Style](https://img.shields.io/badge/Code%20Style-Black-black)](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"
}
        
Elapsed time: 0.48530s