Laminar logo
Y CombinatorBacked by Y Combinator

Understand why your agent failed.
Iterate fast to fix it.

Open-source observability platform for agent tracing,evals, and signal extraction from traces at scale.

Tracing screenshotTracing screenshot

Features for
every step of
agent development

01.

Tracing

Start tracing your agent in minutes

Two lines to integrate with the AI frameworks or SDKs you use

GeminiOpenAIGroqMistralBedrockPlaywrightOpen Telemetry
browser-use screenshot
claude screenshot
vercel screenshot
open-hands screenshot
langchain screenshot
light-llm screenshot

Docs

True Agent Debugger

First-of-its-kind agent developer experience

Docs

agent.run

navigate

navigated to https://laminar.sh

agent.step

gemini-2.5-flash

I can see the Laminar homepage. Let me click on the Pricing link in the navigation to view their pricing plans.

click

clicked 'Pricing' link

agent.step

gemini-2.5-flash

The pricing page has loaded. I can see three tiers: Free, Hobby, and Pro. Let me extract the details.

extract

extracted pricing tier information

agent.step

gemini-2.5-flash

Extracting pricing information. The Free tier offers 1GB data with 15-day retention.

extract

extracted Free tier details

agent.step

gemini-2.5-flash

Continuing extraction. The Hobby tier is $25/month with 2GB data and 30-day retention.

extract

extracted Hobby tier details

agent.step

gemini-2.5-flash

Final extraction complete. I've gathered all pricing data and will now compile the summary.

write_file

writing to pricing_summary.md

agent.step

gemini-2.5-flash

Now I need to navigate to the docs page to gather additional information about the API.

click

clicked 'Docs' link

agent.step

gemini-2.5-flash

The documentation page is now loaded. I can see sections for Tracing, Evaluations, and SDK reference.

extract

extracted documentation structure

agent.step

gemini-2.5-flash

Let me explore the SDK reference to understand the available methods and integrations.

click

clicked 'SDK Reference'

agent.step

gemini-2.5-flash

Found the Python SDK documentation. It shows initialize(), observe(), and evaluate() as main methods.

extract

extracted SDK method signatures

agent.step

gemini-2.5-flash

I have gathered all necessary information. Writing the final summary report with pricing and SDK details.

write_file

writing to final_report.md

0s

10s

20s

30s

40s

50s

60s

70s

80s

90s

100s

Full trace context at a glance

Get full context of what your agent was doing and where it went wrong without digging through hundreds of spans.

Docs

Explain the error that's happening

Diagnose the core cause of the issue

Summarize my trace for me and explain the root cause of the error

Summarize my trace for me and explain the root cause of the error

Convoluted trace? Ask AI

Ask our AI agent to summarize, analyze, and debug your trace no matter the complexity.

Docs

Session replay
for browser agents

Laminar captures browser screen recordings and automatically syncs them with agent traces. Easily integrates with Browser Use, Stagehand, Playwright, Kernel, Browserbase, and more.

Docs

02.

Analysis

Ask questions. Get answers from every trace at scale.

Describe a Signal that you're looking for. Laminar extracts it from past and future traces.

LLM_logic_error

Definition

Structured Output

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

{

"type": "object",

"required": [

"analysis",

"preview"

],

"properties": {

"preview": {

"type": "string",

"description": "Single sentence to summarize why this trace needs attention. This should not convey trace specific details, but rather high level overview of core error or flaw."

},

"analysis": {

"type": "string",

"description": "Description of why do you think there's a logical error present in the trace, with proper references to the spans where relevant."

}

}

}

Define Signals in plain English

Ask a question: "Did the agent get stuck in a loop?". Laminar extracts structured answers from every trace automatically.

Docs

Clusters

Cluster

Sub clusters

Events

Agent misclicks submit button

3

127

Page loading failure

2

89

Authentication timeout errors

4

156

Network connection failures

1

43

Invalid form data submissions

3

92

API rate limit exceeded

2

71

Session expiration issues

4

134

Database query timeouts

1

38

Memory allocation failures

2

67

Discover patterns in traces

Traces are automatically clustered by behavior. Surface failure modes, find outliers, and spot trends.

Docs

Platform-wide SQL

Query all platform data with SQL

Feed your Evals with Datasets straight from SQL queries

SQL API to pull data into your application

Docs

SQL Editor

1

2

3

4

SELECT *

FROM spans

WHERE trace_id = 'e44f93ea-35f5-d9d8-1dc1-ae29863504a9'

ORDER BY start_time ASC

Run

span_id

name

span_type

start_time

end_time

duration

00000000-0000-00...

