-
Notifications
You must be signed in to change notification settings - Fork 262
docs: add versions & compatibility overview page #3258
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from 1 commit
0badb5c
777d086
2a852af
ee152b5
862b1cd
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,103 @@ | ||
| --- | ||
| title: Versions & compatibility | ||
| description: How Langfuse server, SDK, and API versions relate across GA versions, minimum server requirements, and Cloud vs self-hosted availability. | ||
| --- | ||
|
|
||
| # Versions & compatibility | ||
|
|
||
| Reference for how Langfuse's server, SDK, and API versions relate across Langfuse Cloud and self-hosted deployments. | ||
|
|
||
| <Callout type="info"> | ||
| Langfuse Cloud runs the latest version, including both GA and preview features. New capabilities usually ship to **Langfuse Cloud** first (as preview), then become GA for **OSS / self-hosted** once validated. Availability therefore differs between the two. This page calls out the difference per version, API, and endpoint. | ||
| </Callout> | ||
|
|
||
| ## GA versions [#ga] | ||
|
|
||
| Generally available versions. Forward-looking tracks that are not yet GA, such as the server v4 [Fast Preview](/docs/v4), are in **preview**. | ||
|
|
||
| | Component | GA version | Package / repo | Notes | | ||
| | --- | --- | --- | --- | | ||
| | Server | v3 | [langfuse/langfuse](https://github.com/langfuse/langfuse/releases) <a href="https://github.com/langfuse/langfuse/releases"><img className="inline" src="https://img.shields.io/github/v/release/langfuse/langfuse?style=flat-square&label=release" alt="Langfuse server release" /></a> | ClickHouse + Redis + S3/blob storage + worker | | ||
| | Python SDK | v4 | [`langfuse`](https://pypi.org/project/langfuse/) <a href="https://pypi.org/project/langfuse/"><img className="inline" src="https://img.shields.io/pypi/v/langfuse?style=flat-square&label=pypi" alt="PyPI langfuse" /></a> | OpenTelemetry-based since v3 | | ||
| | JS/TS SDK | v5 | [`@langfuse/*`](https://www.npmjs.com/package/@langfuse/tracing) <a href="https://www.npmjs.com/package/@langfuse/tracing"><img className="inline" src="https://img.shields.io/npm/v/@langfuse/tracing?style=flat-square&label=npm" alt="NPM @langfuse/tracing" /></a> | OpenTelemetry-based since v4 | | ||
| | Other languages | n/a | [OpenTelemetry](/integrations/native/opentelemetry) | Any OTel SDK to the Langfuse OTel endpoint | | ||
|
|
||
| ## SDK ↔ server compatibility [#sdk-server] | ||
|
|
||
| Recent SDKs require a recent self-hosted server. Cloud always satisfies these minimums. | ||
|
|
||
| | SDK & version | Min. self-hosted server | Status | Upgrade guide | | ||
| | --- | --- | --- | --- | | ||
| | Python SDK v4 | [≥ 3.125.0](https://github.com/langfuse/langfuse/releases/tag/v3.125.0) | GA | | | ||
| | Python SDK v3 | [≥ 3.125.0](https://github.com/langfuse/langfuse/releases/tag/v3.125.0) | Legacy | [Python v3 → v4](/docs/observability/sdk/upgrade-path/python-v3-to-v4) | | ||
| | Python SDK v2 | server v2+ | Legacy | [Python v2 → v3](/docs/observability/sdk/upgrade-path/python-v2-to-v3) | | ||
| | Python SDK v1 | unsupported on v3 | End of life | [All paths](/docs/observability/sdk/upgrade-path) | | ||
| | JS/TS SDK v5 | [≥ 3.95.0](https://github.com/langfuse/langfuse/releases/tag/v3.95.0) | GA | | | ||
| | JS/TS SDK v4 | [≥ 3.95.0](https://github.com/langfuse/langfuse/releases/tag/v3.95.0) | Legacy | [JS v4 → v5](/docs/observability/sdk/upgrade-path/js-v4-to-v5) | | ||
| | JS/TS SDK v3 / v2 | server v2+ | Legacy | [JS v3 → v4](/docs/observability/sdk/upgrade-path/js-v3-to-v4) | | ||
| | JS/TS SDK v1 | unsupported on v3 | End of life | [All paths](/docs/observability/sdk/upgrade-path) | | ||
|
|
||
| The server is backwards compatible with older SDKs. When upgrading an SDK, run a recent server too. See the [versioning policy](/self-hosting/upgrade/versioning). | ||
|
|
||
| ## Server versions [#server] | ||
|
|
||
| | Version | Highlights | Status | Security patches | Upgrade guide | | ||
| | --- | --- | --- | --- | --- | | ||
| | v1 | PostgreSQL, synchronous ingestion. | End of life | No | [v1 → v2](/self-hosting/upgrade/upgrade-guides/upgrade-v1-to-v2) | | ||
| | v2 | PostgreSQL, synchronous ingestion. Rebuilt usage & cost tracking. Supports SDK v1+. | End of life | No | [v2 → v3](/self-hosting/upgrade/upgrade-guides/upgrade-v2-to-v3) | | ||
| | v3 | ClickHouse + Redis + S3/blob storage + worker; asynchronous, event-driven. Requires SDK v2+. | GA | Yes | | | ||
| | v4 ([Fast Preview](/docs/v4)) | Observations-first data model, faster at scale. Cloud-only preview. | Preview | Yes | [Adopt](/docs/v4) | | ||
|
|
||
| v1 and v2 are end of life; upgrade is recommended. v2 → v3 is an infrastructure migration (adds ClickHouse, Redis, blob storage). | ||
|
|
||
| ## API versions [#api] | ||
|
|
||
| ### Ingestion [#ingestion] | ||
|
|
||
| | Endpoint | Status | Notes | | ||
| | --- | --- | --- | | ||
| | `POST /api/public/otel/v1/traces` | Recommended | OpenTelemetry (OTLP) endpoint, server v3+ (self-hosted ≥ 3.22.0). The path forward for all ingestion. | | ||
| | `POST /api/public/ingestion` | Deprecated | Legacy batch ingestion; async on v3+ (returns `207`). Use the OTel endpoint. | | ||
|
|
||
| ### Read APIs [#read-apis] | ||
|
|
||
| Current versions use cursor pagination and selective field groups. **Legacy** endpoints still work but are superseded by a current version. **Deprecated** endpoints will be removed in a future version; migrate to the replacement shown in Notes. | ||
|
|
||
| | Endpoint | Status | Notes | | ||
| | --- | --- | --- | | ||
| | `GET /api/public/v2/observations` | Current | Cloud (GA); self-hosted via the v4 preview opt-in | | ||
| | `GET /api/public/observations` | Legacy | | | ||
| | `GET /api/public/observations/{id}` | Deprecated | Use `GET /api/public/v2/observations` | | ||
| | `GET /api/public/v2/metrics` | Current | Cloud (GA); self-hosted via the v4 preview opt-in | | ||
| | `GET /api/public/metrics` | Legacy | | | ||
| | `GET /api/public/v3/scores` | Current | GA (Cloud and self-hosted) | | ||
| | `GET /api/public/scores` | Legacy | | | ||
| | `GET /api/public/v2/scores` | Deprecated | Use `GET /api/public/v3/scores` | | ||
| | `GET /api/public/traces/{id}` | Deprecated | Use `GET /api/public/v2/observations` | | ||
| | `GET /api/public/sessions` | Deprecated | Use `GET /api/public/v2/observations` | | ||
| | `/api/public/mcp` | Preview | [MCP server](/docs/api-and-data-platform/features/mcp-server); v4 ([Fast Preview](/docs/v4)) only | | ||
|
Check failure on line 78 in content/docs/compatibility.mdx
|
||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
The table marks Prompt To Fix With AIThis is a comment left during a code review.
Path: content/docs/compatibility.mdx
Line: 78
Comment:
**MCP server availability contradicts existing docs**
The table marks `/api/public/mcp` as "v4 ([Fast Preview](/docs/v4)) only", but `content/docs/api-and-data-platform/features/mcp-server.mdx` lists active endpoints for Cloud EU, Cloud US, Cloud Japan, and HIPAA today with no v4 prerequisite. Users reading this page will incorrectly conclude the MCP server is unavailable to them, while the dedicated MCP page will tell them it is. The PR description flags this as needing reconciliation — one of the two pages needs to be authoritative before this goes live.
How can I resolve this? If you propose a fix, please make it concise.Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time! There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🔴 The compatibility table marks Extended reasoning...The contradiction
But the linked page —
Nowhere on that page is v4, Fast Preview, or a preview opt-in mentioned as a prerequisite. It is presented as a generally-available capability, and is already the recommended way to do prompt management via MCP on v3 self-hosted deployments today. Why this misleads readers The compatibility page is a new canonical reference that this same PR cross-links from three other places (SDK overview, self-hosting versioning, and the compatibility FAQ). A reader on v3 self-hosted who is already using Step-by-step proof
The author flagged this The PR description explicitly calls this out under "Notes for reviewers": "The /docs/v4 MCP note says 'v4 only'; the existing mcp-server.mdx says the MCP server is available today for prompt management — may need reconciling." So this is a known unresolved gap in the PR as submitted. Suggested fix Update the compatibility row to reflect actual availability. Two reasonable options:
|
||
|
|
||
| - Self-hosted Observations/Metrics v2 require the v4 preview opt-in (`LANGFUSE_MIGRATION_V4_ALLOW_PREVIEW_OPT_IN`). | ||
| - SDKs default to the current resources (`api.observations`, `api.scores`, `api.metrics`); legacy versions are under `api.legacy.*` (e.g. `api.legacy.observations_v1` / `observationsV1`). On self-hosted, use the legacy observations and metrics resources until their v2 APIs are GA there. | ||
|
Check failure on line 81 in content/docs/compatibility.mdx
|
||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🔴 The new compatibility page contradicts itself and other docs about v4 self-hosted availability. The Read APIs table (lines 68, 71) and bullet at line 80 tell self-hosted operators they can enable v2 Observations/Metrics via a preview opt-in and env var Extended reasoning...What the bug is The new Where the contradictions live On the same page:
Lines 49 and 81 say self-hosted has no v2 API access today; lines 68, 71, and 80 say it does via an opt-in env var. Both cannot be right. Cross-referencing other docs
The phantom env variable A repo-wide grep for Step-by-step proof of impact
How to fix Either:
|
||
| - Metrics v2 has no `traces` view. | ||
|
|
||
| <Callout type="warning"> | ||
| Real-time v2 data requires Python SDK ≥ 4.0.0, JS/TS SDK ≥ 5.0.0, or `x-langfuse-ingestion-version: 4` on your OTEL exporter. Otherwise data can lag up to 10 minutes. | ||
| </Callout> | ||
|
|
||
| See the [Observations API](/docs/api-and-data-platform/features/observations-api) and [Metrics API](/docs/metrics/features/metrics-api) pages for details. | ||
|
|
||
| ## Evaluations & integrations [#evals-integrations] | ||
|
|
||
| Each has a current version (built on the v4 data model) and a deprecated version that still works but will be removed. Both run on Cloud and self-hosted. Some also require a specific plan or edition; see [pricing](/pricing). | ||
|
|
||
| | Capability | Current | Deprecated | | ||
| | --- | --- | --- | | ||
| | [Evaluation](/docs/evaluation/evaluation-methods/llm-as-a-judge) | Span / observation-level (server ≥ 3.150.0; Python SDK v3+ / JS SDK v4+) | Trace-level (Python SDK v2+ / JS SDK v3+) | | ||
|
Check failure on line 96 in content/docs/compatibility.mdx
|
||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Prompt To Fix With AIThis is a comment left during a code review.
Path: content/docs/compatibility.mdx
Line: 96
Comment:
**"Deprecated" label for trace-level evals directly contradicts existing FAQ**
`content/faq/all/llm-as-a-judge-migration.mdx` explicitly states: *"Trace-level evaluators will continue to work. This is an upgrade path, not a deprecation."* Labeling trace-level evaluation as **Deprecated** here contradicts that page and will confuse users who read both. The PR description acknowledges this conflict. Both pages will be live simultaneously, so one of them needs to be corrected before this merges — either the FAQ line should be updated or the deprecation label here should be softened to "Legacy".
How can I resolve this? If you propose a fix, please make it concise.Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time! There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🔴 The 'Deprecated' column on line 96 lists trace-level evaluations, but content/faq/all/llm-as-a-judge-migration.mdx line 24 explicitly promises 'Trace-level evaluators will continue to work. This is an upgrade path, not a deprecation.' The compatibility page's own definition on line 92 says deprecated versions 'will be removed' — directly contradicting that promise. Fix by relabeling the column to 'Legacy' / 'Superseded' (matching the FAQ language), or update the FAQ with product sign-off if this really is a deprecation. The PR description already flags this as an unresolved reconciliation. Extended reasoning...The contradiction\n\nTwo docs pages shipping together on this repo now make mutually incompatible claims about the lifecycle of trace-level evaluators:\n\n- |
||
| | [PostHog](/integrations/analytics/posthog) | Enriched observations | Traces and observations (legacy) | | ||
| | [Blob storage export](/docs/api-and-data-platform/features/export-to-blob-storage) | Enriched observations | Traces and observations (legacy) | | ||
| | [Mixpanel](/integrations/analytics/mixpanel) | Enriched observations | Traces and observations (legacy) | | ||
|
|
||
| ## How versioning works [#policy] | ||
|
|
||
| Langfuse uses [semantic versioning](/self-hosting/upgrade/versioning): a major bump means a breaking change (infrastructure or public-API removal). Server and SDKs are versioned independently. Release notes: [server](https://github.com/langfuse/langfuse/releases), [Python SDK](https://github.com/langfuse/langfuse-python/releases), [JS/TS SDK](https://github.com/langfuse/langfuse-js/releases). | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -37,9 +37,11 @@ | |
| <Details> | ||
| <Summary>Requirements for self-hosted Langfuse</Summary> | ||
|
|
||
| <Callout type="info"> | ||
| If you are self-hosting Langfuse, the Python SDK v3 requires [**Langfuse platform version ≥ 3.125.0**](https://github.com/langfuse/langfuse/releases/tag/v3.125.0) and the TypeScript SDK v4 requires [**Langfuse platform version ≥ 3.95.0**](https://github.com/langfuse/langfuse/releases/tag/v3.95.0) for all features to work correctly. | ||
|
|
||
| See the full [versions & compatibility overview](/docs/compatibility) for the SDK ↔ server matrix and API version availability. | ||
| </Callout> | ||
|
Check warning on line 44 in content/docs/observability/sdk/overview.mdx
|
||
|
Comment on lines
40
to
45
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🟡 The self-hosting requirements callout still names Python SDK v3 and TypeScript SDK v4 as if current, but the top of this same file (lines 17–18) and the new /docs/compatibility page identify Python v4 / JS-TS v5 as current. The numeric minimums (≥ 3.125.0 and ≥ 3.95.0) happen to match v4/v5 too, so the copy is out of date rather than wrong — but since this PR now cross-links this callout to a page that visibly lists v4/v5, a one-line update to say "Python SDK v4" / "JS-TS SDK v5" (or drop the version-specific sentence in favor of the new compatibility link) would remove the mismatch. Pre-existing copy — not a merge blocker. Extended reasoning...What the bug is. In |
||
|
|
||
| </Details> | ||
|
|
||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
traces/{id}andsessionsBoth
GET /api/public/traces/{id}andGET /api/public/sessionspoint users toGET /api/public/v2/observationsas their replacement. Observations, traces, and sessions are conceptually distinct resources; a user migrating from the sessions list endpoint to an observations list endpoint would get fundamentally different data. If the v4 data model intentionally collapses these, a brief note explaining the conceptual change would reduce confusion — otherwise readers may assume the replacement is a straightforward semantic equivalent. Is there a v2 sessions or traces endpoint planned, or is the intent that users query the observations endpoint and filter by type? A one-line note clarifying the data-model reason for this would help readers understand the migration.Prompt To Fix With AI