Laminar

An observability platform for tracing, evaluating, alerting on, and debugging AI agent runs.

Source repo
lmnr-ai/lmnr
Stars
★ 3.5k
Last updated
today
License
Apache-2.0
Primary language
TypeScript

At a glance

How it runs
Self-hosted serviceLibrary / SDKHosted service
Works with
Universal · cross-platformOpenAI API · Claude API
Cost
Free tier plus a paid hosted plan
Setup effort
Medium · a few setup steps
You'll need
DockerDocker ComposePostgresNode.js or Python SDK runtimeShell / CLINetwork accessLocal filesystemMCP Server
Typical use
An agent team using OpenAI, Anthropic, or Gemini that needs to inspect the traces and spans from individual production runs.
Not a fit if
  • Teams that need fully offline operation with no data leaving their machines
  • Small teams unwilling to maintain ClickHouse, Postgres, and other services
  • Users who want zero LLM key or AWS credential configuration

What does this agent do, and when should you use it?

Laminar is an open-source observability platform for AI agents with tracing, Signals, Evals, dashboards, and data annotation and datasets. Its OpenTelemetry-native SDK can automatically trace integrations including Vercel AI SDK, Browser Use, Stagehand, LangChain, OpenAI, Anthropic, and Gemini. MCP and CLI access let a coding agent query traces, spans, metrics, and events with SQL for investigation and debugging. It can be self-hosted through Docker Compose, with the lightweight UI exposed at localhost:5667, while production deployments can use the full Compose stack or the managed platform. Its server-side AI workers and frontend AI features can use Gemini, OpenAI-compatible endpoints, or Anthropic Claude through AWS Bedrock.

An application initializes the TS SDK with Laminar.initialize({ projectApiKey }) or the Python SDK with Laminar.initialize(project_api_key=...). The SDK automatically records supported framework and provider calls, while custom functions can be traced with TypeScript's observe({name: 'poemWriter'}, async ...) wrapper or Python's @observe() decorator; these capture function inputs and outputs as tracing data. Laminar presents the resulting runs in real time, supports full-text search across span data, builds dashboards over traces, metrics, and events, and visualizes and compares evaluation results. Through MCP or the CLI, a coding agent can issue SQL queries over traces, spans, metrics, and events. Signals read agent runs and send a Slack notification when a user-defined plain-English behavior matches.

  1. An agent team using OpenAI, Anthropic, or Gemini that needs to inspect the traces and spans from individual production runs.
  2. An engineer building with LangChain, Vercel AI SDK, Browser Use, or Stagehand who wants automatic tracing with minimal instrumentation work.
  3. A development team running evaluations locally or in CI/CD that needs an SDK and CLI to run evals and a UI to compare outcomes.
  4. An operations owner investigating looping agent behavior who wants to define a Signal such as “agent is stuck in a loop” and receive a Slack alert.
  5. A team that wants its coding agent to diagnose incidents by querying trace, metric, and event data through MCP or a CLI.
  6. A team that needs a locally deployed observability stack and can run the supplied Docker Compose deployment.

How do you install or deploy this agent?

For the self-hosted quick start:

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

Then open http://localhost:5667. Before SDK use, create a project and generate a project API key. The repository says self-hosted SDKs require baseUrl and correct ports, but does not provide a complete copyable self-hosted SDK configuration. To enable frontend AI features or server-side AI workers, choose LLM_PROVIDER=gemini with LLM_API_KEY, LLM_PROVIDER=openai with LLM_API_KEY, or LLM_PROVIDER=bedrock with AWS credentials and AWS_REGION in the root .env.

How do you use this agent?

For TypeScript, run npm add @lmnr-ai/lmnr, then initialize with Laminar.initialize({ projectApiKey: process.env.LMNR_PROJECT_API_KEY }); wrap custom functions with observe({name: 'poemWriter'}, async (topic) => { ... }). For Python, run pip install --upgrade 'lmnr[all]', call Laminar.initialize(project_api_key="<LMNR_PROJECT_API_KEY>"), and add @observe() to functions you want to trace. Use the UI to inspect traces and evaluation results, and use the available MCP or CLI access when a coding agent needs to query traces, spans, metrics, or events.

