Skip to main content
Laminar is an observability platform for AI applications. When integrated with Skyvern, it captures traces of your automation runs in Laminar’s dashboard. What you see depends on how you’re running Skyvern:
  • Skyvern Cloud (via SDK): Laminar wraps the run_task / run_workflow call, so you get a trace span around the API request and response: latency, status, errors, and the returned output.
  • Self-hosted: Skyvern’s server can export full traces to Laminar, including every LLM call (prompts, responses, token usage), browser actions, and workflow step execution. See self-hosted tracing setup below.
Laminar traces complement artifacts. Use artifacts for per-run debugging (screenshots, recordings, logs) and Laminar for tracking patterns across runs (failure rates, response times, and which tasks are slowest).
This guide is also available in the Laminar documentation.

Prerequisites

Laminar integration requires a Skyvern SDK and the Laminar SDK:
You will also need:

Set up environment variables

Add both keys to your .env file:
.env

Run a traced task

This example scrapes the top 3 posts from Hacker News with Laminar tracing enabled. Call Laminar.initialize() before any Skyvern calls; it reads LMNR_PROJECT_API_KEY from your environment automatically.
Expected output:
The task runs, the output is returned, and the full trace (every HTTP call, timing, and payload) appears in your Laminar dashboard.
Python only: You will see a ForgeApp is not initialized error in stderr on startup. This is harmless; lmnr[all] tries to instrument Skyvern’s server-side internals, which aren’t present when using the client SDK. Your traces still work correctly.
Python only: LaminarLiteLLMCallback is deprecated and unnecessary. Laminar instruments LiteLLM directly, so no callback setup is needed.

What traces capture

What shows up in Laminar depends on your setup.

Skyvern Cloud (via SDK)

When calling run_task or run_workflow through the SDK, Laminar traces the client-side call: This is useful for monitoring how your application interacts with Skyvern: tracking which tasks fail, how long they take, and what outputs you’re getting back.

Self-hosted

When running Skyvern on your own infrastructure, you get deep server-side traces by configuring Laminar in Skyvern’s environment. This gives you visibility into everything happening inside the agent:

Self-hosted tracing setup

If you’re running Skyvern on your own infrastructure, add these to your server’s environment:
.env
Skyvern’s server initializes Laminar at startup, which auto-instruments LiteLLM to capture every LLM call, token count, and cost. No manual callback setup is needed. If you’re running a self-hosted Laminar instance, also set the base URL and ports:
.env
No code changes needed. Once the env vars are set, traces appear in your Laminar project automatically.

Next steps

Using Artifacts

Per-run recordings, screenshots, logs, and network data

Troubleshooting Guide

Common issues and how to fix them