Early access is open. Free plan during early access. Start free
Logthread

Integration

Pipecat

Every call as a trace: turns, response latency, interruptions, and STT, LLM and TTS timing and tokens.

  • Category: Voice AI
  • How data is sent: Settings in your app
  • Status: Beta

How it works#

  1. Answer a few questions. They only fill in the setup steps. Nothing on this page connects to your servers: Logthread never reaches into your network.
  2. Add a few lines to your Pipecat app. The next page shows the settings and code with this connector's ingest key filled in. There is no agent to install.
  3. Data arrives. Everything is collected inside your environment. It is sent over outbound HTTPS (port 443) to ingest.logthread.com. Nothing is opened to the internet: no inbound ports, VPN or public access to your servers. The connection page shows what has arrived and turns Active with the first record.

What you answer#

QuestionAnswerNotes
Service nameTextThe name your agent shows under in Logthread. Default: pipecat.
EnvironmentTextDefault: production.

Setup#

These are the steps for the default answers. In the app, they follow your answers, and the connector's ingest key replaces YOUR_INGEST_KEY.

Step 1. Install the tracing extras. In the agent's environment.

pip install "pipecat-ai[tracing]" opentelemetry-exporter-otlp-proto-http

Step 2. Set the key. In the environment the agent runs in (a secret in your deployment, not in code). ENVIRONMENT names the deployment in the traces.

export LOGTHREAD_INGEST_KEY=YOUR_INGEST_KEY
export ENVIRONMENT=production

Step 3. Turn on tracing. Once, at start-up, then on each PipelineTask. Each call becomes a conversation trace with one span per turn and per STT, LLM and TTS call.

bot.py:

import os
from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter
from pipecat.utils.tracing.setup import setup_tracing

setup_tracing(
    service_name="pipecat",
    exporter=OTLPSpanExporter(
        endpoint="https://ingest.logthread.com/v1/traces",
        headers={"Authorization": f"Bearer {os.environ['LOGTHREAD_INGEST_KEY']}"},
    ),
)

# Where you build the pipeline task:
task = PipelineTask(
    pipeline,
    params=PipelineParams(enable_metrics=True),
    enable_tracing=True,
    enable_turn_tracking=True,
    conversation_id=session_id,  # your own id, so you can find the call later
)

Step 4. What the traces contain. Pipecat puts the transcript, the LLM input and output and the spoken text on its spans. They are stored like any other trace and kept for your retention. Leave tracing off on pipelines whose conversations must not leave your servers.

Check that it works#

The connection page under Integrations turns Active with the first trace. Open Traces and filter by your service.

Then add#

Each is one click on the connection page and opens with your data, so you can check it before saving.

  • Dashboard: Pipecat: Voice agent turns: response latency, interruptions, time to first byte of STT, LLM and TTS by model, tokens, and errors.

Set it up under Integrations in the app, or from an AI agent with MCP (add_integration). All integrations: Integrations guide. Next: find what it sends in Explore and live tail.