Install & Compatibility
Where this runs
tested against v0.12.36 · pip install
no network on importno background threads
Install × environment matrix
Each cell = how many times install + import succeeded across repeated harness runs. Partial = flaky.
glibc = Debian/Ubuntu slim · musl = Alpine Linux
muslpy 3.10–3.910 runs
installs and imports cleanly · install 0.0s · import 1.616s · 120.4MB
glibcpy 3.10–3.910 runs
installs and imports cleanly · install 8.6s · import 1.480s · 122MB
124MB installed
● package 124MB
Code
Verified usage
Verified import paths — ran on the pinned version, not inferred.
FlowSpec
✓ from metaflow import FlowSpec
step
✓ from metaflow import step
current
✓ from metaflow import current
project
✓ from metaflow import project
✗ from outerbounds import project
Outerbounds itself does not introduce new APIs; all core Metaflow symbols are imported directly from 'metaflow'.
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`).
from metaflow import FlowSpec, step
class MyFirstFlow(FlowSpec):
@step
def start(self):
self.message = 'Hello, Outerbounds!'
print(self.message)
self.next(self.end)
@step
def end(self):
print(f"Flow finished with message: {self.message}")
if __name__ == '__main__':
MyFirstFlow()
Debug
Known issues
gotchaOuterbounds 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.fixAlways refer to `metaflow` documentation for API usage. Think of `outerbounds` as the 'batteries included' version of `metaflow`.
affects: All versions
gotchaThe 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.fixEnsure 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.
affects: All versions
gotchaWhen 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.fixFor 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. affects: All versions
breakingWhile `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.fixBefore 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.
affects: Metaflow versions 2.x to 3.x (and subsequent major versions)
Errors
Common errors & fixes
ModuleNotFoundError: No module named 'metaflow'
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.
fixEnsure `outerbounds` (and thus `metaflow`) is installed correctly: `pip install outerbounds`. If using virtual environments, activate the correct environment.
RuntimeError: Failed to connect to backend: Failed to connect to S3 (AWS) / Failed to connect to Kubernetes (K8s)
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.
fixVerify 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.
Flow 'MyFlow' did not find any steps. Did you decorate your methods with '@step'?
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.
fixEnsure that all methods intended as steps in your Metaflow flow are decorated with `@step` (e.g., `@step
def start(self):`).
AttributeError: 'SomeFlow' object has no attribute 'some_data'
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.
fixMetaflow 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.
Upgrade
Version history
0.12.36latest on PyPI · released Jun 15, 2026
Audit
Dependencies
metaflowrequiredOuterbounds is a distribution of Metaflow; all core functionality is provided by Metaflow.