What are this agent's strengths and limitations?

Pros
  • Combines automatic tracing of supported frameworks and providers with explicit function-level observe instrumentation for custom application code.
  • Places tracing, Signals, Evals, SQL querying, dashboards, and dataset annotation in one platform, keeping run data and evaluation workflows together.
  • Its MCP and CLI access provide a direct path for coding agents to investigate operational data with SQL.
  • The repository describes a Rust implementation, 20x trace compression, a real-time trace engine, full-text span search, and a gRPC tracing exporter.
  • It offers both Docker Compose self-hosting and a managed option, with multiple documented provider paths for server-side AI features.
Limitations
  • Self-hosted SDK configuration requires baseUrl and correct ports, but the supplied material does not include a complete copyable configuration example.
  • Frontend AI features such as chat-with-trace and SQL-with-AI, plus server-side AI workers, require an external LLM provider and relevant API keys or AWS credentials.
  • The quick Compose stack is positioned for quick starts and lightweight use; production use is directed to the managed platform or docker-compose-full.yml, requiring further deployment evaluation.
  • Self-hosted deployments collect anonymized usage telemetry by default unless LAMINAR_TELEMETRY_DISABLED=true is set.
  • Using a custom Postgres schema alongside another Drizzle-managed service may require manual intervention because of migration-journal conflicts.

How does this agent compare with similar options?

Key facts side by side with the most closely related agents.

Agent Source review Form / cost Stars Updated Language Full support on
Laminar This agent 41 · Major gaps Self-hosted serviceFreemium ★ 3.5k today TypeScript OpenAI API · Claude API
OpenInference 71 · Some gaps Library / SDKFree ★ 1.3k today Python OpenAI API · Claude API
traceAI 69 · Some gaps Library / SDKFree ★ 266 4d ago Python —
TMA1 51 · Major gaps Self-hosted serviceFree + model costs ★ 124 7d ago Go Codex · Claude Code

How does FollowAgents rate this agent?

FollowAgents source review · FARS-2.1
Major gaps
41/ 100 5-point scale 2.1 / 5
This review covers the source as of Aug 09, 2026. The project has shipped 8 stable release(s) since, which have not been re-reviewed. The score and verdict describe the reviewed version only. Recent releases ↓
Trust 7/29
Reliability 6/14
Adaptability 9/18
Convention 9/18
Effectiveness 7/13
Verifiability 3/8
Why each dimension lost points
Trust7 / 29 · 1.2/5

Evidence: README mentions anonymous telemetry but does not specify data flow; optional LLM provider configuration involves API keys; Slack integration may send notifications. Deductions: no user confirmation mechanism, no data retention/deletion details, no rollback mechanism, insufficient dependency security info.

Reliability6 / 14 · 2.1/5

Evidence: CI workflow (backend-build-and-test.yml) and test files (cache-exists-expiry.test.ts, slack-handle-interaction.test.ts) indicate some test coverage. Deductions: dependency availability not explicit, failure messages handled in Slack test route but overall insufficient.

Adaptability9 / 18 · 2.5/5

Evidence: README provides multiple use cases (tracing, signals, evals, MCP/CLI, dashboards, datasets), TS/Python quickstarts, self-hosting and managed platform. Deductions: capability boundaries not explicit, trigger precision (e.g., signals conditions) not detailed, environment fit (custom Postgres schema) limited.

Convention9 / 18 · 2.5/5

Evidence: README well-structured, install instructions (docker compose, npm, pip), example code, Apache-2.0 license. Deductions: naming stability not explicit, known limitations not listed, versioning/changelog not provided, maintenance responsibility not explicit.

Effectiveness7 / 13 · 2.7/5

Evidence: Output usability (UI, dashboards, SQL queries) described, marginal value (20x compression, high performance) claimed. Deductions: cost-benefit not quantified, performance claims lack benchmarks.

Verifiability3 / 8 · 1.9/5

