Laminar
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.
✨ 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
🤖 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.