Build and orchestrate Strands agents with reproducible ZenML pipelines.
AWS Strands is an open-source agent framework that simplifies building intelligent agents using Python decorators and a lightweight execution model. It provides a simple, callable interface for defining agents, supports built-in tools through the @tool decorator, and even enables math and reasoning capabilities out of the box. By integrating Strands with ZenML, you can run Strands agents inside production-ready pipelines. This unlocks orchestration, artifact tracking, reproducibility, and deployment flexibility—allowing you to move from experimentation to enterprise-scale AI workflows with ease.
Integrating AutoGen into ZenML enables you to embed these conversational agent workflows into reproducible, versioned pipelines. This brings production-ready orchestration, tracking, continuous evaluation, and deployment flexibility—so your AutoGen agents go from prototype to scalable, monitored system faster and more reliably Analytics Vidhya.
Features with ZenML
- Run Strands agents as reproducible ZenML pipeline steps.
- Automatically log and version agent inputs and outputs with ZenML’s artifact store.
- Insert evaluation or monitoring steps alongside agent execution for observability.
- Seamlessly scale from local execution to cloud orchestrators (Kubernetes, Airflow, etc.).

Main Features
- Simple Callable Agents. Run Strands agents directly inside ZenML steps with a clean Pythonic interface.
- Built-in Tools. Extend agent capabilities easily with the
@tool
decorator. - Math & Reasoning. Enable agents to handle math operations and logical calculations out of the box.
- Artifact Management. Automatically capture and version all inputs and outputs with ZenML’s artifact store.
- Scalable Deployment. Move seamlessly from local experiments to production pipelines on Kubernetes, Airflow, or other orchestrators.
How to use ZenML with
AWS Strands
from zenml import ExternalArtifact, pipeline, step
from agent import agent
@step
def run_strands(query: str) -> str:
return str(agent(query))
@pipeline
def strands_weather_pipeline() -> str:
q = ExternalArtifact(value="What's the weather like in Tokyo?")
return run_strands(q.value)
if __name__ == "__main__":
print(strands_weather_pipeline())
This is a minimal example. See the full weather agent pipeline for advanced usage with artifacts, formatting, and error handling.
Additional Resources
ZenML Agent Framework Integrations (GitHub)
ZenML Documentation
AWS Strands GitHub