[{"data":1,"prerenderedAt":706},["ShallowReactive",2],{"tool-langfuse-en":3},{"slug":4,"published":5,"minutes":6,"category":7,"tags":8,"keywords":14,"about":22,"sources":34,"cover":59,"og":60,"expertise":61,"locales":62,"lang":63,"title":66,"description":67,"coverAlt":68,"url":25,"pricing":69,"kind":9,"metaTitle":70,"takeaways":71,"faq":77,"toc":90,"blocks":115,"others":476},"langfuse","2026-08-13",10,"llmops",[9,10,11,12,13],"LLM observability","Tracing","OpenTelemetry","Self-hosting","Evaluation",[4,15,16,17,18,19,20,21],"langfuse vs langsmith","llm tracing tool","self-hosted llm observability","langfuse pricing","opentelemetry llm traces","llm cost tracking","prompt versioning",[23,26,28,31],{"name":24,"url":25},"Langfuse","https:\u002F\u002Flangfuse.com",{"name":11,"url":27},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FOpenTelemetry",{"name":29,"url":30},"ClickHouse","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FClickHouse",{"name":32,"url":33},"Observability (software)","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FObservability_(software)",[35,38,41,44,47,50,53,56],{"title":36,"url":37},"Langfuse documentation: observability and application tracing","https:\u002F\u002Flangfuse.com\u002Fdocs\u002Fobservability\u002Foverview",{"title":39,"url":40},"Langfuse documentation: get started with tracing","https:\u002F\u002Flangfuse.com\u002Fdocs\u002Fobservability\u002Fget-started",{"title":42,"url":43},"Langfuse pricing: cloud plans, billable units and worked examples","https:\u002F\u002Flangfuse.com\u002Fpricing",{"title":45,"url":46},"Langfuse pricing: self-hosted plans and the feature comparison","https:\u002F\u002Flangfuse.com\u002Fpricing-self-host",{"title":48,"url":49},"Self-host Langfuse: deployment options, containers and storage services","https:\u002F\u002Flangfuse.com\u002Fself-hosting",{"title":51,"url":52},"Langfuse changelog: v4 is live (17 August 2026)","https:\u002F\u002Flangfuse.com\u002Fchangelog\u002F2026-08-17-langfuse-v4",{"title":54,"url":55},"Langfuse blog: Langfuse joins ClickHouse (16 January 2026)","https:\u002F\u002Flangfuse.com\u002Fblog\u002Fjoining-clickhouse",{"title":57,"url":58},"GitHub: langfuse\u002Flangfuse, the platform repository","https:\u002F\u002Fgithub.com\u002Flangfuse\u002Flangfuse","\u002Fimages\u002Fblog\u002Flangfuse\u002Fcover.webp","\u002Fimages\u002Fblog\u002Flangfuse\u002Fog.jpg","ai-engineer",[63,64,65],"en","de","hu","Langfuse review: tracing, prompts and evals you can host yourself","Langfuse puts LLM traces, prompt versions and experiments on one MIT-licensed platform. What self-hosting really costs, how the unit pricing adds up, and where it loses.","A pipeline from a batched application event through the Langfuse web container and object storage into ClickHouse, with Redis and PostgreSQL alongside.","MIT · paid from $59 per month","Langfuse review: tracing you can self-host · Balázs Csorba",[72,73,74,75,76],"Langfuse is the most complete open-source option for tracing, prompt management and experiments in one backend, and the MIT licence covers the whole core rather than a sample.","A production self-hosted deployment is two application containers plus PostgreSQL, ClickHouse, Redis and object storage, which is a bigger commitment than the Docker Compose page implies.","Cloud bills data points, not seats: one agent turn with three observations and two scores is six units, and the pricing page lists a free Hobby plan and Core at $29 a month for 100,000 units.","Instrumentation is queued and batched in the background, so tracing adds no request latency, but a process that exits without flushing loses the tail of its traces.","Langfuse Cloud stops serving v3 endpoints on 16 November 2026, so an existing v3 integration needs a migration window rather than an upgrade at leisure.",[78,81,84,87],{"q":79,"a":80},"How much does Langfuse cost?","Self-hosting is free with no usage limit under the MIT licence. Langfuse Cloud has a free Hobby plan with 50,000 units a month, 30 days of data and two users, Core at $29 a month with 100,000 units and 90 days of data, Pro at $199 and Enterprise at $2,499. Usage above the included units runs from $8 per 100,000 units down to $6 at very high volume.",{"q":82,"a":83},"What counts as a billable unit in Langfuse?","Any tracing data point you send to the platform: a trace, an observation inside it such as a span, event or generation, or a score. A single agent turn with three observations and two evaluation scores therefore costs six units, which is why instrumentation granularity matters more than the number of users.",{"q":85,"a":86},"Does Langfuse add latency to my application?","The docs say no: the SDKs queue trace events locally and flush them in batches in the background, so the request path is not blocked. In short-lived processes such as Lambda handlers, cron jobs and CLIs you must call flush() at the end, or the last observations in the batch are lost when the process exits.",{"q":88,"a":89},"Langfuse or LangSmith?","Choose Langfuse if you want an MIT-licensed platform you can run in your own VPC and traces, prompts and experiments in one model. Choose LangSmith if you build on LangGraph and want first-party tracing with annotation queues and nothing to assemble. The cost models differ too: Langfuse charges per data point with unlimited users, LangSmith charges per seat plus traces.",[91,94,97,100,103,106,109,112],{"id":92,"title":93},"what-it-is","What it is",{"id":95,"title":96},"how-it-works","How it works",{"id":98,"title":99},"getting-started","Getting started",{"id":101,"title":102},"prompts-and-evals","Prompts and evaluations",{"id":104,"title":105},"cost-and-deployment","What it costs to run",{"id":107,"title":108},"where-it-shingles","Where it falls short",{"id":110,"title":111},"verdict","Verdict",{"id":113,"title":114},"sources","Sources",[116,120,129,132,135,180,181,184,193,196,197,200,202,205,208,229,230,233,260,263,264,267,299,302,374,377,383,384,387,425,428,429,432,457,462,463],{"type":117,"content":118},"paragraph",[119],"Langfuse is an open-source platform for tracing, prompt management and evaluation of LLM applications, and it is the most complete one of those that ships under a permissive licence. The verdict up front: teams that want tracing, prompts and experiments in one backend, and that can look after a ClickHouse deployment, should take it. Teams that want a weekend of setup should not.",{"type":117,"content":121},[122,123,128],"It sits in the same layer as LangSmith, Arize Phoenix and Helicone, and it competes on two axes that matter: whether the platform can run inside your own network, and whether you instrument your code or your model provider. Langfuse answers yes on the first question for the core product, and answers both ways on the second: drop-in wrappers for the common SDKs, a context manager for everything else, and a plain OpenTelemetry endpoint for code that is neither Python nor JavaScript. The wider case for tracing agents is in ",{"tag":124,"to":125,"children":126},"link","\u002Fblog\u002Fagent-observability-opentelemetry",[127],"agent observability with OpenTelemetry",".",{"type":130,"level":131,"id":92,"text":93},"heading",2,{"type":117,"content":133},[134],"Langfuse is four products in one deployment: a trace store for LLM calls, a prompt registry with versioning and a playground, an experiment runner over datasets, and a dashboard layer for cost, latency and scores. All four run on the same code whether hosted or self-hosted, and the self-hosted edition is not a reduced build.",{"type":136,"ordered":137,"items":138},"list",false,[139,150,155,160,165,170,175],[140,144,145,149],{"tag":141,"children":142},"strong",[143],"MIT licence for the core. ","The repository carries a ClickHouse Inc copyright, and only the directories under ",{"tag":146,"children":147},"code",[148],"ee\u002F"," sit under a separate commercial licence.",[151,154],{"tag":141,"children":152},[153],"Self-hosted on Docker Compose, Helm or Terraform templates for AWS, Azure and GCP, ","running the same containers as Langfuse Cloud.",[156,159],{"tag":141,"children":157},[158],"Four storage services in a normal deployment: ","PostgreSQL, ClickHouse, Redis or Valkey, and S3-compatible object storage.",[161,164],{"tag":141,"children":162},[163],"Python and JavaScript SDKs, ","plus a documented OpenTelemetry ingestion endpoint with a version header on every request.",[166,169],{"tag":141,"children":167},[168],"35,468 stars and 3,940 forks on GitHub in October 2026, ","with release v4.54.0 shipped on 7 October 2026.",[171,174],{"tag":141,"children":172},[173],"Owned by ClickHouse since January 2026, ","which is also the database it stores traces in.",[176,179],{"tag":141,"children":177},[178],"Cloud regions in the EU, US and Japan, ","plus a HIPAA region on the enterprise plan.",{"type":130,"level":131,"id":95,"text":96},{"type":117,"content":182},[183],"The ingestion path explains both the operational cost and the latency story. An SDK or a collector sends a batch of events; the web container writes that batch straight to object storage and leaves only a reference in Redis; a worker picks the events up and writes them into ClickHouse, where traces, observations and scores live. PostgreSQL holds the transactional side: projects, API keys, prompt versions.",{"type":185,"attrs":186,"inner":190,"caption":191},"diagram",{"viewBox":187,"role":188,"aria-labelledby":189},"0 0 720 330","img","d1-lf-t d1-lf-d","\u003Ctitle id=\"d1-lf-t\">How a trace reaches storage in Langfuse\u003C\u002Ftitle>\u003Cdesc id=\"d1-lf-d\">The application or an OpenTelemetry collector sends a batch of events to the Langfuse web container. The web container writes the batch to object storage and leaves a reference in Redis. A worker reads the batch from object storage and writes traces, observations and scores into ClickHouse. PostgreSQL holds the transactional data such as projects and prompt versions, and Redis holds the queue and the API key and prompt caches.\u003C\u002Fdesc>\u003Cdefs>\u003Cmarker id=\"ah-lf\" viewBox=\"0 0 10 10\" refX=\"9\" refY=\"5\" markerWidth=\"7\" markerHeight=\"7\" orient=\"auto-start-reverse\">\u003Cpath d=\"M0 0L10 5L0 10z\" class=\"d-head\" \u002F>\u003C\u002Fmarker>\u003C\u002Fdefs>\u003Ctext x=\"20\" y=\"28\" class=\"d-title\">Trace ingestion\u003C\u002Ftext>\u003Ctext x=\"700\" y=\"28\" text-anchor=\"end\" class=\"d-label\">same stack in cloud and self-hosted\u003C\u002Ftext>\u003Crect x=\"20\" y=\"52\" width=\"150\" height=\"62\" rx=\"10\" class=\"d-box\" \u002F>\u003Ctext x=\"95\" y=\"80\" text-anchor=\"middle\" class=\"d-text\">App or SDK\u003C\u002Ftext>\u003Ctext x=\"95\" y=\"102\" text-anchor=\"middle\" class=\"d-small\">batched events\u003C\u002Ftext>\u003Crect x=\"195\" y=\"52\" width=\"150\" height=\"62\" rx=\"10\" class=\"d-accent\" \u002F>\u003Ctext x=\"270\" y=\"80\" text-anchor=\"middle\" class=\"d-text\">Langfuse Web\u003C\u002Ftext>\u003Ctext x=\"270\" y=\"102\" text-anchor=\"middle\" class=\"d-small\">UI and API\u003C\u002Ftext>\u003Crect x=\"370\" y=\"52\" width=\"150\" height=\"62\" rx=\"10\" class=\"d-gold\" \u002F>\u003Ctext x=\"445\" y=\"80\" text-anchor=\"middle\" class=\"d-text\">S3 or blob\u003C\u002Ftext>\u003Ctext x=\"445\" y=\"102\" text-anchor=\"middle\" class=\"d-small\">raw events\u003C\u002Ftext>\u003Crect x=\"545\" y=\"52\" width=\"150\" height=\"62\" rx=\"10\" class=\"d-box\" \u002F>\u003Ctext x=\"620\" y=\"80\" text-anchor=\"middle\" class=\"d-text\">Worker\u003C\u002Ftext>\u003Ctext x=\"620\" y=\"102\" text-anchor=\"middle\" class=\"d-small\">async ingest\u003C\u002Ftext>\u003Cpath d=\"M170 83 H193\" class=\"d-line\" marker-end=\"url(#ah-lf)\" \u002F>\u003Cpath d=\"M345 83 H368\" class=\"d-line\" marker-end=\"url(#ah-lf)\" \u002F>\u003Cpath d=\"M520 83 H543\" class=\"d-line\" marker-end=\"url(#ah-lf)\" \u002F>\u003Cpath d=\"M240 114 V147 H95 V178\" class=\"d-line\" marker-end=\"url(#ah-lf)\" \u002F>\u003Cpath d=\"M300 114 V178\" class=\"d-line\" marker-end=\"url(#ah-lf)\" \u002F>\u003Cpath d=\"M620 114 V178\" class=\"d-line\" marker-end=\"url(#ah-lf)\" \u002F>\u003Crect x=\"20\" y=\"180\" width=\"150\" height=\"62\" rx=\"10\" class=\"d-sky\" \u002F>\u003Ctext x=\"95\" y=\"208\" text-anchor=\"middle\" class=\"d-text\">Redis\u003C\u002Ftext>\u003Ctext x=\"95\" y=\"230\" text-anchor=\"middle\" class=\"d-small\">queue, key cache\u003C\u002Ftext>\u003Crect x=\"195\" y=\"180\" width=\"150\" height=\"62\" rx=\"10\" class=\"d-sky\" \u002F>\u003Ctext x=\"270\" y=\"208\" text-anchor=\"middle\" class=\"d-text\">PostgreSQL\u003C\u002Ftext>\u003Ctext x=\"270\" y=\"230\" text-anchor=\"middle\" class=\"d-small\">projects, prompts\u003C\u002Ftext>\u003Crect x=\"545\" y=\"180\" width=\"150\" height=\"62\" rx=\"10\" class=\"d-mint\" \u002F>\u003Ctext x=\"620\" y=\"208\" text-anchor=\"middle\" class=\"d-text\">ClickHouse\u003C\u002Ftext>\u003Ctext x=\"620\" y=\"230\" text-anchor=\"middle\" class=\"d-small\">traces, scores\u003C\u002Ftext>\u003Ctext x=\"20\" y=\"278\" class=\"d-small\">Reads hit ClickHouse for traces and PostgreSQL for project and prompt data.\u003C\u002Ftext>\u003Ctext x=\"20\" y=\"302\" class=\"d-label\">Raw events reach object storage first: an outage delays data, it does not lose it\u003C\u002Ftext>",[192],"Every event is persisted to object storage before it reaches the analytical database.",{"type":117,"content":194},[195],"Two consequences follow. A ClickHouse outage does not lose events, because the raw batch is already in object storage and is replayed. And trace queries never touch PostgreSQL, which is why the ClickHouse schema is shaped as a wide, mostly immutable observations table. The same design is what lets the vendor claim more than 90 billion observations a month across the platform; that is a company figure on its own infrastructure, not an independent benchmark.",{"type":130,"level":131,"id":98,"text":99},{"type":117,"content":198},[199],"Two entry points cover most cases. The OpenAI wrapper records calls without changing the call sites, and the context manager is for code that does not use the OpenAI SDK or where one span should wrap several model calls. Both read credentials from the environment, so the same instrumentation runs against the EU, US, Japan or HIPAA cloud region, or against a self-hosted deployment.",{"type":146,"code":201},"import os\n\nfrom langfuse import get_client\nfrom langfuse.openai import openai\n\nos.environ[\"LANGFUSE_PUBLIC_KEY\"] = \"pk-lf-...\"\nos.environ[\"LANGFUSE_SECRET_KEY\"] = \"sk-lf-...\"\nos.environ[\"LANGFUSE_HOST\"] = \"https:\u002F\u002Fcloud.langfuse.com\"  # EU region\n\nlangfuse = get_client()\n\n# 1. Drop-in: every OpenAI call is recorded as a generation.\nopenai.chat.completions.create(\n    model=\"gpt-4o\",\n    name=\"calculator\",\n    messages=[{\"role\": \"user\", \"content\": \"1 + 1 = \"}],\n)\n\n# 2. Explicit: a span around one unit of work, a generation inside it.\nwith langfuse.start_as_current_observation(as_type=\"span\", name=\"answer-question\") as span:\n    span.update(input={\"question\": \"What is the capital of France?\"})\n    with langfuse.start_as_current_observation(\n        as_type=\"generation\", name=\"llm-call\", model=\"gpt-4o\"\n    ) as generation:\n        generation.update(output=\"Paris.\")\n    span.update(output=\"answered\")\n\nlangfuse.flush()  # required in short-lived processes",{"type":117,"content":203},[204],"Anything that already emits OTLP spans can skip the SDKs entirely: the ingestion endpoint accepts a standard trace payload with the project keys as basic auth and the ingestion version in a header. That path is what makes Langfuse a defensible choice for a polyglot estate, where Python instrumentation would be one more service to maintain.",{"type":117,"content":206},[207],"Frameworks get first-class integrations rather than wrappers: the docs list OpenTelemetry, the Vercel AI SDK, LangChain for Python and JavaScript, LlamaIndex, CrewAI, AutoGen, Google ADK and Ollama, plus proxy-based logging for teams whose calls already go through LiteLLM. That last entry settles the architecture question, because a team routing every model call through a gateway can take its traces from the gateway instead of from the application.",{"type":209,"variant":210,"title":211,"body":212},"callout","note","Two details that cost an afternoon",[213,219],[214,215,218],"The SDKs flush in the background, which is why tracing adds no latency to a request and also why a Lambda handler, a cron job or a CLI that exits first can lose its last observations. Call ",{"tag":146,"children":216},[217],"flush()"," at the end of the process.",[220,221,224,225,228],"The SDK quickstart sets ",{"tag":146,"children":222},[223],"LANGFUSE_BASE_URL"," while the OpenTelemetry page sets ",{"tag":146,"children":226},[227],"LANGFUSE_HOST"," for the same value. Take the variable name from the page that matches your SDK version instead of assuming.",{"type":130,"level":131,"id":101,"text":102},{"type":117,"content":231},[232],"Tracing is the part every competitor has. What decides whether Langfuse earns its heavier deployment is that prompts and evaluations sit on the same traces: a prompt is versioned in the UI, fetched by the SDK with a client-side cache and released through labels, while datasets and experiments run that prompt against stored inputs and write the scores back onto the observations.",{"type":136,"ordered":137,"items":234},[235,240,245,250,255],[236,239],{"tag":141,"children":237},[238],"Prompt versioning with release management and composability, ","with protected deployment labels on the enterprise plan.",[241,244],{"tag":141,"children":242},[243],"Client-side prompt caching in the SDKs, ","revalidated in the background, with a read-through cache in Redis on the server.",[246,249],{"tag":141,"children":247},[248],"LLM-as-a-judge evaluators, custom scores from code, ","user feedback capture and annotation queues in the UI.",[251,254],{"tag":141,"children":252},[253],"Code evaluators that run deterministic Python or TypeScript checks ","on live observations, added in v4.",[256,259],{"tag":141,"children":257},[258],"Monitors that watch cost, latency and quality thresholds ","and notify through Slack, webhooks or GitHub Actions.",{"type":117,"content":261},[262],"The opinionated part: this is the right place to run offline evaluation. Because an experiment writes its scores onto the same observation identifiers the production trace uses, a regression found in a dataset run stays traceable to the request shape that produced it, which is the step most eval tooling leaves to a spreadsheet. The price is a prompt release process you now own, and a prompt registry that nobody updates is worse than no registry at all.",{"type":130,"level":131,"id":104,"text":105},{"type":117,"content":265},[266],"Self-hosting is free with no usage limit, which makes the cloud price the only thing left to model. Cloud bills data points, not seats: a unit is any trace, observation or score you send, so one agent turn with three observations and two scores is six units.",{"type":136,"ordered":137,"items":268},[269,274,279,284,289,294],[270,273],{"tag":141,"children":271},[272],"PostgreSQL for transactional data, ","ClickHouse for traces, observations and scores, Redis for the queue and the API key and prompt caches.",[275,278],{"tag":141,"children":276},[277],"Events land in object storage before the database, ","so an analytics outage delays data instead of losing it.",[280,283],{"tag":141,"children":281},[282],"Background migrations move long-running schema work off the upgrade path, ","which shortens upgrade downtime.",[285,288],{"tag":141,"children":286},[287],"Client-side data masking ships in the open-source edition; ","server-side masking, audit logs, SCIM, project-level RBAC and retention policies need an enterprise licence key.",[290,293],{"tag":141,"children":291},[292],"The self-hosted enterprise edition is bundled with ClickHouse Cloud, BYOC or Private, ","and its price is additive to that ClickHouse plan.",[295,298],{"tag":141,"children":296},[297],"Templates exist for Kubernetes, AWS, Azure and GCP; ","Render and Railway are community-supported only.",{"type":117,"content":300},[301],"The operational judgement: this is a platform, not a sidecar. Running it means watching ClickHouse, which means someone has to know ClickHouse. Teams that already run it gain a capability they could not otherwise buy; teams that do not should start on the free Hobby plan and keep self-hosting for the day the data-residency question becomes real.",{"type":303,"head":304,"rows":326},"table",[305,310,315,319],[306,307,308,309],"P","l","a","n",[306,311,312,313,314],"r","i","c","e",[316,309,313,307,317,318,314,318],"I","u","d",[320,321,308,322,323,313,321,308,309,324,314,325],"W","h","t"," ","g","s",[327,346,356,365],[328,333,335,340],[329,330,331,331,332],"H","o","b","y",[334,311,314,314],"F",[336,337,338,337,337,337,323,317,309,312,322,325,323,308,323,339,330,309,322,321],"5","0",",","m",[341,337,323,318,308,332,325,323,330,342,323,318,308,322,308,338,323,322,343,330,323,317,325,314,311,325,338,323,344,338,337,337,337,323,312,309,324,314,325,322,312,330,309,323,311,314,345,317,314,325,322,325,323,308,323,339,312,309,317,322,314],"3","f","w","1","q",[347,349,353,354],[348,330,311,314],"C",[350,351,352,323,308,323,339,330,309,322,321],"$","2","9",[344,337,337,338,337,337,337,323,317,309,312,322,325],[352,337,323,318,308,332,325,323,330,342,323,318,308,322,308,338,323,317,309,307,312,339,312,322,314,318,323,317,325,314,311,325,338,323,355,338,337,337,337,323,311,314,345,317,314,325,322,325,323,308,323,339,312,309,317,322,314],"4",[357,358,359,360],[306,311,330],[350,344,352,352,323,308,323,339,330,309,322,321],[344,337,337,338,337,337,337,323,317,309,312,322,325],[322,321,311,314,314,323,332,314,308,311,325,323,330,342,323,318,308,322,308,338,323,351,337,338,337,337,337,323,311,314,345,317,314,325,322,325,323,308,323,339,312,309,317,322,314,338,323,361,362,348,323,351,323,308,309,318,323,316,361,362,323,351,363,337,337,344,323,311,314,364,330,311,322,325],"S","O","7","p",[366,368,369,370],[367,309,322,314,311,364,311,312,325,314],"E",[350,351,338,355,352,352,323,308,323,339,330,309,322,321],[344,337,337,338,337,337,337,323,317,309,312,322,325],[308,317,318,312,322,323,307,330,324,325,338,323,361,348,316,371,338,323,313,317,325,322,330,339,323,311,308,322,314,323,307,312,339,312,322,325,338,323,317,364,322,312,339,314,323,361,372,373],"M","L","A",{"type":117,"content":375},[376],"Usage above the included units is billed at graduated rates: $8 per 100,000 units up to one million, $7 up to ten million, $6.50 up to fifty million and $6 beyond. The pricing page puts a one-million-unit month on Core at $101 and a twenty-five-million-unit month on Pro with the Teams add-on at $2,176. Model your unit count before comparing this with a per-seat or per-gigabyte price, because the same workload can differ by an order of magnitude depending on how many observations you emit per request.",{"type":209,"variant":378,"title":379,"body":380},"tip","Discounts that exist and are not advertised",[381],[382],"Both pricing pages list 50 percent off for early-stage startups in the first year, up to 100 percent off for research and students, 199 dollars a month in credits for non-profits, and 300 dollars a month for open-source projects in the first year. Ask before a procurement conversation rather than after, because this is exactly the kind of line that disappears from every comparison table.",{"type":130,"level":131,"id":107,"text":108},{"type":117,"content":385},[386],"The weaknesses first, because they are the reasons to buy something else. Instrumentation still has to be written, and an application that calls three providers through a gateway needs three integrations or one OpenTelemetry pipeline. The interface is dense, and the distance from a trace to a dashboard that answers a question is measured in days. Unit pricing punishes verbose instrumentation, so the cheapest way to cut a bill is to emit less detail, which is exactly the wrong instinct during an incident. And the product now belongs to a database vendor: ClickHouse bought Langfuse in January 2026, which has clearly helped the roadmap and also means the commercial enterprise edition is increasingly a ClickHouse conversation.",{"type":303,"head":388,"rows":394},[389,391,392,393],[390,330,330,307],"T",[372,312,313,314,309,313,314],[320,321,314,311,314,323,312,322,323,311,317,309,325],[361,322,311,330,309,324,314,325,322,323,308,322],[395,404,413,420],[396,397,400,402],[372,308,309,324,342,317,325,314],[371,316,390,323,313,330,311,314,338,323,314,314,398,323,318,312,311,314,313,322,330,311,312,314,325,323,317,309,318,314,311,323,308,323,313,330,339,339,314,311,313,312,308,307,323,399,314,332],"\u002F","k",[348,307,330,317,318,338,323,330,311,323,332,330,317,311,323,330,343,309,323,401,330,313,399,314,311,338,323,329,314,307,339,323,330,311,323,390,314,311,311,308,342,330,311,339,323,318,314,364,307,330,332,339,314,309,322],"D",[322,311,308,313,314,325,338,323,364,311,330,339,364,322,325,323,308,309,318,323,314,403,364,314,311,312,339,314,309,322,325,323,330,309,323,330,309,314,323,331,308,313,399,314,309,318],"x",[405,406,408,411],[372,308,309,324,361,339,312,322,321],[313,307,312,314,309,322,323,361,401,407,323,330,309,323,371,316,390,338,323,322,321,314,323,364,307,308,322,342,330,311,339,323,312,325,323,321,330,325,322,314,318],"K",[372,308,309,324,348,321,308,312,309,409,325,323,321,330,325,322,314,318,323,325,314,311,410,312,313,314],"'","v",[322,314,308,339,325,323,322,321,308,322,323,321,308,410,314,323,308,307,311,314,308,318,332,323,313,321,330,325,314,309,323,372,308,309,324,412,311,308,364,321],"G",[414,416,417,419],[373,311,312,415,314,323,306,321,330,314,309,312,403],"z",[367,307,308,325,322,312,313,323,372,312,313,314,309,325,314,323,351,128,337],[361,314,307,342,418,321,330,325,322,314,318,338,323,322,311,308,313,312,309,324,323,322,321,311,330,317,324,321,323,362,364,314,309,316,309,342,314,311,314,309,313,314,323,308,309,318,323,362,364,314,309,390,314,307,314,339,314,322,311,332],"-",[314,410,308,307,317,308,322,312,330,309,418,342,312,311,325,322,323,343,330,311,399,342,307,330,343,325,323,330,410,314,311,323,332,330,317,311,323,330,343,309,323,322,311,308,313,314,325],[421,422,423,424],[329,314,307,312,313,330,309,314],[373,364,308,313,321,314,418,351,128,337],[361,314,307,342,418,321,330,325,322,314,318,323,330,311,323,313,307,330,317,318],[313,308,364,322,317,311,312,309,324,323,314,410,314,311,332,323,313,308,307,307,323,343,312,322,321,323,309,330,323,361,401,407,323,313,321,308,309,324,314,338,323,322,321,311,330,317,324,321,323,308,323,364,311,330,403,332],{"type":117,"content":426},[427],"The comparison that matters is not feature count. Phoenix is free to run and stricter about the evaluation story, but Elastic License 2.0 is source-available rather than open source and stops you offering it as a service. Helicone is the cheapest route to cost and latency numbers on every call, at the price of a proxy in the request path. LangSmith is the smoothest option once the framework decision is made, and the one whose price scales with the size of the engineering team.",{"type":130,"level":131,"id":110,"text":111},{"type":117,"content":430},[431],"Langfuse is the tool this category needed: a permissively licensed platform that does not ask you to change frameworks, put a proxy in the request path, or give up the raw data. Take a position on it: it is the right default for a team running several agent surfaces against a real bill, and the wrong choice for a single prompt in a side project.",{"type":136,"ordered":433,"items":434},true,[435,440,444,448,453],[436,439],{"tag":141,"children":437},[438],"Adopt it if ","traces, prompt versioning and experiments have to live in one place and someone can operate ClickHouse.",[441,443],{"tag":141,"children":442},[438],"prompt versions must be auditable, which is the usual requirement in a procurement conversation in the EU.",[445,447],{"tag":141,"children":446},[438],"you already emit OpenTelemetry and would rather have one backend than per-framework instrumentation.",[449,452],{"tag":141,"children":450},[451],"Do not adopt it if ","the application makes a handful of model calls a day; a free tier plus structured logs costs less attention.",[454,456],{"tag":141,"children":455},[451],"nobody will tune instrumentation. The bill scales with the number of observations, not with the number of users, and the cheapest saving is to turn off the detail you need at 3am.",{"type":209,"variant":378,"title":458,"body":459},"The migration to plan now",[460],[461],"Langfuse Cloud stops serving v3 endpoints and features on 16 November 2026, after which the legacy APIs and ingestion paths are removed. The changelog says most projects need no migration and that a Migration Assistant lists only the checks that apply to a given project, but an existing v3 integration should be tested now rather than in November. Self-hosted deployments can upgrade on their own schedule.",{"type":130,"level":131,"id":113,"text":114},{"type":136,"ordered":137,"items":464},[465,469,470,471,472,473,474,475],[466,467,468],"tag","href","children",[466,467,468],[466,467,468],[466,467,468],[466,467,468],[466,467,468],[466,467,468],[466,467,468],[477,526,609,652],{"slug":478,"published":479,"minutes":480,"category":7,"tags":481,"keywords":487,"about":494,"sources":498,"cover":517,"og":518,"expertise":61,"locales":519,"lang":63,"title":520,"description":521,"coverAlt":522,"url":523,"pricing":524,"kind":525},"ollama","2026-09-29",11,[482,483,484,485,486],"Local inference","Open models","llama.cpp","GGUF","Model serving",[478,488,489,490,491,492,493],"ollama vs lm studio","ollama vs vllm","local llm runtime","gguf model server","ollama self hosting","ollama api",[495],{"name":496,"url":497},"Ollama (software)","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FOllama",[499,502,505,508,511,514],{"title":500,"url":501},"Ollama API documentation","https:\u002F\u002Fdocs.ollama.com\u002Fapi",{"title":503,"url":504},"Ollama on GitHub, with the MIT LICENSE file","https:\u002F\u002Fgithub.com\u002Follama\u002Follama",{"title":506,"url":507},"Ollama terms of service, last updated May 2026","https:\u002F\u002Follama.com\u002Fterms",{"title":509,"url":510},"Ollama pricing, cloud plans and per-token model rates","https:\u002F\u002Follama.com\u002Fpricing",{"title":512,"url":513},"Hardware support: Nvidia, AMD, Metal and Vulkan","https:\u002F\u002Fdocs.ollama.com\u002Fgpu",{"title":515,"url":516},"OpenAI compatibility, including what is not supported","https:\u002F\u002Fdocs.ollama.com\u002Fapi\u002Fopenai-compatibility","\u002Fimages\u002Fblog\u002Follama\u002Fcover.webp","\u002Fimages\u002Fblog\u002Follama\u002Fog.jpg",[63,64,65],"Ollama review: the friendly way to run open models","Ollama serves open models over one HTTP API on your own hardware. What it does well, where throughput falls short, and what the MIT licence does not cover.","Abstract cover art for the Ollama review","https:\u002F\u002Follama.com","MIT · free for personal use","Local inference runtime",{"slug":527,"published":528,"minutes":480,"category":7,"tags":529,"keywords":535,"about":543,"sources":550,"cover":602,"og":603,"expertise":61,"locales":604,"lang":63,"title":605,"description":606,"coverAlt":607,"url":546,"pricing":608,"kind":530},"portkey","2026-09-28",[530,531,532,533,534],"LLM gateway","Guardrails","Routing","Observability","Cost control",[536,537,538,539,540,541,542],"portkey ai gateway","portkey vs litellm","llm gateway comparison","llm gateway latency overhead","llm guardrails gateway","self-hosted llm gateway","portkey pricing",[544,547],{"name":545,"url":546},"Portkey","https:\u002F\u002Fportkey.ai",{"name":548,"url":549},"API gateway","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FAPI_gateway",[551,554,557,560,563,566,569,572,575,578,581,584,587,590,593,596,599],{"title":552,"url":553},"Portkey docs: AI Gateway","https:\u002F\u002Fportkey.ai\u002Fdocs\u002Fproduct\u002Fai-gateway",{"title":555,"url":556},"Portkey docs: Getting started with the AI Gateway","https:\u002F\u002Fdocs.portkey.ai\u002Fdocs\u002Fguides\u002Fgetting-started\u002Fgetting-started-with-ai-gateway",{"title":558,"url":559},"Portkey docs: Gateway config object","https:\u002F\u002Fportkey.ai\u002Fdocs\u002Fapi-reference\u002Fconfig-object",{"title":561,"url":562},"Portkey docs: Guardrails","https:\u002F\u002Fportkey.ai\u002Fdocs\u002Fproduct\u002Fguardrails",{"title":564,"url":565},"Portkey docs: Guardrail endpoints and capabilities","https:\u002F\u002Fportkey.ai\u002Fdocs\u002Fproduct\u002Fguardrails\u002Fcapabilities",{"title":567,"url":568},"Portkey docs: Cache, simple and semantic","https:\u002F\u002Fportkey.ai\u002Fdocs\u002Fproduct\u002Fai-gateway\u002Fcache-simple-and-semantic",{"title":570,"url":571},"Portkey docs: Load balancing","https:\u002F\u002Fportkey.ai\u002Fdocs\u002Fproduct\u002Fai-gateway\u002Fload-balancing",{"title":573,"url":574},"Portkey docs: Enterprise hybrid deployment architecture","https:\u002F\u002Fportkey.ai\u002Fdocs\u002Fself-hosting\u002Fhybrid-deployments\u002Farchitecture",{"title":576,"url":577},"Portkey pricing","https:\u002F\u002Fportkey.ai\u002Fpricing",{"title":579,"url":580},"Portkey gateway on GitHub, MIT licensed","https:\u002F\u002Fgithub.com\u002FPortkey-AI\u002Fgateway",{"title":582,"url":583},"Portkey's own benchmark: gateway versus direct Bedrock","https:\u002F\u002Fgithub.com\u002FPortkey-AI\u002Fbenchmark-test",{"title":585,"url":586},"Portkey status page","https:\u002F\u002Fstatus.portkey.ai\u002F",{"title":588,"url":589},"Palo Alto Networks completes acquisition of Portkey, May 2026","https:\u002F\u002Fwww.paloaltonetworks.com\u002Fcompany\u002Fpress\u002F2026\u002Fpalo-alto-networks-completes-acquisition-of-portkey-to-secure-ai-agents",{"title":591,"url":592},"Palo Alto Networks: Prisma AIRS AI Gateway","https:\u002F\u002Fwww.paloaltonetworks.com\u002Fai-security\u002Fai-gateway",{"title":594,"url":595},"Cloudflare AI Gateway pricing","https:\u002F\u002Fdevelopers.cloudflare.com\u002Fai-gateway\u002Freference\u002Fpricing\u002F",{"title":597,"url":598},"LiteLLM pricing","https:\u002F\u002Fwww.litellm.ai\u002Fpricing",{"title":600,"url":601},"OpenRouter pricing","https:\u002F\u002Fopenrouter.ai\u002Fpricing","\u002Fimages\u002Fblog\u002Fportkey\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fportkey\u002Fog.jpg",[63,64,65],"Portkey: a production LLM gateway, reviewed for routing, guardrails and cost","Portkey puts retries, fallbacks, caching, guardrails and cost tracking behind one OpenAI-compatible endpoint. What the config object does well, what the gateway costs in latency, and when to self-host.","A request path from an application through the Portkey gateway to three model providers, with the guardrail verdict and the log written below the proxy.","Free · from $49 per month",{"slug":610,"published":611,"minutes":6,"category":7,"tags":612,"keywords":617,"about":624,"sources":628,"cover":644,"og":645,"expertise":61,"locales":646,"lang":63,"title":647,"description":648,"coverAlt":649,"url":650,"pricing":651,"kind":530},"openrouter","2026-07-23",[530,613,614,615,616],"Model routing","Fallbacks","OpenAI-compatible","Pay per token",[610,618,538,619,620,621,622,623],"openrouter vs litellm","openrouter pricing","openai compatible api gateway","llm fallback routing","multi model api gateway","byok llm routing",[625],{"name":626,"url":627},"OpenRouter","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FOpenRouter",[629,632,633,636,639,642],{"title":630,"url":631},"OpenRouter documentation: quickstart","https:\u002F\u002Fopenrouter.ai\u002Fdocs\u002Fquickstart",{"title":600,"url":601},{"title":634,"url":635},"OpenRouter documentation: model fallbacks","https:\u002F\u002Fopenrouter.ai\u002Fdocs\u002Fguides\u002Frouting\u002Fmodel-fallbacks",{"title":637,"url":638},"OpenRouter documentation: provider routing","https:\u002F\u002Fopenrouter.ai\u002Fdocs\u002Fguides\u002Frouting\u002Fprovider-selection",{"title":640,"url":641},"OpenRouter documentation index","https:\u002F\u002Fopenrouter.ai\u002Fdocs\u002Fllms.txt",{"title":643,"url":627},"Wikipedia: OpenRouter","\u002Fimages\u002Fblog\u002Fopenrouter\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fopenrouter\u002Fog.jpg",[63,64,65],"OpenRouter: one API key in front of every model you might call","OpenRouter puts 500+ models from 80+ providers behind one OpenAI-compatible endpoint, with fallbacks and pass-through pricing. What it costs, where it breaks.","Request path through OpenRouter: client, router, candidate providers, fallback list and the model that finally answers.","https:\u002F\u002Fopenrouter.ai","Pay per token, no subscription",{"slug":653,"published":654,"minutes":6,"category":7,"tags":655,"keywords":659,"about":666,"sources":674,"cover":698,"og":699,"expertise":61,"locales":700,"lang":63,"title":701,"description":702,"coverAlt":703,"url":669,"pricing":704,"kind":705},"braintrust","2026-07-07",[656,533,657,658,10],"Evaluations","LLM-as-a-judge","CI gates",[653,660,661,662,663,664,665],"braintrust pricing","braintrust eval","autoevals library","braintrust vs langfuse","llm evaluation platform","eval driven development",[667,670,673],{"name":668,"url":669},"Braintrust","https:\u002F\u002Fwww.braintrust.dev",{"name":671,"url":672},"Continuous integration","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FContinuous_integration",{"name":32,"url":33},[675,678,681,684,687,690,693,695],{"title":676,"url":677},"Braintrust pricing: plans, credits and usage rates","https:\u002F\u002Fwww.braintrust.dev\u002Fpricing",{"title":679,"url":680},"Braintrust documentation: plans and limits","https:\u002F\u002Fwww.braintrust.dev\u002Fdocs\u002Fplans-and-limits",{"title":682,"url":683},"Braintrust documentation: evaluation quickstart","https:\u002F\u002Fwww.braintrust.dev\u002Fdocs\u002Fevaluation-quickstart",{"title":685,"url":686},"Braintrust documentation: get started","https:\u002F\u002Fwww.braintrust.dev\u002Fdocs",{"title":688,"url":689},"GitHub: Braintrust organisation repositories","https:\u002F\u002Fgithub.com\u002Forgs\u002Fbraintrustdata\u002Frepositories",{"title":691,"url":692},"Arize Phoenix documentation: self-hosting","https:\u002F\u002Farize.com\u002Fdocs\u002Fphoenix\u002Fself-hosting",{"title":694,"url":43},"Langfuse pricing: cloud plans and billable units",{"title":696,"url":697},"LangChain pricing: LangSmith plans","https:\u002F\u002Fwww.langchain.com\u002Fpricing","\u002Fimages\u002Fblog\u002Fbraintrust\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fbraintrust\u002Fog.jpg",[63,64,65],"Braintrust review: eval-first observability with a hard meter","Braintrust turns production traces into datasets and gated experiments. What Starter and Pro really include, which parts are open source, and where Phoenix, Langfuse and LangSmith win.","A loop from instrumented application logs into a dataset, an experiment with scorers, and a comparison that gates the pull request before the change returns to the application.","Free · from $249 per month","Evaluation platform",1791383548806]