Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.inference.net/llms.txt

Use this file to discover all available pages before exploring further.

If your application already uses Langfuse, point the Langfuse SDK at Catalyst to stream traces into the Catalyst Traces and Agents dashboards. Catalyst accepts the Langfuse ingestion and OTEL endpoints and converts traces, generations, spans, usage, costs, inputs, outputs, metadata, users, sessions, and tags into Catalyst spans.

Configure Langfuse

Use your Catalyst API key as the Langfuse secret key. The public key is only present for Langfuse SDK compatibility; use pk-catalyst.
export LANGFUSE_HOST="https://telemetry.inference.net"
export LANGFUSE_PUBLIC_KEY="pk-catalyst"
export LANGFUSE_SECRET_KEY="<your-catalyst-api-key>"
The Catalyst API key must have write access to the project that should receive the traces.

Python

Python
from langfuse import Langfuse, observe, get_client

langfuse = Langfuse(
    public_key="pk-catalyst",
    secret_key="<your-catalyst-api-key>",
    base_url="https://telemetry.inference.net",
)

@observe(as_type="generation", name="answer-question")
def answer_question(question: str) -> str:
    client = get_client()
    client.update_current_generation(
        model="gpt-4o-mini",
        usage_details={"input": 12, "output": 8, "total": 20},
    )
    return f"Answer: {question}"

print(answer_question("What is Catalyst?"))
langfuse.flush()
langfuse.shutdown()

TypeScript

TypeScript
import { observe, getClient } from "@langfuse/tracing";

process.env.LANGFUSE_HOST = "https://telemetry.inference.net";
process.env.LANGFUSE_PUBLIC_KEY = "pk-catalyst";
process.env.LANGFUSE_SECRET_KEY = "<your-catalyst-api-key>";

const answerQuestion = observe(
  async (question: string) => {
    const client = getClient();
    client.updateCurrentGeneration({
      model: "gpt-4o-mini",
      usageDetails: { input: 12, output: 8, total: 20 },
    });
    return `Answer: ${question}`;
  },
  { name: "answer-question", asType: "generation" },
);

console.log(await answerQuestion("What is Catalyst?"));
await getClient().flushAsync();
Langfuse’s OpenTelemetry-based SDKs are also supported with the same host, public key, and secret key settings above. If you are not using Langfuse and are configuring a generic OpenTelemetry exporter, use Catalyst’s standard OTLP endpoint instead.

What Maps Into Catalyst

Langfuse fieldCatalyst field
Trace IDStable Catalyst trace ID derived from the Langfuse trace ID
Observation IDStable Catalyst span ID derived from the Langfuse observation ID
Trace nameagent.name, langfuse.trace.name
User and sessionuser.id, session.id
Generation modelllm.model_name, llm.provider when inferable
Usage and costPrompt/completion/total token columns and cost columns
Input and outputSpan input/output and LLM message columns
Metadata and tagsPreserved under langfuse.* and halo.source.* attributes
Errors and warningsSpan status and status message

View and Analyze

Once traces arrive, open the Catalyst dashboard and use the Traces tab to inspect individual trace trees. If your Langfuse trace names identify an agent or workflow, the Agents dashboard can group those runs and run Halo analysis over them. For the best Halo reports, keep trace names stable per agent or workflow and set userId / sessionId when available.