Claude-code-plugins-plus langfuse-install-auth
install
source · Clone the upstream repo
git clone https://github.com/jeremylongshore/claude-code-plugins-plus-skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/jeremylongshore/claude-code-plugins-plus-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/plugins/saas-packs/langfuse-pack/skills/langfuse-install-auth" ~/.claude/skills/jeremylongshore-claude-code-plugins-plus-langfuse-install-auth && rm -rf "$T"
manifest:
plugins/saas-packs/langfuse-pack/skills/langfuse-install-auth/SKILL.mdsource content
Langfuse Install & Auth
Overview
Install the Langfuse SDK and configure authentication for LLM observability. Covers both the legacy
langfuse package (v3) and the modern modular SDK (v4+/v5) built on OpenTelemetry.
Prerequisites
- Node.js 18+ or Python 3.9+
- Package manager (npm, pnpm, or pip)
- Langfuse account (cloud at https://cloud.langfuse.com or self-hosted)
- Public Key (
) and Secret Key (pk-lf-...
) from project settingssk-lf-...
Instructions
Step 1: Install SDK
TypeScript/JavaScript (v4+ modular SDK -- recommended):
set -euo pipefail # Core client for prompt management, datasets, scores npm install @langfuse/client # Tracing (observe, startActiveObservation) npm install @langfuse/tracing @langfuse/otel @opentelemetry/sdk-node # OpenAI integration (drop-in wrapper) npm install @langfuse/openai # LangChain integration npm install @langfuse/langchain
TypeScript/JavaScript (v3 legacy -- single package):
npm install langfuse
Python:
pip install langfuse
Step 2: Get API Keys
- Open Langfuse dashboard (https://cloud.langfuse.com or your self-hosted URL)
- Go to Settings > API Keys
- Click Create new API key pair
- Copy both keys:
- Public Key:
(identifies your project)pk-lf-... - Secret Key:
(grants write access -- keep secret)sk-lf-...
- Public Key:
- Note the host URL (cloud default:
)https://cloud.langfuse.com
Step 3: Configure Environment Variables
# Set environment variables export LANGFUSE_PUBLIC_KEY="pk-lf-..." export LANGFUSE_SECRET_KEY="sk-lf-..." export LANGFUSE_BASE_URL="https://cloud.langfuse.com" # Or create .env file cat >> .env << 'EOF' LANGFUSE_PUBLIC_KEY=pk-lf-your-public-key LANGFUSE_SECRET_KEY=sk-lf-your-secret-key LANGFUSE_BASE_URL=https://cloud.langfuse.com EOF
Note: v4+ uses
. Legacy v3 usesLANGFUSE_BASE_URLorLANGFUSE_HOST.LANGFUSE_BASEURL
Step 4: Initialize and Verify (v4+ Modular SDK)
// src/lib/langfuse.ts import { LangfuseClient } from "@langfuse/client"; import { startActiveObservation } from "@langfuse/tracing"; import { LangfuseSpanProcessor } from "@langfuse/otel"; import { NodeSDK } from "@opentelemetry/sdk-node"; // 1. Register the OpenTelemetry span processor (once at app startup) const sdk = new NodeSDK({ spanProcessors: [new LangfuseSpanProcessor()], }); sdk.start(); // 2. Create the Langfuse client for prompt/dataset/score operations export const langfuse = new LangfuseClient({ publicKey: process.env.LANGFUSE_PUBLIC_KEY, secretKey: process.env.LANGFUSE_SECRET_KEY, baseUrl: process.env.LANGFUSE_BASE_URL, }); // 3. Verify connection async function verify() { await startActiveObservation("connection-test", async (span) => { span.update({ input: { test: true } }); span.update({ output: { status: "connected" } }); }); console.log("Langfuse connection verified. Check dashboard for trace."); } verify();
Step 5: Initialize and Verify (v3 Legacy SDK)
import { Langfuse } from "langfuse"; const langfuse = new Langfuse({ publicKey: process.env.LANGFUSE_PUBLIC_KEY, secretKey: process.env.LANGFUSE_SECRET_KEY, baseUrl: process.env.LANGFUSE_HOST, }); // Verify with a test trace const trace = langfuse.trace({ name: "connection-test", metadata: { test: true }, }); await langfuse.flushAsync(); console.log("Connected. Trace URL:", trace.getTraceUrl()); // Clean shutdown process.on("beforeExit", async () => { await langfuse.shutdownAsync(); });
Step 6: Python Verification
from langfuse import Langfuse import os langfuse = Langfuse( public_key=os.environ["LANGFUSE_PUBLIC_KEY"], secret_key=os.environ["LANGFUSE_SECRET_KEY"], host=os.environ.get("LANGFUSE_HOST", "https://cloud.langfuse.com"), ) # Test trace trace = langfuse.trace(name="connection-test", metadata={"test": True}) langfuse.flush() print(f"Connected. Trace: {trace.get_trace_url()}")
SDK Version Comparison
| Feature | v3 () | v4+ () |
|---|---|---|
| Package | Single | Modular: , , |
| Base URL env var | | |
| Tracing | | / |
| Client class | | |
| OpenAI wrapper | from | from |
| Foundation | Custom | OpenTelemetry |
Error Handling
| Error | Cause | Solution |
|---|---|---|
| Invalid or expired API key | Re-check keys in Langfuse dashboard Settings > API Keys |
| Wrong host URL or server down | Verify / |
| Env vars not loaded | Ensure imported at entry point |
| Package not installed | Run or again |
| Using pk- key as secret | Keys swapped | Public key starts , secret starts |
Resources
Next Steps
After auth is working, proceed to
langfuse-hello-world for your first traced LLM call.