Laminar

Tools & Infrastructure 💻 TypeScript ⚖️ Apache-2.0 🟢 Actively maintained
3.2k stars

Laminar is an open-source observability platform purpose-built for AI agents. It provides tracing, signals, evals, dashboards, and data annotation to help developers monitor, debug, and evaluate AI agent behavior. It is for developers building AI agents who need deep visibility into their runs.

Laminar demo
🖼️ Screenshot from the project README

✨ Key features

  • OpenTelemetry-native tracing with one-line auto-instrumentation for major AI SDKs.
  • Signals: describe agent behaviors in plain English and get Slack alerts.
  • Unopinionated evals SDK and CLI for local or CI/CD runs.
  • MCP/CLI access for coding agents to query traces with SQL.
  • Custom dashboard builder with SQL support for traces and metrics.
  • High performance: Rust core, 20x trace compression, realtime engine.

🎯 Use cases

  • Trace and debug AI agent runs across frameworks like LangChain and OpenAI.
  • Monitor for specific agent behaviors (e.g., stuck in a loop) via Slack alerts.
  • Run and visualize evaluations of agent performance locally or in CI/CD.
  • Build custom dashboards to track metrics and traces with SQL.
  • Let coding agents investigate issues by querying trace data via MCP.

📦 Installation

🧰 Requirements: Self-hosting requires Docker and optionally an LLM provider API key for AI features; managed platform available at laminar.sh.

Self-hosting with Docker compose

git clone https://github.com/lmnr-ai/lmnr
cd lmnr
docker compose up -d

Access UI at http://localhost:5667. For production, use docker compose -f docker-compose-full.yml up -d.

TS SDK

npm add @lmnr-ai/lmnr

Python SDK

pip install --upgrade 'lmnr[all]'

🚀 Usage

Python quickstart

import os
from openai import OpenAI

from lmnr import observe, Laminar
Laminar.initialize(project_api_key="<LMNR_PROJECT_API_KEY>")

client = OpenAI(api_key=os.environ["OPENAI_API_KEY"])

@observe()  # annotate all functions you want to trace
def poem_writer(topic):
    response = client.chat.completions.create(
        model="gpt-4o",
        messages=[
            {"role": "user", "content": f"write a poem about {topic}"},
        ],
    )
    poem = response.choices[0].message.content
    return poem

if __name__ == "__main__":
    print(poem_writer(topic="laminar flow"))

⚠️ Good to know

Self-hosted deployments collect anonymized usage telemetry unless disabled; production deployments may require additional configuration.

❓ FAQ

How do I self-host Laminar?

Clone the repo and run docker compose up -d; the UI will be at http://localhost:5667. For production, use the full compose file.

What LLM providers are supported for AI features?

Gemini, OpenAI (or compatible gateways), AWS Bedrock (Anthropic Claude), and Azure AI Foundry are supported via environment variables.

How do I trace my LLM calls?

Install the SDK and call Laminar.initialize with your project API key; it automatically instruments supported frameworks.

Can I use Laminar without a managed account?

Yes, you can self-host locally with Docker, but you still need to configure the SDK with the correct baseUrl and ports.

📊 Repository

Stars★ 3,227
Forks🍴 232
Open issues🐛 114
Last commit🕒 Sep 4, 2026
Created📅 Aug 2024
Language💻 TypeScript
License⚖️ Apache-2.0
Websitelaminar.sh

🤖 Overview, features, install steps and FAQ were generated from the project's README on Sep 4, 2026. Always check the original source before running commands.