
Choosing a sandbox runtime for long-lived coding agents
How we evaluated sandbox providers for coding agents, what we chose for now, and the trade-offs behind that decision.
llm-observability
Langfuse helps you understand what your LLM app is doing in production - traces, prompt versions, evaluations, and cost analytics. ZenML helps you build and ship the system behind it: portable pipelines that train, test, deploy, and retrain across clouds and orchestrators. They cover different parts of the AI stack. Use Langfuse to improve runtime quality, and ZenML to operationalize the lifecycle.



ZenML has proven to be a critical asset in our machine learning toolbox, and we are excited to continue leveraging its capabilities to drive ADEO's machine learning initiatives to new heights

François Serra
ML Engineer / ML Ops / ML Solution architect at ADEO Services
| Feature | ZenML | Langfuse |
|---|---|---|
| Workflow Orchestration | Yes ZenML is built around defining and executing portable ML/AI pipelines across orchestrators and backends, with lifecycle primitives (runs, artifacts, lineage). | Not supported Langfuse instruments and analyzes LLM application behavior (traces/evals/prompts), but does not provide native DAG/pipeline execution. |
| Integration Flexibility | Yes ZenML's stack architecture is designed to swap infrastructure components (orchestrators, artifact stores, registries, trackers) without rewriting pipeline code. | Not supported Langfuse integrates deeply with LLM ecosystems (OpenTelemetry, OpenAI, LangChain) but is not a general-purpose integration hub for the broader ML toolchain. |
| Vendor Lock-In | Yes ZenML is cloud-agnostic; even the managed control plane keeps artifacts/data in your infrastructure, reducing lock-in. | Yes Langfuse is open source and supports self-hosting; teams can run the same product stack themselves instead of relying on SaaS. |
| Setup Complexity | Yes ZenML can start local and scale to production stacks, but configuring orchestrators and artifact stores adds initial setup steps. | Yes Getting started is straightforward via Langfuse Cloud (sign up, add SDK, see traces); self-hosting also has a guided Docker Compose path. |
| Learning Curve | Yes ZenML offers a powerful abstraction set (stacks, orchestrators, artifact lineage) that pays off at scale but requires systems thinking. | Yes Langfuse's core mental model (trace, spans, generations, scores, prompt versions) matches how LLM teams already debug and iterate. |
| Scalability | Yes ZenML scales by delegating execution to production orchestrators and compute backends, enabling large-scale training/eval pipelines. | Yes Langfuse is engineered for high-ingestion observability using ClickHouse (OLAP), Redis buffering, and a worker architecture built for scale. |
| Cost Model | Yes ZenML's OSS is free; managed tiers are priced around pipeline-run volume with clear plan boundaries and enterprise self-hosting options. | Yes Langfuse publishes transparent monthly SaaS tiers ($29–$2499/mo) plus usage-based units with a pricing calculator; self-host is also available. |
| Collaboration | Yes ZenML Pro adds multi-user collaboration, workspaces/projects, and RBAC/SSO for teams operating shared ML platforms. | Yes Langfuse is inherently team-oriented (shared traces, prompt releases, annotation queues) with enterprise SSO, RBAC, SCIM, and audit logs. |
| ML Frameworks | Yes ZenML supports general ML/AI workflows (classical ML, deep learning, and LLM pipelines) with arbitrary Python steps and many tool integrations. | Not supported Langfuse is specialized for LLM applications; it integrates with LLM frameworks rather than covering the full training ecosystem. |
| Monitoring | Yes ZenML provides pipeline/run tracking and can support production monitoring through integrated components and dashboards. | Yes Monitoring is Langfuse's core: production-grade LLM tracing, token/cost tracking, evaluations, and analytics are first-class features. |
| Governance | Yes ZenML Pro emphasizes enterprise controls like RBAC, workspaces/projects, and structured access management for ML operations. | Yes Langfuse offers enterprise governance (SOC2/ISO reports, optional HIPAA BAA, audit logs, SCIM, SSO/RBAC) depending on plan and add-ons. |
| Experiment Tracking | Yes ZenML tracks runs, artifacts, and metadata/lineage, and integrates with experiment trackers as part of the broader ML lifecycle. | Not supported Langfuse supports evaluation datasets and score tracking for LLM apps, but is not a general hyperparameter/ML experiment tracking system. |
| Reproducibility | Yes ZenML is designed for reproducibility: pipelines produce versioned artifacts with lineage and (in Pro) snapshots for environment versioning. | Not supported Langfuse improves reproducibility at the prompt/trace level (prompt versioning linked to traces), but doesn't manage full pipeline environments or artifact stores. |
| Auto-Retraining | Yes ZenML's pipeline layer is well-suited to scheduled or event-triggered retraining workflows and CI/CD automation patterns. | Not supported Langfuse provides evaluation signals and telemetry but does not orchestrate retraining or deployment automation on its own. |
Code comparison
from zenml import pipeline, step
@step
def load_data():
# Load and preprocess your data
...
return train_data, test_data
@step
def train_model(train_data):
# Train using ANY ML framework
...
return model
@step
def evaluate(model, test_data):
# Evaluate and log metrics
...
return metrics
@pipeline
def ml_pipeline():
train, test = load_data()
model = train_model(train)
evaluate(model, test)from langfuse import observe, get_client
from langfuse.openai import openai
langfuse = get_client()
@observe()
def solve(question: str) -> str:
prompt = langfuse.get_prompt("calculator")
# Instrumented OpenAI call; links prompt version to output
resp = openai.chat.completions.create(
model="gpt-4o",
messages=[
{"role": "system", "content": prompt.compile(base=10)},
{"role": "user", "content": question},
],
langfuse_prompt=prompt,
)
answer = resp.choices[0].message.content
# Attach an evaluation score to the current trace
langfuse.score_current_trace(name="is_correct", value=1)
return answer
print(solve("1 + 1 = ?"))
langfuse.flush()ZenML is fully open-source and vendor-neutral, letting you avoid the significant licensing costs and platform lock-in of proprietary enterprise platforms. Your pipelines remain portable across any infrastructure, from local development to multi-cloud production.
ZenML offers a pip-installable, Python-first approach that lets you start locally and scale later. No enterprise deployment, platform operators, or Kubernetes clusters required to begin — build production-grade ML pipelines in minutes, not weeks.
ZenML's composable stack lets you choose your own orchestrator, experiment tracker, artifact store, and deployer. Swap components freely without re-platforming — your pipelines adapt to your toolchain, not the other way around.

How we evaluated sandbox providers for coding agents, what we chose for now, and the trade-offs behind that decision.

The new Kitaru turns production traces you already collect into replayable test scenarios, expert-reviewed cohorts, and evaluators you can run on every change.

Robotics compute is spreading across clouds and clusters. Learn how one portable pipeline layer can keep the robot-learning loop reproducible.
See how ZenML pipelines can operationalize your evaluation signals by turning regressions and score drops into scheduled rebuilds and CI/CD workflows. Learn how to stay cloud-agnostic while deploying the same ML/LLM workflows across AWS, GCP, Azure, or on-prem. Explore ZenML Pro features for teams (RBAC, workspaces, snapshots) when you need enterprise controls beyond instrumentation and dashboards.