{"id":9164,"library":"outerbounds","title":"Outerbounds (Metaflow Distribution)","description":"Outerbounds is an opinionated distribution of Metaflow, designed to streamline machine learning workflows by providing pre-configured cloud infrastructure and a curated set of dependencies. It aims to reduce administrative overhead, allowing data scientists to focus more on model development. The current version is 0.12.28 and it follows a continuous release cadence, often aligning with Metaflow updates.","status":"active","version":"0.12.28","language":"python","source_language":"en","source_url":"https://github.com/outerbounds/metaflow","tags":["data-science","machine-learning","mlops","workflow","orchestration","cloud","metaflow","aws","kubernetes"],"install":[{"cmd":"pip install outerbounds","lang":"bash","label":"Install Outerbounds"}],"dependencies":[{"reason":"Outerbounds is a distribution of Metaflow; all core functionality is provided by Metaflow.","package":"metaflow","optional":false}],"imports":[{"symbol":"FlowSpec","correct":"from metaflow import FlowSpec"},{"symbol":"step","correct":"from metaflow import step"},{"symbol":"current","correct":"from metaflow import current"},{"note":"Outerbounds itself does not introduce new APIs; all core Metaflow symbols are imported directly from 'metaflow'.","wrong":"from outerbounds import project","symbol":"project","correct":"from metaflow import project"}],"quickstart":{"code":"from metaflow import FlowSpec, step\n\nclass MyFirstFlow(FlowSpec):\n    @step\n    def start(self):\n        self.message = 'Hello, Outerbounds!'\n        print(self.message)\n        self.next(self.end)\n\n    @step\n    def end(self):\n        print(f\"Flow finished with message: {self.message}\")\n\nif __name__ == '__main__':\n    MyFirstFlow()","lang":"python","description":"This quickstart demonstrates a basic Metaflow workflow. While `outerbounds` provides underlying configuration for cloud execution, the code itself remains standard Metaflow. To run this, save it as a Python file (e.g., `my_flow.py`) and execute `python my_flow.py run` from your terminal. For cloud execution, you'll need to configure your Outerbounds environment (e.g., `metaflow configure aws`)."},"warnings":[{"fix":"Always refer to `metaflow` documentation for API usage. Think of `outerbounds` as the 'batteries included' version of `metaflow`.","message":"Outerbounds is primarily a distribution and configuration layer for Metaflow. It does not introduce new Python APIs compared to `metaflow`. All core functionalities and imports come directly from the `metaflow` package.","severity":"gotcha","affected_versions":"All versions"},{"fix":"Ensure your environment is correctly configured for your chosen cloud provider (e.g., AWS credentials, Kubernetes context) before attempting to run flows on the cloud. Consult the Outerbounds/Metaflow documentation for specific `metaflow configure` commands.","message":"The primary value of `outerbounds` comes from its pre-configured cloud integration (AWS, Kubernetes). While you can run flows locally, leveraging its full capabilities requires proper cloud setup and authentication.","severity":"gotcha","affected_versions":"All versions"},{"fix":"For each step, identify external dependencies and add appropriate decorators (e.g., `@conda(libraries={'scikit-learn': '1.0'})`) to ensure they are available in the execution environment. Missing dependencies are a common source of runtime errors in cloud steps.","message":"When running flows in a distributed cloud environment, ensure all necessary Python dependencies are specified. `outerbounds` bundles common ML dependencies, but custom or less common packages may need to be explicitly listed using `@conda`, `@pypi`, or `@pip` decorators in your Metaflow code.","severity":"gotcha","affected_versions":"All versions"},{"fix":"Before major upgrades of `outerbounds` (or when `metaflow` itself gets a major upgrade), review the `metaflow` release notes for breaking changes. Test your critical workflows in a staging environment.","message":"While `outerbounds` aims for stability, underlying `metaflow` versions may introduce breaking changes. Upgrading `outerbounds` implicitly upgrades `metaflow` and its dependencies, which can occasionally lead to unexpected behavior if your code relies on deprecated `metaflow` features.","severity":"breaking","affected_versions":"Metaflow versions 2.x to 3.x (and subsequent major versions)"}],"env_vars":null,"search_vec":"'0.12.28':49 'administr':34 'aim':31 'align':58 'allow':36 'aw':73 'cadenc':56 'cloud':22,71 'configur':21 'continu':54 'curat':26 'current':46 'data':37,63 'data-sci':62 'depend':29 'design':11 'develop':44 'distribut':3,8 'focus':40 'follow':52 'infrastructur':23 'kubernet':74 'learn':15,67 'machin':14,66 'machine-learn':65 'metaflow':2,10,60,72 'mlop':68 'model':43 'often':57 'opinion':7 'orchestr':70 'outerbound':1,4 'overhead':35 'pre':20 'pre-configur':19 'provid':18 'reduc':33 'releas':55 'scienc':64 'scientist':38 'set':27 'streamlin':13 'updat':61 'version':47 'workflow':16,69","created_at":"2026-04-16T18:48:48.053840+00:00","updated_at":"2026-04-16T18:48:48.053840+00:00","problems":[{"fix":"Ensure `outerbounds` (and thus `metaflow`) is installed correctly: `pip install outerbounds`. If using virtual environments, activate the correct environment.","cause":"The `outerbounds` package, despite being a distribution, explicitly depends on `metaflow`. This error indicates that `metaflow` itself was not installed or is not accessible in the current Python environment.","error":"ModuleNotFoundError: No module named 'metaflow'"},{"fix":"Verify your cloud credentials and configuration. For AWS, run `aws configure` or ensure `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY`, and `AWS_DEFAULT_REGION` are set. For Kubernetes, ensure your `kubectl` context is correct and `metaflow configure kubernetes` has been run.","cause":"This typically means your cloud environment (AWS, Kubernetes) is not properly configured, or your credentials are missing/invalid for Metaflow to store/retrieve data or orchestrate tasks.","error":"RuntimeError: Failed to connect to backend: Failed to connect to S3 (AWS) / Failed to connect to Kubernetes (K8s)"},{"fix":"Ensure that all methods intended as steps in your Metaflow flow are decorated with `@step` (e.g., `@step\ndef start(self):`).","cause":"A Metaflow flow requires at least one method decorated with `@step`. This error occurs if no methods in your `FlowSpec` subclass are marked as steps.","error":"Flow 'MyFlow' did not find any steps. Did you decorate your methods with '@step'?"},{"fix":"Metaflow data attributes are passed between steps. Ensure `self.some_data = value` is set in an earlier step before it's accessed in a later one. Verify variable names for typos.","cause":"Attempting to access a data attribute (e.g., `self.some_data`) in a Metaflow flow before it has been set in a preceding step, or if there's a typo.","error":"AttributeError: 'SomeFlow' object has no attribute 'some_data'"}],"ecosystem":"pypi","meta_description":null,"install_score":null,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":"0.12.36","cli_name":"","cli_version":null,"type":"library","homepage":"https://outerbounds.com","github":null,"docs":"https://docs.metaflow.org","changelog":null,"pypi":"https://pypi.org/project/outerbounds/","npm":null,"openapi_spec":null,"status_page":null,"smithery":null,"categories":["ai-ml","workflow","devops"],"base_url":null,"auth_type":null,"provenance":{"verified_status":"passing","verified_at":"2026-06-28","last_verified":"2026-06-28","next_check":"2026-07-28","install_tag":null}}