{"id":14671249,"url":"https://github.com/lmnr-ai/lmnr","last_synced_at":"2026-04-14T00:08:08.440Z","repository":{"id":255298812,"uuid":"849139885","full_name":"lmnr-ai/lmnr","owner":"lmnr-ai","description":"Laminar - open-source all-in-one platform for engineering AI products. Crate data flywheel for you AI app. Traces, Evals, Datasets, Labels. YC S24.","archived":false,"fork":false,"pushed_at":"2025-04-10T17:38:31.000Z","size":30350,"stargazers_count":1793,"open_issues_count":18,"forks_count":106,"subscribers_count":11,"default_branch":"main","last_synced_at":"2025-04-10T18:48:07.287Z","etag":null,"topics":["agents","ai","ai-observability","aiops","analytics","developer-tools","evals","evaluation","llm-evaluation","llm-observability","llm-workflow","llmops","monitoring","observability","open-source","pipeline-builder","rag","rust-lang","self-hosted"],"latest_commit_sha":null,"homepage":"https://www.lmnr.ai","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lmnr-ai.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-08-29T03:45:28.000Z","updated_at":"2025-04-10T13:45:17.000Z","dependencies_parsed_at":null,"dependency_job_id":"eeda2037-d4d5-4e05-b472-26a150deaba3","html_url":"https://github.com/lmnr-ai/lmnr","commit_stats":{"total_commits":37,"total_committers":6,"mean_commits":6.166666666666667,"dds":0.5675675675675675,"last_synced_commit":"50d9462bcdfffc7fb28a790be38cfe873e0d2506"},"previous_names":["lmnr-ai/lmnr"],"tags_count":34,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lmnr-ai%2Flmnr","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lmnr-ai%2Flmnr/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lmnr-ai%2Flmnr/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lmnr-ai%2Flmnr/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lmnr-ai","download_url":"https://codeload.github.com/lmnr-ai/lmnr/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248760612,"owners_count":21157392,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agents","ai","ai-observability","aiops","analytics","developer-tools","evals","evaluation","llm-evaluation","llm-observability","llm-workflow","llmops","monitoring","observability","open-source","pipeline-builder","rag","rust-lang","self-hosted"],"created_at":"2024-09-12T04:01:24.955Z","updated_at":"2026-04-14T00:08:08.434Z","avatar_url":"https://github.com/lmnr-ai.png","language":"TypeScript","funding_links":[],"categories":["TypeScript","LLMOps","Cost Tracking, Observability, and Budgets","Evaluation and Monitoring","AIOps Platforms \u0026 Frameworks","Task Automation \u0026 Workflow Orchestration","10. LLM \u0026 AI Observability"],"sub_categories":["Observability","Open source","Intelligent Monitoring Systems","Workflow Automation Assistants","Platforms"],"readme":"\u003ca href=\"https://www.ycombinator.com/companies/laminar-ai\"\u003e![Static Badge](https://img.shields.io/badge/Y%20Combinator-S24-orange)\u003c/a\u003e\n\u003ca href=\"https://x.com/lmnrai\"\u003e![X (formerly Twitter) Follow](https://img.shields.io/twitter/follow/lmnrai)\u003c/a\u003e\n\u003ca href=\"https://discord.gg/nNFUUDAKub\"\u003e ![Static Badge](https://img.shields.io/badge/Join_Discord-464646?\u0026logo=discord\u0026logoColor=5865F2) \u003c/a\u003e\n\n![Laminar banner](./images/laminar-banner.png)\n\n# Laminar\n\n[Laminar](https://laminar.sh) is an open-source observability platform purpose-built for AI agents.\n\n- [x] Tracing. [Docs](https://docs.laminar.sh/tracing/introduction)\n    - [x] OpenTelemetry-native powerful tracing SDK - 1 line of code to automatically trace **Vercel AI SDK, Browser Use, Stagehand, LangChain, OpenAI, Anthropic, Gemini, and more**.\n- [x] Evals. [Docs](https://docs.laminar.sh/evaluations/introduction)\n    - [x] Unopinionated, extensible SDK and CLI for running evals locally or in CI/CD pipeline.\n    - [x] UI for visualizing evals and comparing results.\n- [x] AI monitoring. [Docs](https://docs.laminar.sh/signals)\n    - [x] Define events with natural language descriptions to track issues, logical errors, and custom behavior of your agent.\n- [x] SQL access to all data. [Docs](https://docs.laminar.sh/platform/sql-editor)\n    - [x] Query traces, metrics, and events with a built-in SQL editor. Bulk create datasets from queries. Available via API.\n- [x] Dashboards. [Docs](https://docs.laminar.sh/custom-dashboards/overview)\n    - [x] Powerful dashboard builder for traces, metrics, and events with support of custom SQL queries.\n- [x] Data annotation \u0026 Datasets. [Docs](https://docs.laminar.sh/datasets/introduction)\n    - [x] Custom data rendering UI for fast data annotation and dataset creation for evals.\n- [x] Extremely high performance.\n    - [x] Written in Rust 🦀\n    - [x] Custom realtime engine for viewing traces as they happen.\n    - [x] Ultra-fast full-text search over span data.\n    - [x] gRPC exporter for tracing data.\n\n![Traces](./images/trace-screenshot.png)\n\n## Documentation\n\nCheck out full documentation here [docs.laminar.sh](https://docs.laminar.sh).\n\n## Getting started\n\nThe fastest and easiest way to get started is with our managed platform -\u003e [laminar.sh](https://laminar.sh)\n\n### Self-hosting with Docker compose\n\nLaminar is very easy to self-host locally. For a quick start, clone the repo and start the services with docker compose:\n```sh\ngit clone https://github.com/lmnr-ai/lmnr\ncd lmnr\ndocker compose up -d\n```\n\nThis will spin up a lightweight but full-featured version of the stack. This is good for a quickstart \nor for lightweight usage. You can access the UI at http://localhost:5667 in your browser.\n\nYou will also need to properly configure the SDK, with `baseUrl` and correct ports. See [guide on self-hosting](https://docs.laminar.sh/hosting-options#self-hosted-docker-compose).\n\nFor production environment, we recommend using our [managed platform](https://laminar.sh) or `docker compose -f docker-compose-full.yml up -d`.\n\n### Enabling the Signals feature\n\nTo enable [Signals / AI monitoring](https://docs.laminar.sh/signals) in self-hosted mode, set the `GOOGLE_GENERATIVE_AI_API_KEY` environment variable in your `.env` file. This key is required by both the app-server and the frontend.\n\n```sh\n# In .env at the repo root\nGOOGLE_GENERATIVE_AI_API_KEY=your_key_here\n```\n\n## Contributing\n\nFor running and building Laminar locally, or to learn more about docker compose files,\nfollow the guide in [Contributing](/CONTRIBUTING.md).\n\n## TS quickstart\n\nFirst, [create a project](https://laminar.sh/projects) and generate a project API key. Then,\n\n```sh\nnpm add @lmnr-ai/lmnr\n```\n\nIt will install Laminar TS SDK and all instrumentation packages (OpenAI, Anthropic, LangChain ...)\n\nTo start tracing LLM calls just add\n```typescript\nimport { Laminar } from '@lmnr-ai/lmnr';\nLaminar.initialize({ projectApiKey: process.env.LMNR_PROJECT_API_KEY });\n```\n\nTo trace inputs / outputs of functions use `observe` wrapper.\n\n```typescript\nimport { OpenAI } from 'openai';\nimport { observe } from '@lmnr-ai/lmnr';\n\nconst client = new OpenAI({ apiKey: process.env.OPENAI_API_KEY });\n\nconst poemWriter = observe({name: 'poemWriter'}, async (topic) =\u003e {\n  const response = await client.chat.completions.create({\n    model: \"gpt-4o-mini\",\n    messages: [{ role: \"user\", content: `write a poem about ${topic}` }],\n  });\n  return response.choices[0].message.content;\n});\n\nawait poemWriter();\n```\n\n## Python quickstart\n\nFirst, [create a project](https://laminar.sh/projects) and generate a project API key. Then,\n\n```sh\npip install --upgrade 'lmnr[all]'\n```\nIt will install Laminar Python SDK and all instrumentation packages. See list of all instruments [here](https://docs.laminar.sh/installation)\n\n\nTo start tracing LLM calls just add\n```python\nfrom lmnr import Laminar\nLaminar.initialize(project_api_key=\"\u003cLMNR_PROJECT_API_KEY\u003e\")\n```\n\nTo trace inputs / outputs of functions use `@observe()` decorator.\n\n```python\nimport os\nfrom openai import OpenAI\n\nfrom lmnr import observe, Laminar\nLaminar.initialize(project_api_key=\"\u003cLMNR_PROJECT_API_KEY\u003e\")\n\nclient = OpenAI(api_key=os.environ[\"OPENAI_API_KEY\"])\n\n@observe()  # annotate all functions you want to trace\ndef poem_writer(topic):\n    response = client.chat.completions.create(\n        model=\"gpt-4o\",\n        messages=[\n            {\"role\": \"user\", \"content\": f\"write a poem about {topic}\"},\n        ],\n    )\n    poem = response.choices[0].message.content\n    return poem\n\nif __name__ == \"__main__\":\n    print(poem_writer(topic=\"laminar flow\"))\n```\n\n## Client libraries\n\nTo learn more about instrumenting your code, check out our client libraries:\n\n \u003ca href=\"https://www.npmjs.com/package/@lmnr-ai/lmnr\"\u003e ![NPM Version](https://img.shields.io/npm/v/%40lmnr-ai%2Flmnr?label=lmnr\u0026logo=npm\u0026logoColor=CB3837) \u003c/a\u003e\n \u003ca href=\"https://pypi.org/project/lmnr/\"\u003e ![PyPI - Version](https://img.shields.io/pypi/v/lmnr?label=lmnr\u0026logo=pypi\u0026logoColor=3775A9) \u003c/a\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flmnr-ai%2Flmnr","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flmnr-ai%2Flmnr","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flmnr-ai%2Flmnr/lists"}