# Observability

> Trace every LLM call with Langfuse and watch the whole system with Grafana and OpenTelemetry — two optional stacks next to the built-in dashboard.

Two optional stacks show what PentAGI is doing: Langfuse for model calls, and Grafana with OpenTelemetry for the rest of the system.

PentAGI's own **Dashboard** already charts [flows](https://pentagi.com/docs/glossary/#flow), [tool calls](https://pentagi.com/docs/glossary/#tool-call), tokens and cost over time; the stacks below add full traces and system metrics.

![The built-in dashboard](https://pentagi.com/images/product/dashboard.webp)

## [Langfuse](https://pentagi.com/docs/configuration/observability/#langfuse)

Langfuse records prompts, completions, tokens and costs per [agent](https://pentagi.com/docs/glossary/#agent).

```bash
LANGFUSE_BASE_URL=http://langfuse-web:3000
LANGFUSE_PROJECT_ID=same_as_LANGFUSE_INIT_PROJECT_ID
LANGFUSE_PUBLIC_KEY=same_as_LANGFUSE_INIT_PROJECT_PUBLIC_KEY
LANGFUSE_SECRET_KEY=same_as_LANGFUSE_INIT_PROJECT_SECRET_KEY
```

Set the Langfuse credentials in `.env` (`LANGFUSE_POSTGRES_*`, `LANGFUSE_CLICKHOUSE_*`, `LANGFUSE_REDIS_AUTH`, `LANGFUSE_SALT`, `LANGFUSE_ENCRYPTION_KEY`, `LANGFUSE_NEXTAUTH_SECRET`, `LANGFUSE_INIT_USER_*` and the project keys), then start the stack:

```bash
curl -O https://raw.githubusercontent.com/vxcontrol/pentagi/main/docker-compose-langfuse.yml
docker compose -f docker-compose.yml -f docker-compose-langfuse.yml up -d
```

The Langfuse UI is available at `http://localhost:4000`.

## [Grafana and OpenTelemetry](https://pentagi.com/docs/configuration/observability/#grafana-and-opentelemetry)

```bash
OTEL_HOST=otelcol:8148
```

```bash
git clone --depth 1 https://github.com/vxcontrol/pentagi.git pentagi-src
cp -r pentagi-src/observability ./observability
rm -rf pentagi-src
curl -O https://raw.githubusercontent.com/vxcontrol/pentagi/main/docker-compose-observability.yml
docker compose -f docker-compose.yml -f docker-compose-observability.yml up -d
```

Grafana is available at `http://localhost:3000`, with metrics in VictoriaMetrics, traces in Jaeger and logs in Loki.

> [!NOTE]
> To send Langfuse telemetry into the same stack, set `LANGFUSE_OTEL_EXPORTER_OTLP_ENDPOINT=http://otelcol:4318`.

## [Everything together](https://pentagi.com/docs/configuration/observability/#everything-together)

```bash
git clone --depth 1 https://github.com/vxcontrol/pentagi.git pentagi-src
cp -r pentagi-src/examples/graphiti ./graphiti
cp -r pentagi-src/examples/neo4j ./neo4j
rm -rf pentagi-src
curl -O https://raw.githubusercontent.com/vxcontrol/pentagi/main/docker-compose-graphiti.yml
docker compose \
  -f docker-compose.yml \
  -f docker-compose-langfuse.yml \
  -f docker-compose-graphiti.yml \
  -f docker-compose-observability.yml \
  up -d
```