Scope
Self-hosted LLM observability
Agent traces are among the most sensitive data your product generates: full prompts, customer records passing through tool calls, raw model outputs. When a contract or regulator says that data stays in your infrastructure, the vendor landscape splits on one asymmetry no vendor page states plainly: Langfuse self-hosting is free with all core product features under the MIT license (langfuse.com/pricing-self-host: 'Self-host all core Langfuse features for free without any limitations'), while LangSmith's docs state 'Self-hosted LangSmith is an add-on to the Enterprise plan' and require the license key delivered with that plan (docs.langchain.com/langsmith/self-hosted). If self-hosting is a requirement, the LangSmith conversation starts with enterprise sales; the Langfuse conversation starts with docker compose. That's the verdict — with two honest caveats. First, ops: Langfuse v3 in production wants Postgres, ClickHouse, Redis, and S3-compatible storage — four stateful services you now operate. Arize Phoenix beats Langfuse here: it runs as a single container under Elastic License 2.0, SQLite by default, Postgres for production (arize.com/docs/phoenix/self-hosting) — a genuinely lighter deployment if you mainly need traces and evals rather than Langfuse's full product surface. Second, if you don't actually have a residency requirement, Langfuse Cloud Core at $29/mo (90 days data access) or Pro at $199/mo (3 years) is almost certainly cheaper than operating ClickHouse yourself. This checklist is the decision gate plus the deployment hardening.
Deciding whether traces must stay in your infra
4 checksGet the residency requirement in writing — contract clause, DPA term, or regulator guidance — before committing to self-host ops
'Feels sensitive' is not a requirement; a customer DPA that names sub-processors is. Teams routinely take on a permanent ClickHouse operating burden to satisfy a requirement nobody can produce in writing, when Langfuse Cloud's EU region plus a signed DPA would have passed procurement.
Check whether redaction-before-send satisfies the requirement instead of full self-hosting
Most residency concerns attach to customer PII in prompts and tool outputs, not to latency histograms. If masking PII in the SDK callback before export satisfies your reviewer, you keep a managed backend and drop the ops cost entirely. Only when raw prompts themselves are the regulated asset does full self-host become mandatory.
If self-host is mandatory, weigh the license and sales-motion asymmetry: Langfuse core is MIT and free; LangSmith self-host requires an Enterprise plan
This single fact reorders the shortlist. Langfuse's handbook states all core capabilities are MIT-licensed, with only specific enterprise modules behind a commercial license key; LangSmith's own self-hosting docs gate the option to Enterprise. A LangChain-heavy stack can still export OpenTelemetry traces to a self-hosted Langfuse or Phoenix backend without adopting LangSmith.
Budget the hidden managed-tier costs before concluding cloud is cheaper: SSO and RBAC sit behind Langfuse's Teams add-on at ~$300/mo
Per the 2026 Langfuse pricing teardown on dev.to, enterprise SSO (Okta), SSO enforcement, and fine-grained RBAC require the Teams add-on — roughly $300/mo on top of Pro, ~$499/mo total. Self-hosted Langfuse gives you SSO via your own IdP config instead. If SSO is mandatory for security review, compare $499/mo cloud against your realistic ops cost, not against Pro's $199 sticker.
Choosing and sizing the self-hosted stack
3 checksMatch the tool to the surface you need: Phoenix for a single-container traces-and-evals deployment, Langfuse when you need the full product (prompt management, annotations, usage analytics)
Phoenix (Elastic License 2.0) runs as one container with SQLite by default and Postgres for production — a fraction of Langfuse v3's Postgres + ClickHouse + Redis + S3 footprint. That is a real third-party win for small teams: if traces and evals are the need, Phoenix's ops cost is close to zero. Choose Langfuse when the wider feature set justifies four stateful services.
Plan Langfuse v3's four stateful dependencies as owned infrastructure: Postgres, ClickHouse, Redis, S3-compatible storage
Each needs backups, upgrades, monitoring, and disk planning — ClickHouse especially, since trace volume grows with every agent step, not every user request. If your team has never operated ClickHouse, that learning curve is the true price of free MIT software; budget it explicitly instead of discovering it during an outage.
Instrument via OpenTelemetry rather than a vendor SDK where possible
OTel-first instrumentation keeps the backend swappable — Phoenix now, Langfuse later, or a column in your own warehouse — without re-instrumenting the agent. Vendor lock-in in the SDK layer is how a self-hosting decision quietly becomes irreversible.
Hardening the deployment you now own
3 checksKeep the observability UI off the public internet and behind your IdP
A self-hosted trace store is a searchable database of your prompts and customer data; an exposed Langfuse or Phoenix login page is a single credential away from bulk exfiltration. Private network plus SSO through your IdP is the baseline — it is also the capability you gained by self-hosting, so use it.
Apply retention and redaction policies yourself — self-hosting removes the vendor's lifecycle defaults
Managed tiers force a retention decision (Langfuse Cloud: 30 days Hobby, 90 days Core, 3 years Pro). Self-hosted, nothing expires until you build the job — so PII-bearing traces accumulate indefinitely by default, which inverts the privacy argument that justified self-hosting in the first place.
Back up and restore-test ClickHouse and Postgres before the trace store becomes load-bearing
Once evals, cost dashboards, and incident forensics depend on the trace store, losing it is a real incident. A restore that has never been tested is a hypothesis. This is the ops tax the managed vendors were charging for; pay it deliberately.
Common Mistakes
- Self-hosting to satisfy a residency requirement nobody has produced in writing, then paying the ClickHouse ops tax for years.
- Shortlisting only LangSmith because the stack uses LangChain, without noticing self-hosting it is gated to Enterprise plans while Langfuse's MIT core self-hosts free.
- Comparing self-host cost against Langfuse Pro's $199/mo while forgetting SSO/RBAC sits behind the ~$300/mo Teams add-on (~$499/mo total) — or the reverse: forgetting your own ops hours are not free.
- Deploying Langfuse v3's full four-service stack when a single-container Phoenix would have covered the actual need (traces and evals).
- Running the self-hosted store with no retention job and no redaction, accumulating unbounded raw prompts — recreating the exact exposure self-hosting was meant to prevent.