agent.run

DEFAULT

2025-12-16 21:48:18.50

2025-12-16 21:48:18.50

May 05, 5:30

00000000-0000-00...

agent.run

DEFAULT

2025-12-16 21:48:18.50

2025-12-16 21:48:18.50

May 05, 5:30

00000000-0000-00...

agent.run

DEFAULT

2025-12-16 21:48:18.50

2025-12-16 21:48:18.50

May 05, 5:30

00000000-0000-00...

agent.run

DEFAULT

2025-12-16 21:48:18.50

2025-12-16 21:48:18.50

May 05, 5:30

00000000-0000-00...

agent.run

DEFAULT

2025-12-16 21:48:18.50

2025-12-16 21:48:18.50

May 05, 5:30

00000000-0000-00...

agent.run

DEFAULT

2025-12-16 21:48:18.50

2025-12-16 21:48:18.50

May 05, 5:30

00000000-0000-00...

agent.run

DEFAULT

2025-12-16 21:48:18.50

2025-12-16 21:48:18.50

May 05, 5:30

00000000-0000-00...

agent.run

DEFAULT

2025-12-16 21:48:18.50

2025-12-16 21:48:18.50

May 05, 5:30

Custom dashboards

Track tokens, latency, and more.

Correlate data across users and sessions.

Comprehensive UI dashboard builder with support for custom SQL queries.

Docs

Dashboard

03.

Evals

Robust Evals

Verify progress, catch regressions, and iterate with confidence

Evals
Evals

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

evaluate({

data: dataset,

executor: capitalOfCountry,

evaluators: {

accuracy: (output: string, target: string | undefined): number => {

if (!target) return 0;

return output.includes(target) ? 1 : 0;

},

},

config: {

instrumentModules: {

openAI: OpenAI

}

}

})

Evals SDK you want to use

Define your agent, dataset, and success metric. We handle the rest.

Reward

Average

0.72

Trace

123.36s

81k

0.005

Reader

Filters

Search

Metadata

Ask AI

navigated to https://laminar.sh

gpt-05-nano-2025-08-07

Current state shows we are on https://laminar.sh with several top navigation links, including a visible Pricing link at index 4. The user asked to go to laminar.sh and describe their pricing plans. The immediate next actionable step is to navigate to the Pricing page to access the pricing information. I will click the Pricing link (index 4) to load the pricing page, after which I will extract and summarize the pricing plans on the page in the next step.

click

gpt-05-nano-2025-08-07

Current task: on the Pricing page for laminar.sh and need to extract and describe pricing plans. The previous step shows the Pricing link was clicked and the page likely loaded. Based on browser_state, there are multiple pricing tiers listed: Free, Hobby, Pro, Enterprise, plus a Pricing calculator with Free tier and token-based pricing. I will perform a structured extraction of the pricing sections to summarize plan names, prices, included features, data retention, and team members. This will prepare a clear description for the user. No navigation changes needed; just extract the page content relevant to pricing for accurate description.

extracted pricing plans and their details on Laminar Pr...

gpt-05-nano-2025-08-07

  • Free
  • Price: $0 / month
  • Data: 1 GB data / month
  • Data retention: 15 days
  • Team members: 1
  • Support: Community support
  • Hobby
  • Price: $25 / month
  • Data: 2 GB data / month included
  • Additional data: $2 per 1 GB
  • Data retention: 30 days
  • Team members: 2
  • Support: Priority email support
  • Pro
  • Price: $50 / month

gpt-05-nano-2025-08-07

Reviewing the agent history shows step-by-step progress: the user asked to go to laminar.sh and describe pricing plans. We navigated to the pricing page and extracted structured details about Free, Hobby, Pro, Enterprise, and the pricing calculator. The read_state_0 provides a concise, structured summary including price, data, retention, team members, and support for each plan. Next, I will consolidate this into a readable summary file for easy reference and provide a concise description to the user. Since the instruction prefers stepwise actions, I'll save the structured summary to a file for traceability and then prepare the user-facing description in the next step.

writing to pricing_summary.md

As granular as you want

See high level results or dive deep into your individual traces.

Docs

Laminar's evals help us maintain high accuracy while moving fast. We now use them for every LLM based feature we build.

Hashim Reman

CTO, Remo

Self-host anywhere

Fully open-source, Apache 2.0 licensed

Set up with Docker in three lines

Deploy anywhere with Helm charts

Docs

Production-grade
to the core

Written in Rust for blazing fast performance

Terabytes of data with ease

HIPAA compliant, SOC2 Type 2 (in observation)

HIPAA compliantSOC2 compliant

Compliance