Skip to main content

Quickstart (Node.js)

Prerequisites

  • Node.js 18+ (Node 20 recommended)
  • A package manager (pnpm, npm, or yarn)
  • An OpenAI API key if you want to follow the adapter steps

1. Install the core packages

pnpm add @accordkit/tracer @accordkit/provider-openai openai

The tracer is framework-agnostic. You can drop it into an Express API, a background worker, or any environment that runs Node.

2. Emit traces locally with the file sink

examples/basic.ts
import { FileSink, Tracer } from '@accordkit/tracer';

const tracer = new Tracer({
sink: new FileSink({ filePath: './traces.jsonl' }),
});

await tracer.message({
role: 'user',
content: 'Hello from AccordKit!',
});

console.log('Trace written to traces.jsonl');

Run the script and you will see newline-delimited JSON (JSONL) entries with span metadata and payloads. This is perfect for local debugging and for piping into the Viewer.

3. Forward events over HTTP

Switch to the HTTP sink when you want to deliver traces to a service or your own ingest endpoint.

examples/http.ts
import { HttpSink, Tracer } from '@accordkit/tracer';

const tracer = new Tracer({
sink: new HttpSink({
endpoint: 'https://example.com/accordkit/ingest',
headers: { 'x-api-key': process.env.ACCORDKIT_API_KEY ?? '' },
}),
});

The HTTP sink batches JSONL payloads, retries transient failures, and exposes flush() / close() for clean shutdowns. Use resolveIngestEndpoint if you adopt AccordKit’s default endpoint layout.

4. Wrap the OpenAI SDK

@accordkit/provider-openai gives you a drop-in instrumentation layer for the official OpenAI client.

examples/openai.ts
import OpenAI from 'openai';
import { Tracer, FileSink } from '@accordkit/tracer';
import { withOpenAI } from '@accordkit/provider-openai';

const tracer = new Tracer({ sink: new FileSink() });
const client = withOpenAI(
new OpenAI({ apiKey: process.env.OPENAI_API_KEY }),
tracer,
);

const completion = await client.chat.completions.create({
model: 'gpt-4o',
messages: [
{ role: 'system', content: 'You are AccordKit.' },
{ role: 'user', content: 'Say hi!' },
],
});

console.log(completion.choices[0]?.message);

Every request/response is captured as a trace with token usage, timing information, and error metadata.

5. Explore traces with the Viewer

Install the Viewer locally or point it at the generated JSONL file:

pnpm add --global @accordkit/viewer
accordkit-viewer --input ./traces.jsonl

You will get a searchable UI with span timelines, streaming deltas, and prompt/response diffs.

Next steps

  • Learn more about the event model the tracer emits.
  • Review available sinks to decide how to route data in each environment.
  • Dive deeper into the OpenAI adapter for streaming and advanced options.