[{"data":1,"prerenderedAt":625},["ShallowReactive",2],{"tool-arize-phoenix-en":3},{"slug":4,"published":5,"minutes":6,"category":7,"tags":8,"keywords":14,"about":22,"sources":31,"cover":59,"og":60,"expertise":61,"locales":62,"lang":63,"title":66,"description":67,"coverAlt":68,"url":34,"pricing":69,"kind":9,"metaTitle":70,"takeaways":71,"faq":77,"toc":90,"blocks":115,"others":397},"arize-phoenix","2026-07-03",10,"llmops",[9,10,11,12,13],"LLM observability","Tracing","OpenTelemetry","Self-hosted","Evaluation",[15,16,17,18,19,20,21],"arize phoenix","phoenix arize self-hosted","arize phoenix docker","llm tracing opentelemetry","phoenix vs langfuse","openinference instrumentation","llm observability tools",[23,26,28],{"name":24,"url":25},"Arize Phoenix","https:\u002F\u002Fgithub.com\u002FArize-ai\u002Fphoenix",{"name":11,"url":27},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FOpenTelemetry",{"name":29,"url":30},"Observability (software)","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FObservability_(software)",[32,35,38,41,44,47,50,53,56],{"title":33,"url":34},"Arize Phoenix: open-source AI observability and evaluation","https:\u002F\u002Fphoenix.arize.com",{"title":36,"url":37},"Phoenix documentation: self-hosting","https:\u002F\u002Farize.com\u002Fdocs\u002Fphoenix\u002Fself-hosting",{"title":39,"url":40},"Phoenix documentation: licence, Elastic License 2.0","https:\u002F\u002Farize.com\u002Fdocs\u002Fphoenix\u002Fself-hosting\u002Flicense",{"title":42,"url":43},"Phoenix documentation: architecture, storage and scaling","https:\u002F\u002Farize.com\u002Fdocs\u002Fphoenix\u002Fself-hosting\u002Farchitecture",{"title":45,"url":46},"Phoenix documentation: setup tracing","https:\u002F\u002Farize.com\u002Fdocs\u002Fphoenix\u002Ftracing\u002Fhow-to-tracing\u002Fsetup-tracing",{"title":48,"url":49},"Phoenix documentation: OpenTelemetry SDK setup","https:\u002F\u002Farize.com\u002Fdocs\u002Fphoenix\u002Ftracing\u002Fhow-to-tracing\u002Fsetup-tracing\u002Fsetup-using-phoenix-otel",{"title":51,"url":52},"Arize pricing: AX Free, AX Pro and AX Enterprise","https:\u002F\u002Farize.com\u002Fpricing\u002F",{"title":54,"url":55},"Langfuse pricing: cloud plans and billable units","https:\u002F\u002Flangfuse.com\u002Fpricing",{"title":57,"url":58},"LangChain pricing: LangSmith plans","https:\u002F\u002Fwww.langchain.com\u002Fpricing","\u002Fimages\u002Fblog\u002Farize-phoenix\u002Fcover.webp","\u002Fimages\u002Fblog\u002Farize-phoenix\u002Fog.jpg","ai-engineer",[63,64,65],"en","de","hu","Arize Phoenix review: LLM tracing and evals you host yourself","Arize Phoenix is an ELv2-licensed tracing and evaluation server you run on your own database. What it does well, what it costs in operations, and where Langfuse, Braintrust and LangSmith beat it.","A pipeline from an instrumented agent application over OTLP into the Phoenix collector, SQLite or PostgreSQL, and the Phoenix interface with datasets and experiments.","Elastic License 2.0 · Cloud paid","Arize Phoenix: tracing you run yourself · Balázs Csorba",[72,73,74,75,76],"Phoenix is free with no span caps and no feature gates: the Elastic License 2.0 covers the whole self-hosted platform, and the paid meter is Arize AX rather than Phoenix.","The deployment is one container plus a database, SQLite by default and PostgreSQL 14 or newer for production, and the architecture docs state that a single instance is one tenant.","Ingestion is standard OTLP with OpenInference attributes, so the exporter can be swapped without a proprietary SDK in the request path.","Arize AX Free allows 25,000 spans and 1 GB a month with 15 days of retention, and AX Pro costs $50 a month for 50,000 spans, 10 GB and 30 days.","The trade is operational: no support contract, no uptime commitment and no multi-tenancy below AX Enterprise, so retention, backups and access control stay with the adopter.",[78,81,84,87],{"q":79,"a":80},"Is Arize Phoenix really free?","The self-hosted platform is free under the Elastic License 2.0, with no span limits, no usage metering and no feature gates; you pay only for the infrastructure it runs on. The licence forbids offering Phoenix as a hosted or managed service to third parties. Paid tiers exist only in Arize AX: Free at $0, Pro at $50 a month and Enterprise by quotation.",{"q":82,"a":83},"What database does Phoenix use?","SQLite by default, writing into the working directory, which suits a single developer. For production the architecture docs recommend PostgreSQL with a minimum supported version of 14, set through the database URL environment variable. Several instances can share one database behind a load balancer, or teams can be isolated with separate databases or separate PostgreSQL schemas.",{"q":85,"a":86},"How does Phoenix receive traces?","Applications export spans over OTLP using the OpenInference semantic conventions, either through phoenix.otel.register in Python or the TypeScript package for Node. The server answers on port 6006 locally, and auto_instrument=True activates whichever OpenInference instrumentor packages are installed in the environment.",{"q":88,"a":89},"Phoenix or Langfuse?","Phoenix is the pick when traces must stay inside your own network, including air-gapped deployments, because nothing in the open build talks to Arize and there is no usage meter. Langfuse is the pick when a team wants one maintained platform with prompt management and a $29 cloud tier instead of operating the stack itself.",[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},"self-hosting","Self-hosting in practice",{"id":104,"title":105},"pricing","What it costs",{"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,123,126,133,151,154,155,158,167,174,175,186,188,199,213,214,221,236,239,240,243,281,284,285,288,334,337,342,343,346,359,365,366],{"type":117,"content":118},"paragraph",[119],"Arize Phoenix is an open-source server that records what an LLM application did — every prompt, retrieval step, tool call and token — and then scores it. It starts from a single command on a laptop or lands in your own Kubernetes cluster, and the licence puts no meter on any of it. The position of this review is blunt: Phoenix is the shortest path to keeping trace data inside your network, and what you pay for that is the job of running an observability stack yourself.",{"type":117,"content":121},[122],"It sits between the application SDK and the dashboard, competing with Langfuse, Braintrust and LangSmith for that slot, and with Arize's own AX cloud for teams that would rather send an invoice than operate a database. What it usually replaces is worse: a pile of log dumps, a dashboard nobody reads and a spreadsheet of evaluation results.",{"type":124,"level":125,"id":92,"text":93},"heading",2,{"type":117,"content":127},[128,129,132],"Phoenix is a containerised application in three parts — a web interface, a trace collector and a SQL backend — released by Arize under the Elastic License 2.0. The Python package is ",{"tag":130,"children":131},"code",[4],", at version 20.19.0 in early October 2026 and requiring Python 3.11 or newer, and the repository holds a little over 11,700 stars. Everything is in the free build: tracing, annotation, datasets, experiments, a prompt IDE and LLM-as-a-judge evaluation.",{"type":134,"ordered":135,"items":136},"list",false,[137,139,141,143,145,147,149],[138],"Licence: Elastic License 2.0 (ELv2), free to self-host with no usage limits and no feature gates",[140],"Ingestion: OTLP with OpenInference semantic conventions, plus auto-instrumentation packages for providers and frameworks",[142],"Storage: SQLite by default, PostgreSQL 14 or newer for production, both behind the same SQL schema",[144],"Deployment: terminal, Docker, Kubernetes, Helm, CloudFormation and one-click templates for Railway, Render, Cloud Run and Azure",[146],"Scope: traces and sessions, annotations, datasets, experiments, prompt versioning, code scorers and LLM-as-a-judge",[148],"Tenancy: one tenant per instance, with OAuth2, LDAP, local accounts and role-based access control in the same build",[150],"Cloud counterpart: Arize AX, which is where support, an uptime commitment and multi-tenancy live",{"type":117,"content":152},[153],"For a team whose customer or regulator will not accept traces leaving the country, that list is the shortlist on its own. For everyone else it is a trade: the whole product costs nothing, and the jobs a vendor would otherwise do — retention, backups, upgrades, and the answer to who is paged when the collector stops — become yours.",{"type":124,"level":125,"id":95,"text":96},{"type":117,"content":156},[157],"The instrumented process emits spans to an OpenTelemetry exporter, Phoenix accepts them over OTLP on port 6006, stores them in SQL and groups them into projects, sessions and traces. Each span carries OpenInference attributes for tokens, cost, model, retrieval payloads and tool arguments, which is what later lets a scorer read the run rather than only its final string.",{"type":159,"attrs":160,"inner":164,"caption":165},"diagram",{"viewBox":161,"role":162,"aria-labelledby":163},"0 0 770 320","img","d1-px-t d1-px-d","\u003Ctitle id='d1-px-t'>How a trace reaches Phoenix and comes back as an experiment\u003C\u002Ftitle>\u003Cdesc id='d1-px-d'>An instrumented agent application sends spans through an OpenTelemetry exporter and OpenInference instrumentation to the Phoenix collector on port 6006. The collector writes to SQLite or PostgreSQL and serves the same data through the web interface. A return path takes traces into datasets, experiments and scorers, which feed the next change to the application.\u003C\u002Fdesc>\u003Ctext x='20' y='28' class='d-title'>Trace path\u003C\u002Ftext>\u003Ctext x='750' y='28' text-anchor='end' class='d-label'>OTLP in, SQL underneath\u003C\u002Ftext>\u003Crect x='20' y='50' width='130' height='64' rx='10' class='d-box'\u002F>\u003Ctext x='85' y='78' text-anchor='middle' class='d-text'>Agent app\u003C\u002Ftext>\u003Ctext x='85' y='100' text-anchor='middle' class='d-small'>any framework\u003C\u002Ftext>\u003Crect x='175' y='50' width='130' height='64' rx='10' class='d-accent'\u002F>\u003Ctext x='240' y='78' text-anchor='middle' class='d-text'>OTel SDK\u003C\u002Ftext>\u003Ctext x='240' y='100' text-anchor='middle' class='d-small'>OpenInference\u003C\u002Ftext>\u003Crect x='330' y='50' width='130' height='64' rx='10' class='d-gold'\u002F>\u003Ctext x='395' y='78' text-anchor='middle' class='d-text'>Phoenix\u003C\u002Ftext>\u003Ctext x='395' y='100' text-anchor='middle' class='d-small'>port 6006\u003C\u002Ftext>\u003Crect x='485' y='50' width='130' height='64' rx='10' class='d-sky'\u002F>\u003Ctext x='550' y='78' text-anchor='middle' class='d-text'>SQLite\u003C\u002Ftext>\u003Ctext x='550' y='100' text-anchor='middle' class='d-small'>or PostgreSQL\u003C\u002Ftext>\u003Crect x='640' y='50' width='110' height='64' rx='10' class='d-box'\u002F>\u003Ctext x='695' y='78' text-anchor='middle' class='d-text'>Web UI\u003C\u002Ftext>\u003Ctext x='695' y='100' text-anchor='middle' class='d-small'>traces, evals\u003C\u002Ftext>\u003Cpath d='M152 82 H173' class='d-line' marker-end='url(#ah-px)'\u002F>\u003Cpath d='M307 82 H328' class='d-line' marker-end='url(#ah-px)'\u002F>\u003Cpath d='M462 82 H483' class='d-line' marker-end='url(#ah-px)'\u002F>\u003Cpath d='M617 82 H638' class='d-line' marker-end='url(#ah-px)'\u002F>\u003Cpath d='M395 114 V152 H115 V170' class='d-line' marker-end='url(#ah-px)'\u002F>\u003Cpath d='M695 114 V152 H550 V170' class='d-line' marker-end='url(#ah-px)'\u002F>\u003Crect x='40' y='172' width='150' height='64' rx='10' class='d-mint'\u002F>\u003Ctext x='115' y='200' text-anchor='middle' class='d-text'>Datasets\u003C\u002Ftext>\u003Ctext x='115' y='222' text-anchor='middle' class='d-small'>rows from traces\u003C\u002Ftext>\u003Crect x='470' y='172' width='160' height='64' rx='10' class='d-mint'\u002F>\u003Ctext x='550' y='200' text-anchor='middle' class='d-text'>Experiments\u003C\u002Ftext>\u003Ctext x='550' y='222' text-anchor='middle' class='d-small'>scorers attach scores\u003C\u002Ftext>\u003Cpath d='M470 204 H360 V116' class='d-line' marker-end='url(#ah-px)'\u002F>\u003Cdefs>\u003Cmarker id='ah-px' 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='272' class='d-small'>Spans travel over standard OTLP, so the exporter can be exchanged without touching the application.\u003C\u002Ftext>\u003Ctext x='20' y='298' class='d-label'>A trace becomes a dataset row, the dataset becomes an experiment, the score comes back as a delta\u003C\u002Ftext>",[166],"One instance holds collector, storage and interface; the evaluation loop reads the same rows the interface shows.",{"type":117,"content":168},[169,170,173],"The loop after that is the one Arize publishes: observe, annotate, hypothesise, experiment, measure. A production trace becomes a dataset row, a candidate prompt runs against that dataset as an experiment, and scorers — built-in, code-based or judge-based — attach scores to the records the interface already shows. The documentation also describes PXI, an agent interface for investigating issues and running experiments over captured traces, plus an agent-assisted setup command, ",{"tag":130,"children":171},[172],"px setup",", which waits for a real trace before it reports success.",{"type":124,"level":125,"id":98,"text":99},{"type":117,"content":176},[177,178,181,182,185],"Two commands. The server is one Python invocation, ",{"tag":130,"children":179},[180],"uvx arize-phoenix serve",", which answers on http:\u002F\u002Flocalhost:6006 with an empty project. The client side is ",{"tag":130,"children":183},[184],"arize-phoenix-otel"," plus the OpenInference instrumentor for the SDK the application already uses:",{"type":130,"code":187},"# Terminal 1: uvx arize-phoenix serve  ->  UI on http:\u002F\u002Flocalhost:6006\n# pip install \"arize-phoenix-otel>=0.16.0\" openinference-instrumentation-openai\nfrom phoenix.otel import register\n\nregister(\n    project_name=\"support-agent\",\n    auto_instrument=True,\n    endpoint=\"http:\u002F\u002Flocalhost:6006\u002Fv1\u002Ftraces\",\n)\n\nfrom openai import OpenAI\n\nclient = OpenAI()\nreply = client.responses.create(\n    model=\"gpt-5-mini\",\n    input=\"Summarise this ticket in one sentence.\",\n)\nprint(reply.output_text)",{"type":117,"content":189},[190,191,194,195,198],"What comes back is a project with real spans: input, output, model, token counts, latency and the nesting of tool calls under the agent turn that triggered them. The ",{"tag":130,"children":192},[193],"register()"," call reads ",{"tag":130,"children":196},[197],"PHOENIX_COLLECTOR_ENDPOINT"," when it is set, so the same code reaches a laptop, a shared staging server or an air-gapped deployment without an edit.",{"type":200,"variant":201,"title":202,"body":203},"callout","tip","auto_instrument installs nothing",[204],[205,208,209,212],{"tag":130,"children":206},[207],"register(auto_instrument=True)"," only switches on OpenInference instrumentor packages that are already installed in the environment: ",{"tag":130,"children":210},[211],"pip install openinference-instrumentation-openai",", or the langchain, anthropic and llama-index equivalents, for every framework that should appear in the trace. Miss one and that layer is silently absent rather than loudly broken.",{"type":124,"level":125,"id":101,"text":102},{"type":117,"content":215},[216,217,220],"The documentation claims an air-gapped deployment: nothing in the open build talks to Arize, and traces, prompts and datasets stay inside your infrastructure. The footprint behind that claim is one container and one database, and the working directory or ",{"tag":130,"children":218},[219],"PHOENIX_SQL_DATABASE_URL"," is the only stateful part that deserves a backup schedule.",{"type":134,"ordered":135,"items":222},[223,228,230,232,234],[224,225,227],"Storage: SQLite in the working directory by default; setting ",{"tag":130,"children":226},[219]," switches to PostgreSQL, minimum supported version 14",[229],"Images: arizephoenix\u002Fphoenix on Docker Hub with latest, pinned version, nonroot and debug tags, plus a separate arizephoenix\u002Fphoenix-helm chart",[231],"Authentication: OAuth2, LDAP and local accounts, with role-based access control and retention policies per project",[233],"Scale-out: several instances behind a load balancer on one database, or one instance per team with its own database",[235],"Isolation: a schema setting shares one database between teams without sharing rows",{"type":117,"content":237},[238],"Two limits are worth knowing before the first production week. A single instance is one tenant, so team isolation means several deployments, and group-based multi-tenancy sits in the issue tracker as a 2026 item rather than a shipped feature. SQLite is also the development backend: the architecture page routes production traffic to PostgreSQL, which puts backups, migrations and connection pooling in your column.",{"type":124,"level":125,"id":104,"text":105},{"type":117,"content":241},[242],"Phoenix itself has no price. The self-hosting page lists no licence fees, no usage limits and no feature gates, so the monthly cost is the machine, the database and whoever owns them. The commercial surface is Arize AX, a separate managed product whose free tier is enough to evaluate and whose Pro tier is the first real bill:",{"type":244,"head":245,"rows":254},"table",[246,248,250,252],[247],"Plan",[249],"Price",[251],"Spans and storage",[253],"Retention",[255,264,273],[256,258,260,262],[257],"AX Free",[259],"$0",[261],"25,000 spans and 1 GB a month",[263],"15 days",[265,267,269,271],[266],"AX Pro",[268],"$50 a month",[270],"50,000 spans and 10 GB a month",[272],"30 days",[274,276,278,280],[275],"AX Enterprise",[277],"Custom",[279],"Custom span and volume limits",[277],{"type":117,"content":282},[283],"Both of the first two tiers are hosted by Arize, and the pricing table lists self-hosted deployment against AX Enterprise only. Against the field the free self-hosted path is the outlier: Langfuse caps its free cloud at 50,000 units a month, Braintrust at 1 GB and LangSmith at 5,000 traces, while an unlimited Phoenix costs an instance. The catch sits at the far end — dedicated support and an uptime commitment are Enterprise lines, so a team that needs someone else accountable for availability cannot buy that for $50.",{"type":124,"level":125,"id":107,"text":108},{"type":117,"content":286},[287],"Phoenix asks you to be your own observability vendor, and it shows. Retention is whatever you configure, ingestion volume is whatever the disk takes, and nothing in the open build arrives with a support contract or an uptime commitment. The SQL backend is not an analytical engine either: the architecture page routes high-volume, sub-second OLAP work to adb, Arize's proprietary database, which exists only inside AX. The project also ships quickly, which is good for features and awkward for pinning an upgrade window, and the polished hosted extras — managed agents, issue detection, repository access — are AX rows rather than Phoenix rows.",{"type":244,"head":289,"rows":298},[290,292,294,296],[291],"Tool",[293],"Free tier",[295],"Paid entry",[297],"Self-host",[299,307,316,325],[300,301,303,305],[24],[302],"No span caps, local install",[304],"AX Pro $50 a month",[306],"Free under ELv2",[308,310,312,314],[309],"Langfuse",[311],"50,000 units, 30 days, 2 users",[313],"Core $29 a month",[315],"Free, Docker Compose",[317,319,321,323],[318],"Braintrust",[320],"1 GB, 10,000 scores, 14 days",[322],"Pro $249 a month",[324],"Enterprise only",[326,328,330,332],[327],"LangSmith",[329],"1 seat, 5,000 base traces",[331],"Plus $39 a seat",[333],"Enterprise add-on",{"type":117,"content":335},[336],"Choose by constraint rather than by feature count. If data residency is the requirement, Phoenix or self-hosted Langfuse is the answer and Braintrust is not on the list until sales is involved. If the bill matters more than the data plane, Langfuse Core at $29 undercuts AX Pro and carries prompt management with it. If evaluation in CI is the actual job, a scorer library and a ready-made eval action are a shorter route than assembling the parts here.",{"type":338,"content":339},"quote",[340,341],"You may not provide the software to third parties as a hosted or managed service, where the service provides users with access to any substantial set of the features or functionality of the software."," — Elastic License 2.0, limitations",{"type":124,"level":125,"id":110,"text":111},{"type":117,"content":344},[345],"Phoenix is the right default for a team that cannot export traces and has someone who enjoys running Postgres. It is the wrong default for a team that wants an evaluation platform this week with no infrastructure conversation, because storage, retention, access control and upgrades are real work even though the licence is free.",{"type":134,"ordered":347,"items":348},true,[349,351,353,355,357],[350],"Choose it when trace data must stay in your own network, including air-gapped environments: the open build sends nothing to Arize.",[352],"Choose it when the cost model matters more than the feature checklist: no span caps, no seat fee and no ingestion meter.",[354],"Choose it when OpenTelemetry is already the house standard, since ingestion is OTLP and the exporter can be exchanged without touching the application.",[356],"Do not choose it when you need multi-tenant hosting with an uptime commitment at an entry price: AX Pro is hosted only, and contracts start at Enterprise.",[358],"Do not choose it when evaluation in CI is the primary job, or when nobody on the team wants to own a database.",{"type":200,"variant":360,"title":361,"body":362},"note","Free to run is not free to operate",[363],[364],"Removing the licence bill does not remove the operational one: a database, a retention policy, an upgrade calendar and an owner. Teams that budget for that get the best deal in this category of tooling. Teams that assume it away end up with traces nobody trusts and a dashboard nobody opens.",{"type":124,"level":125,"id":113,"text":114},{"type":134,"ordered":347,"items":367},[368,372,375,379,382,385,388,391,394],[369],{"tag":370,"href":34,"children":371},"a",[33],[373],{"tag":370,"href":37,"children":374},[36],[376],{"tag":370,"href":40,"children":377},[378],"Phoenix documentation: licence under the Elastic License 2.0",[380],{"tag":370,"href":43,"children":381},[42],[383],{"tag":370,"href":46,"children":384},[45],[386],{"tag":370,"href":49,"children":387},[48],[389],{"tag":370,"href":52,"children":390},[51],[392],{"tag":370,"href":55,"children":393},[54],[395],{"tag":370,"href":58,"children":396},[57],[398,447,530,582],{"slug":399,"published":400,"minutes":401,"category":7,"tags":402,"keywords":408,"about":415,"sources":419,"cover":438,"og":439,"expertise":61,"locales":440,"lang":63,"title":441,"description":442,"coverAlt":443,"url":444,"pricing":445,"kind":446},"ollama","2026-09-29",11,[403,404,405,406,407],"Local inference","Open models","llama.cpp","GGUF","Model serving",[399,409,410,411,412,413,414],"ollama vs lm studio","ollama vs vllm","local llm runtime","gguf model server","ollama self hosting","ollama api",[416],{"name":417,"url":418},"Ollama (software)","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FOllama",[420,423,426,429,432,435],{"title":421,"url":422},"Ollama API documentation","https:\u002F\u002Fdocs.ollama.com\u002Fapi",{"title":424,"url":425},"Ollama on GitHub, with the MIT LICENSE file","https:\u002F\u002Fgithub.com\u002Follama\u002Follama",{"title":427,"url":428},"Ollama terms of service, last updated May 2026","https:\u002F\u002Follama.com\u002Fterms",{"title":430,"url":431},"Ollama pricing, cloud plans and per-token model rates","https:\u002F\u002Follama.com\u002Fpricing",{"title":433,"url":434},"Hardware support: Nvidia, AMD, Metal and Vulkan","https:\u002F\u002Fdocs.ollama.com\u002Fgpu",{"title":436,"url":437},"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":448,"published":449,"minutes":401,"category":7,"tags":450,"keywords":456,"about":464,"sources":471,"cover":523,"og":524,"expertise":61,"locales":525,"lang":63,"title":526,"description":527,"coverAlt":528,"url":467,"pricing":529,"kind":451},"portkey","2026-09-28",[451,452,453,454,455],"LLM gateway","Guardrails","Routing","Observability","Cost control",[457,458,459,460,461,462,463],"portkey ai gateway","portkey vs litellm","llm gateway comparison","llm gateway latency overhead","llm guardrails gateway","self-hosted llm gateway","portkey pricing",[465,468],{"name":466,"url":467},"Portkey","https:\u002F\u002Fportkey.ai",{"name":469,"url":470},"API gateway","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FAPI_gateway",[472,475,478,481,484,487,490,493,496,499,502,505,508,511,514,517,520],{"title":473,"url":474},"Portkey docs: AI Gateway","https:\u002F\u002Fportkey.ai\u002Fdocs\u002Fproduct\u002Fai-gateway",{"title":476,"url":477},"Portkey docs: Getting started with the AI Gateway","https:\u002F\u002Fdocs.portkey.ai\u002Fdocs\u002Fguides\u002Fgetting-started\u002Fgetting-started-with-ai-gateway",{"title":479,"url":480},"Portkey docs: Gateway config object","https:\u002F\u002Fportkey.ai\u002Fdocs\u002Fapi-reference\u002Fconfig-object",{"title":482,"url":483},"Portkey docs: Guardrails","https:\u002F\u002Fportkey.ai\u002Fdocs\u002Fproduct\u002Fguardrails",{"title":485,"url":486},"Portkey docs: Guardrail endpoints and capabilities","https:\u002F\u002Fportkey.ai\u002Fdocs\u002Fproduct\u002Fguardrails\u002Fcapabilities",{"title":488,"url":489},"Portkey docs: Cache, simple and semantic","https:\u002F\u002Fportkey.ai\u002Fdocs\u002Fproduct\u002Fai-gateway\u002Fcache-simple-and-semantic",{"title":491,"url":492},"Portkey docs: Load balancing","https:\u002F\u002Fportkey.ai\u002Fdocs\u002Fproduct\u002Fai-gateway\u002Fload-balancing",{"title":494,"url":495},"Portkey docs: Enterprise hybrid deployment architecture","https:\u002F\u002Fportkey.ai\u002Fdocs\u002Fself-hosting\u002Fhybrid-deployments\u002Farchitecture",{"title":497,"url":498},"Portkey pricing","https:\u002F\u002Fportkey.ai\u002Fpricing",{"title":500,"url":501},"Portkey gateway on GitHub, MIT licensed","https:\u002F\u002Fgithub.com\u002FPortkey-AI\u002Fgateway",{"title":503,"url":504},"Portkey's own benchmark: gateway versus direct Bedrock","https:\u002F\u002Fgithub.com\u002FPortkey-AI\u002Fbenchmark-test",{"title":506,"url":507},"Portkey status page","https:\u002F\u002Fstatus.portkey.ai\u002F",{"title":509,"url":510},"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":512,"url":513},"Palo Alto Networks: Prisma AIRS AI Gateway","https:\u002F\u002Fwww.paloaltonetworks.com\u002Fai-security\u002Fai-gateway",{"title":515,"url":516},"Cloudflare AI Gateway pricing","https:\u002F\u002Fdevelopers.cloudflare.com\u002Fai-gateway\u002Freference\u002Fpricing\u002F",{"title":518,"url":519},"LiteLLM pricing","https:\u002F\u002Fwww.litellm.ai\u002Fpricing",{"title":521,"url":522},"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":531,"published":532,"minutes":6,"category":7,"tags":533,"keywords":535,"about":543,"sources":551,"cover":575,"og":576,"expertise":61,"locales":577,"lang":63,"title":578,"description":579,"coverAlt":580,"url":545,"pricing":581,"kind":9},"langfuse","2026-08-13",[9,10,11,534,13],"Self-hosting",[531,536,537,538,539,540,541,542],"langfuse vs langsmith","llm tracing tool","self-hosted llm observability","langfuse pricing","opentelemetry llm traces","llm cost tracking","prompt versioning",[544,546,547,550],{"name":309,"url":545},"https:\u002F\u002Flangfuse.com",{"name":11,"url":27},{"name":548,"url":549},"ClickHouse","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FClickHouse",{"name":29,"url":30},[552,555,558,560,563,566,569,572],{"title":553,"url":554},"Langfuse documentation: observability and application tracing","https:\u002F\u002Flangfuse.com\u002Fdocs\u002Fobservability\u002Foverview",{"title":556,"url":557},"Langfuse documentation: get started with tracing","https:\u002F\u002Flangfuse.com\u002Fdocs\u002Fobservability\u002Fget-started",{"title":559,"url":55},"Langfuse pricing: cloud plans, billable units and worked examples",{"title":561,"url":562},"Langfuse pricing: self-hosted plans and the feature comparison","https:\u002F\u002Flangfuse.com\u002Fpricing-self-host",{"title":564,"url":565},"Self-host Langfuse: deployment options, containers and storage services","https:\u002F\u002Flangfuse.com\u002Fself-hosting",{"title":567,"url":568},"Langfuse changelog: v4 is live (17 August 2026)","https:\u002F\u002Flangfuse.com\u002Fchangelog\u002F2026-08-17-langfuse-v4",{"title":570,"url":571},"Langfuse blog: Langfuse joins ClickHouse (16 January 2026)","https:\u002F\u002Flangfuse.com\u002Fblog\u002Fjoining-clickhouse",{"title":573,"url":574},"GitHub: langfuse\u002Flangfuse, the platform repository","https:\u002F\u002Fgithub.com\u002Flangfuse\u002Flangfuse","\u002Fimages\u002Fblog\u002Flangfuse\u002Fcover.webp","\u002Fimages\u002Fblog\u002Flangfuse\u002Fog.jpg",[63,64,65],"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",{"slug":583,"published":584,"minutes":6,"category":7,"tags":585,"keywords":590,"about":597,"sources":601,"cover":617,"og":618,"expertise":61,"locales":619,"lang":63,"title":620,"description":621,"coverAlt":622,"url":623,"pricing":624,"kind":451},"openrouter","2026-07-23",[451,586,587,588,589],"Model routing","Fallbacks","OpenAI-compatible","Pay per token",[583,591,459,592,593,594,595,596],"openrouter vs litellm","openrouter pricing","openai compatible api gateway","llm fallback routing","multi model api gateway","byok llm routing",[598],{"name":599,"url":600},"OpenRouter","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FOpenRouter",[602,605,606,609,612,615],{"title":603,"url":604},"OpenRouter documentation: quickstart","https:\u002F\u002Fopenrouter.ai\u002Fdocs\u002Fquickstart",{"title":521,"url":522},{"title":607,"url":608},"OpenRouter documentation: model fallbacks","https:\u002F\u002Fopenrouter.ai\u002Fdocs\u002Fguides\u002Frouting\u002Fmodel-fallbacks",{"title":610,"url":611},"OpenRouter documentation: provider routing","https:\u002F\u002Fopenrouter.ai\u002Fdocs\u002Fguides\u002Frouting\u002Fprovider-selection",{"title":613,"url":614},"OpenRouter documentation index","https:\u002F\u002Fopenrouter.ai\u002Fdocs\u002Fllms.txt",{"title":616,"url":600},"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",1791383548961]