For AI agents: a documentation index is available at the root level at /llms.txt and /llms-full.txt. Append /llms.txt to any URL for a page-level index, or .md for the markdown version of any page.
Copy to LLMGithubGo to App
DocumentationIntegrationsAgent OptimizationSelf-hosting OpikSDK & API referenceOpik University
DocumentationIntegrationsAgent OptimizationSelf-hosting OpikSDK & API referenceOpik University
    • Overview
  • Python SDK
    • Reference
    • REST API Client
  • Typescript SDK
    • Overview
    • Opik TS
    • Prompts
    • Opik Query Language (OQL)
  • Rest API
    • Overview
LogoLogo
Copy to LLMGithubGo to App
On this page
  • Integrations
  • Installation
  • Option 1: Using the Opik TS (Recommended)
  • Option 2: Manual Installation
  • Opik Configuration
  • Usage
Typescript SDK

Opik TypeScript SDK

Was this page helpful?
Previous

Opik TS - Interactive Setup Tool

Next
Built with

The Opik TypeScript SDK provides a powerful and easy-to-use interface for tracing, monitoring, and debugging your JavaScript and TypeScript applications. It offers comprehensive observability for LLM applications, agent workflows, and AI-powered systems.

Integrations

Opik provides seamless integrations with popular JavaScript/TypeScript frameworks and libraries:

Frameworks:

  • Agno - Trace and monitor your Agno AI agent applications
  • BeeAI - Trace and monitor your BeeAI agent applications
  • LangChain - Trace and monitor your LangChain applications, including chains, agents, tools, and retrievers
  • Mastra - Trace and monitor your Mastra AI applications
  • Vercel AI SDK - Integrate Opik with Vercel AI SDK for monitoring AI-powered applications

Model Providers:

  • Cloudflare Workers AI - Trace and monitor your Cloudflare Workers AI applications
  • Gemini - Trace and monitor your applications using the Google Generative AI Node.js SDK
  • OpenAI - Trace and monitor your applications using the official OpenAI Node.js SDK

For a complete list of TypeScript/JavaScript integrations and other language integrations, see the Integrations Overview.

Installation

Option 1: Using the Opik TS (Recommended)

The fastest way to get started is using the Opik TS, an interactive CLI tool that sets up Opik automatically in your project:

$npx opik-ts configure

The CLI will:

  • Detect your project setup
  • Install Opik SDK and integration packages
  • Configure environment variables
  • Set up Opik client for your LLM integrations

Option 2: Manual Installation

You can also install the opik package manually using your favorite package manager:

$npm install opik

Opik Configuration

You can configure the Opik client using environment variables.

$export OPIK_API_KEY="your-api-key"
$
$# If running on Opik Cloud
$export OPIK_URL_OVERRIDE="https://www.comet.com/opik/api"
$
$# If running locally
$export OPIK_URL_OVERRIDE="http://localhost:5173/api"
$
$export OPIK_PROJECT_NAME="your-project-name"
$export OPIK_WORKSPACE="your-workspace-name"

Or you can pass the configuration to the Opik client constructor.

1import { Opik } from "opik";
2
3const client = new Opik({
4 apiKey: "<your-api-key>",
5 apiUrl: "https://www.comet.com/opik/api",
6 projectName: "<your-project-name>",
7 workspaceName: "<your-workspace-name>",
8});

Usage

You can find the full Typescript reference documentation here.

1import { Opik } from "opik";
2
3// Create a new Opik client with your configuration
4const client = new Opik();
5
6// Log 10 traces
7for (let i = 0; i < 10; i++) {
8 const someTrace = client.trace({
9 name: `Trace ${i}`,
10 input: {
11 prompt: `Hello, world! ${i}`,
12 },
13 output: {
14 response: `Hello, world! ${i}`,
15 },
16 });
17
18 // For each trace, log 10 spans
19 for (let j = 0; j < 10; j++) {
20 const someSpan = someTrace.span({
21 name: `Span ${i}-${j}`,
22 type: "llm",
23 input: {
24 prompt: `Hello, world! ${i}:${j}`,
25 },
26 output: {
27 response: `Hello, world! ${i}:${j}`,
28 },
29 });
30
31 // Some LLM work
32 await new Promise((resolve) => setTimeout(resolve, 100));
33
34 // Mark the span as ended
35 someSpan.end();
36 }
37
38 // Mark the trace as ended
39 someTrace.end();
40}
41
42// Flush the client to send all traces and spans
43await client.flush();