Skip to content

Commit 86e4e94

Browse files
committed
Audit Logfire docs against implementation
1 parent bf62cde commit 86e4e94

33 files changed

Lines changed: 208 additions & 199 deletions

docs/audit-logs-api.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ description: "Retrieve organization activity logs for security monitoring, compl
55

66
# Logfire audit logs API
77

8-
The Audit Logs API lets you retrieve activity logs for your organization. This feature is available on the [Enterprise plan](./enterprise.md) only.
8+
The Audit Logs API lets you retrieve activity logs for your organization. This feature is available for Enterprise Cloud organizations and self-hosted deployments.
99

1010
Each log entry records user actions: logins, project updates, token changes, and more. Use it for security monitoring, compliance reporting, and usage auditing.
1111

@@ -20,7 +20,7 @@ Each log entry records user actions: logins, project updates, token changes, and
2020

2121
## Authentication
2222

23-
Requests are authenticated with a Bearer token scoped to `organizations:auditlog`. See [API Keys docs](./reference/advanced//use-api-keys.md) for instructions on how to generate one.
23+
Requests are authenticated with a Bearer token scoped to `organization:auditlog`. See [API Keys docs](./reference/advanced/use-api-keys.md) for instructions on how to generate one.
2424

2525
**Type:** Bearer token
2626

docs/comparisons/arize-phoenix.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ Arize Phoenix is an ML observability platform focused on model monitoring, drift
99
| **Primary Focus** | AI observability for agents and apps | ML model monitoring |
1010
| **Strength** | AI + application tracing | Drift detection, model performance |
1111
| **Non-AI Tracing** | Full support | Limited |
12-
| **Language Support** | Python, JS/TS, Rust (SDKs) + any OTel | Python-focused |
12+
| **Language Support** | Python, JS/TS, Rust (SDKs) + any OTel | Python and JS SDKs + OTLP |
1313
| **Evals** | Integrated web-UI - Code-based via `pydantic-evals` | Integrated web-UI - Code-based via external library |
1414
| **Pricing** | Per-span ($2/million)* | Usage-based |
1515
| **Setup** | 3 lines of code | OTel-based (several lines of code) |
@@ -73,7 +73,7 @@ logfire.instrument_openai()
7373

7474
Three lines, and you're observing AI calls with full application context.
7575

76-
**Arize Phoenix** requires more configuration, especially for non-AI instrumentation.
76+
**Arize Phoenix** is OpenTelemetry-based, but Logfire provides more opinionated shortcuts for application and AI instrumentation in one SDK.
7777

7878
### Query Interface — Essential for Agentic Coding
7979

@@ -86,7 +86,7 @@ Three lines, and you're observing AI calls with full application context.
8686

8787
When you're iterating on AI applications with coding agents, the agent needs to understand production behavior. With SQL, it can ask any question. With proprietary interfaces, it's constrained to anticipated queries.
8888

89-
**Arize Phoenix** has its own query interface optimized for ML metrics but less flexible for ad-hoc analysis.
89+
**Arize Phoenix** has query tools optimized for ML and trace workflows, but Logfire exposes a PostgreSQL-compatible SQL interface for ad-hoc analysis.
9090

9191
## Complementary Use
9292

docs/comparisons/datadog.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,11 @@ Datadog is a comprehensive enterprise monitoring platform. Logfire is an AI-nati
66

77
| Feature | Logfire | Datadog |
88
|-------------------------|--------------------------------|---------|
9-
| **Architecture** | OpenTelemetry-native | Proprietary agents |
9+
| **Architecture** | OpenTelemetry-native | Datadog agents plus OTel ingestion |
1010
| **Pricing Model** | Per-span ($2/million)* | Per-host + ingestion + custom metrics |
1111
| **Host Fees** | None | $15-40/host/month |
12-
| **AI/LLM Support** | First-class, one function call | Add-on, separate product |
13-
| **Query Language** | SQL (Postgres-compatible) | Proprietary |
12+
| **AI/LLM Support** | First-class, one function call | LLM Observability product with SDK/OTel options |
13+
| **Query Language** | SQL (Postgres-compatible) | Product-specific query tools |
1414
| **Setup Complexity** | 3 lines of code | Agent deployment per host |
1515
| **Autoscaling Impact** | Linear cost increase | High-water-mark billing spikes |
1616
| **Dashboards & alerts** | Included, SQL-based | Included, proprietary query language |
@@ -55,7 +55,7 @@ Datadog is a comprehensive enterprise monitoring platform. Logfire is an AI-nati
5555

5656
### AI/LLM Support
5757

58-
**Datadog** added LLM observability as a separate product. It works, but AI isn't central to the platform's design.
58+
**Datadog** has an LLM Observability product, including SDK and OpenTelemetry GenAI ingestion options. It is part of a broad enterprise monitoring platform rather than the central design point of the product.
5959

6060
**Logfire** was built for the AI era. [One function call](https://pydantic.dev/docs/logfire/integrations/?utm_source=datadog_comparison_docs) (`logfire.instrument_openai()`) gives you:
6161

@@ -67,13 +67,13 @@ Datadog is a comprehensive enterprise monitoring platform. Logfire is an AI-nati
6767

6868
### OpenTelemetry
6969

70-
**Datadog** uses proprietary agents. While they support OTel export, it's not the native path.
70+
**Datadog** supports OpenTelemetry ingestion, including GenAI semantic-convention traces for LLM Observability, while much of the broader Datadog experience still uses Datadog agents and product-specific setup.
7171

7272
**Logfire** is OpenTelemetry-native with [first-class integrations for most technologies](https://pydantic.dev/docs/logfire/integrations/?utm_source=datadog_comparison_docs). Any OTel instrumentation works automatically. Your instrumentation is portable: if you ever want to switch, your code doesn't change.
7373

7474
### Query Language — Essential for Agentic Coding
7575

76-
**Datadog** uses a proprietary query language for dashboards and analysis. This creates limitations:
76+
**Datadog** uses product-specific query tools for dashboards and analysis. Compared with a PostgreSQL-compatible SQL interface, this creates tradeoffs:
7777

7878
- Learning curve for humans and AI alike
7979
- Coding agents are constrained to anticipated queries
@@ -86,7 +86,7 @@ Datadog is a comprehensive enterprise monitoring platform. Logfire is an AI-nati
8686
- **Agentic workflows** — When coding agents debug your AI application, they can write arbitrary queries
8787
- **Familiar syntax** — No new query language to learn
8888

89-
When you're iterating on AI applications with coding agents, the agent needs to understand production behavior. With SQL, it can ask any question. With proprietary DSLs, it's constrained to what someone anticipated.
89+
When you're iterating on AI applications with coding agents, the agent needs to understand production behavior. With SQL, it can ask any question. With product-specific query interfaces, it may be constrained by the available interface for that product area.
9090

9191
## Migration Path
9292

docs/comparisons/langfuse.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ Both Logfire and Langfuse help you observe AI/LLM applications, but they take fu
1414
| **Python Support** | First-class (Pydantic team) | Good |
1515
| **Non-AI Tracing** | Full support | Limited |
1616
| **LLM Features** | Token tracking, costs, panels | Token tracking, costs, evals, prompt mgmt |
17-
| **OpenTelemetry** | Native | Export support |
17+
| **OpenTelemetry** | Native | Native SDK / OTLP ingestion |
1818

1919
*Logfire Cloud pricing (Team or Growth plans). Enterprise pricing available [on request](https://calendar.app.google/k9pkeuNMmzJAJ4Mx5).
2020

@@ -45,7 +45,7 @@ This matters because AI applications don't exist in isolation. They call APIs, q
4545

4646
### Query Language — Essential for Agentic Coding
4747

48-
**Langfuse** uses a custom UI and API for querying data.
48+
**Langfuse** uses a custom UI and API for querying data, with OpenTelemetry-based ingestion support for traces.
4949

5050
**Logfire** uses SQL with PostgreSQL-compatible syntax. This is a significant advantage for AI-assisted development:
5151

docs/comparisons/sentry.md

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ Sentry is a mature error monitoring platform. Logfire is an AI-native observabil
88
|---------------------|----------------------------------------|------------------------------------------|
99
| **Primary Focus** | Full observability (logs, traces, AI) | Error monitoring |
1010
| **App Tracing** | Core capability | Available, not a core focus |
11-
| **AI/LLM Support** | First-class, automatic instrumentation | Generic function tracing only |
11+
| **AI/LLM Support** | First-class, automatic instrumentation | AI Performance/LLM monitoring features |
1212
| **Logging** | Structured logs with full context | Error-focused |
1313
| **Live View** | Real-time "pending spans" ||
1414
| **Query Interface** | SQL (Postgres-compatible) | Custom UI |
@@ -48,14 +48,9 @@ Sentry is a mature error monitoring platform. Logfire is an AI-native observabil
4848

4949
### AI/LLM Support
5050

51-
**Sentry** treats AI calls like any other function. You'll see that an error occurred, but you won't see:
51+
**Sentry** now has AI Performance and LLM monitoring features for supported SDKs and integrations. Those features are useful when your workflow is already centered on Sentry's error and performance tooling.
5252

53-
- What prompt was sent
54-
- What the model responded
55-
- Token usage and costs
56-
- Tool calls and their results
57-
58-
**Logfire** was built for AI applications. One function call gives you complete LLM visibility:
53+
**Logfire** was built for AI applications and full-stack telemetry from the start. One function call gives you LLM visibility alongside the rest of your OpenTelemetry data:
5954

6055
```python skip="true" skip-reason="incomplete"
6156
import logfire
@@ -71,7 +66,7 @@ logfire.instrument_openai() # That's it
7166

7267
### SQL-Powered Analytics — Essential for Agentic Coding
7368

74-
**Sentry** uses a custom UI for querying and filtering.
69+
**Sentry** uses custom query and exploration UIs for querying and filtering.
7570

7671
**Logfire** uses SQL with PostgreSQL-compatible syntax. This is a significant advantage for AI-assisted development:
7772

docs/enterprise.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,9 @@ In addition to the [Team and Growth plans](https://pydantic.dev/pricing), Pydant
1414

1515
## Enterprise Single Sign-On (SSO)
1616

17-
Logfire Enterprise supports SSO through [Dex](https://github.com/dexidp/dex), an open-source OIDC gateway. The same Dex configuration model works across Enterprise Cloud, Enterprise Dedicated, and Enterprise Self-Hosted deployments.
17+
Logfire Enterprise SSO is built on [Dex](https://github.com/dexidp/dex), an open-source OIDC gateway.
1818

19-
Dex works with common identity providers including Okta, Azure AD, Auth0, Google Workspace, LDAP/AD, and generic OIDC or SAML providers.
19+
Enterprise Cloud and Enterprise Dedicated support managed OIDC identity providers such as Okta, Microsoft Azure Entra ID, and Keycloak. Self-hosted deployments configure Dex directly through Helm values, so they can use any connector supported by Dex, including OIDC, SAML, LDAP, GitHub, and Google.
2020

2121
## Enterprise Cloud
2222

docs/evaluate/datasets/evaluations.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,14 +123,15 @@ print(f'Fetched {len(dataset.cases)} cases')
123123
print(f'First case input type: {type(dataset.cases[0].inputs).__name__}')
124124
```
125125

126-
If you have custom evaluator types stored with your cases, pass them via `custom_evaluator_types` so they can be deserialized:
126+
If you have custom evaluator types stored with your cases or dataset, pass them via `custom_evaluator_types` so they can be deserialized:
127127

128128
```python skip="true" skip-reason="external-connection"
129129
dataset = client.get_dataset(
130130
'qa-golden-set',
131131
input_type=QuestionInput,
132132
output_type=AnswerOutput,
133133
custom_evaluator_types=[MyCustomEvaluator],
134+
custom_report_evaluator_types=[MyCustomReportEvaluator],
134135
)
135136
```
136137

docs/evaluate/datasets/ui.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ Once created, you can edit the dataset to add a description and define schemas.
6868
From the dataset detail page, click **Edit** to modify the dataset's configuration. The edit form has two sections:
6969

7070
- **General**: Name and description.
71-
- **Schemas**: Define JSON schemas for inputs, expected outputs, and metadata. Use the **Generate schema** toggle to have Pydantic AI create schemas from a natural language description of your data shape.
71+
- **Schemas**: Define JSON schemas for inputs, expected outputs, and metadata. Use the **Generate schema** action to have Pydantic AI create schemas from a natural language description of your data shape.
7272

7373
## Managing Cases
7474

@@ -134,11 +134,13 @@ This preserves a link back to the source trace, so you always know where a test
134134
From the dataset detail page, click **Export** to download the dataset in one of two formats:
135135

136136
- **JSON**: Raw JSON representation of all cases.
137-
- **pydantic-evals**: A YAML format compatible with `pydantic_evals.Dataset.from_file()`.
137+
- **Python (pydantic-evals)**: JSON in the pydantic-evals-compatible `{name, cases, evaluators, report_evaluators}` shape, suitable for loading with `pydantic_evals.Dataset.from_dict()`.
138138

139139
## What's Next?
140140

141141
Once you have cases in a dataset, you can:
142142

143+
- Add dataset-level or report-level evaluators from the dataset detail page's **Evaluators** tab.
144+
143145
- Run evaluations against it — see [Running Evaluations](evaluations.md).
144146
- View and compare experiment results — see [Evals: Datasets & Experiments](../../guides/web-ui/evals.md#viewing-experiments).

docs/gateway-migration.md

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,19 @@ title: "Migrating from Pydantic AI Gateway"
33
description: "How to migrate from the legacy gateway.pydantic.dev to the AI Gateway on Pydantic Logfire."
44
---
55

6-
# Pydantic AI Gateway is Moving to Pydantic Logfire
6+
# Pydantic AI Gateway Has Moved to Pydantic Logfire
77

8-
We're consolidating the AI Gateway into Logfire. This means [gateway.pydantic.dev](https://gateway.pydantic.dev/) is being deprecated, and the gateway is now managed through your Logfire account.
8+
The AI Gateway has moved into Logfire. The legacy [gateway.pydantic.dev](https://gateway.pydantic.dev/) platform has reached end of life, and the gateway is now managed through your Logfire account.
99

1010
## Shutdown Timeline
1111

1212
| Date | Event |
1313
|------|-------|
14-
| **15 March 2026** | Self-service refunds available in the legacy gateway platform |
14+
| **15 March 2026** | Self-service refunds became available in the legacy gateway platform |
1515
| **13 April 2026 at 3pm UTC** | Legacy gateway fully shut down (end of life) |
16-
| **By end of April 2026** | Automatic refunds processed for any remaining balances |
16+
| **By end of April 2026** | Automatic refunds were processed for any remaining balances |
1717

18-
**Please migrate before 13 April 2026.** If you need help, email us at [engineering@pydantic.dev](mailto:engineering@pydantic.dev).
18+
If you still need help after the shutdown, email us at [engineering@pydantic.dev](mailto:engineering@pydantic.dev).
1919

2020
## Why We Made This Change
2121

@@ -32,9 +32,7 @@ Moving the gateway into Logfire unlocks a number of improvements:
3232

3333
### What happens to my current balance?
3434

35-
From **15 March 2026**, you can request a refund of your remaining balance via the button in the [legacy gateway platform](https://gateway.pydantic.dev). The refund will be issued to the original payment method you used.
36-
37-
If you do not request a refund manually, any outstanding credits will be refunded automatically before the end of April 2026.
35+
Self-service refunds became available on **15 March 2026** in the [legacy gateway platform](https://gateway.pydantic.dev). Any outstanding credits that were not requested manually were scheduled for automatic refund before the end of April 2026.
3836

3937
### Do I need to create a new account?
4038

docs/guides/web-ui/alerts.md

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ With **Logfire**, use Alerts to notify you when certain conditions are met.
1010

1111
Let's see in practice how to create an alert.
1212

13-
1. Go to the **Alerts** tab in the left sidebar.
14-
2. Click the **Create alert** button.
13+
1. Go to **Notify****Alerts** in the left sidebar.
14+
2. Click the **New Alert** button.
1515

1616
Then you'll see the following form:
1717

@@ -34,10 +34,13 @@ WHERE
3434
1. The `SELECT ... FROM records` statement is the base query that will be executed. The **records** table contains the spans and logs data. `trace_id` links to the trace in the live view when viewing the alert run results in the web UI.
3535
2. The `attributes` field is a JSON field that contains additional information about the record. In this case, we're using the `http.route` attribute to filter the records by route.
3636

37-
The **Time window** field allows you to specify the time range over which the query will be executed.
37+
Use the **Notifications** section to choose:
3838

39-
The **Webhook URL** field is where you can specify a URL to which the alert will send a POST request when triggered.
40-
For now, **Logfire** alerts only send the requests in [Slack format].
39+
- **Include rows from**: the time window of data included every time the query runs.
40+
- **Run the query**: how often Logfire executes the query.
41+
- **Notify me when**: which result condition sends a notification.
42+
43+
Select one or more notification channels for delivery. If you have not created a channel yet, go to **Notify****Delivery****Channels** and click **New channel**. For Slack, create a Slack incoming webhook and choose the Slack channel type.
4144

4245
??? tip "Get a Slack webhook URL"
4346
To get a Slack webhook URL, follow the instructions in the [Slack documentation](https://api.slack.com/messaging/webhooks).
@@ -84,14 +87,12 @@ Otherwise, you'll see the number of matches highlighted in orange.
8487

8588
![Alerts list with error](../../images/guide/browser-alerts-error.png)
8689

87-
In this case, you'll also receive a notification in the Webhook URL you've set up.
90+
In this case, you'll also receive notifications in the channels you've selected.
8891

8992
## Edit an alert
9093

91-
You can configure an alert by clicking on the **Configuration** button on the right side of the alert.
94+
You can configure an alert by opening it from the alerts list and clicking **Edit Alert**.
9295

9396
![Edit alert](../../images/guide/browser-alerts-edit.png)
9497

9598
You can update the alert, or delete it by clicking the **Delete** button. If instead of deleting the alert, you want to disable it, you can click on the **Active** switch.
96-
97-
[Slack format]: https://api.slack.com/reference/surfaces/formatting

0 commit comments

Comments
 (0)