Evidence: Feature list in README has doc links but no concrete evidence. Deductions: claims (e.g., 20x compression) lack benchmark support, cross-source corroboration insufficient, fact/inference separation not explicit.

Risks and how to mitigate them
  • Not found in source: confirmation before actingTurn on (or add) a confirmation step before it acts, and try it in a sandbox or test environment before real data.
  • Not found in source: rollback or recovery pathBack up first, or work on a git branch or snapshot, so its changes can be undone.
  • Anonymous telemetry is enabled by default; opt-out requires setting LAMINAR_TELEMETRY_DISABLED=true, but the specific data collected is not disclosed.
  • LLM provider configuration involves API keys; ensure secure storage to avoid leakage.
  • Slack integration may send notifications; be mindful of permissions and user confirmation.
Evidence confidence: Low Reviewed Aug 09, 2026 Reviewed revision 5f14c5c86f1b New commits since this review; the score may not cover them
See the full review method →

Recent releases

Latest entries from the project's GitHub Releases. Notes are quoted from upstream as written, not rewritten or tested by FollowAgents.

  1. v0.3.3
    Release notes excerpt
    What's Changed * Drop first tag from blog post header line by @Rainhunter13 in https://github.com/lmnr-ai/lmnr/pull/2561 * fix(span-view): render overview input and output in their own formats (LAM-2372) by @laminar-coding-agent[bot] in https://github.com/lmnr-ai/lmnr/pull/2562 * feat(dashboards): multiple dashboards per project (LAM-2292) by @laminar-coding-agent[bot] in https://github.com/lmnr-ai/lmnr/pull/2426 * Say data access instead of retention in welcome and trial-ending emails by @olzhik11 in https://github.com/lmnr-ai/lmnr/pull/2558 …
    View on GitHub ↗
  2. v0.3.2
    Release notes excerpt
    What's Changed * Fix signal events horizontal scrolling by @kolbeyang in https://github.com/lmnr-ai/lmnr/pull/2539 * feat: shorten signals step by @olzhik11 in https://github.com/lmnr-ai/lmnr/pull/2529 * fix: preserve newlines in signal alert emails by @kolbeyang in https://github.com/lmnr-ai/lmnr/pull/2546 * fix: send onboarding welcome email once across tabs by @olzhik11 in https://github.com/lmnr-ai/lmnr/pull/2547 * Simplify workspace invitation email styling by @kolbeyang in https://github.com/lmnr-ai/lmnr/pull/2549 …
    View on GitHub ↗
  3. v0.3.1
    Release notes excerpt
    What's Changed * feat: opencode format by @olzhik11 in https://github.com/lmnr-ai/lmnr/pull/2534 * fix(LAM-2357): persist full column visibility in saved views by @laminar-coding-agent[bot] in https://github.com/lmnr-ai/lmnr/pull/2526 * fix: log clearer warning on consumers with older qw (primarily non docker) by @dinmukhamedm in https://github.com/lmnr-ai/lmnr/pull/2535 * feat(notifications): SIGNAL_EMPTY_TRACE email via a Resend template (LAM-2359) by @laminar-coding-agent[bot] in https://github.com/lmnr-ai/lmnr/pull/2527 …
    View on GitHub ↗

FAQ

Can Laminar be self-hosted?
Yes. The repository provides a Docker Compose quick start. It describes that stack as suitable for quick starts and lightweight use, while recommending the managed platform or docker-compose-full.yml for production.
Which providers can power its AI features?
Frontend AI features and server-side AI workers support Gemini, OpenAI or OpenAI-compatible gateways, and Anthropic Claude through AWS Bedrock.
Do I need to manually instrument every function?
No. The SDK declares automatic tracing for supported frameworks and providers. You can additionally use TypeScript observe or Python @observe() for custom functions.
Does self-hosting send telemetry?
Anonymous usage telemetry is collected by default. Set LAMINAR_TELEMETRY_DISABLED=true to opt out.
View on GitHub ↗ Install ↓

Compare agents like this one

The same FARS review applied across the shortlist this agent qualifies for.

Related agents