Packages

Pick the right SDK for your environment, including JavaScript, Go, and Python.

Node.js ·Express ·Next.js API Routes ·NestJS

@foam-ai/node-opentelemetry

Server-side tracing, error capture, and OpenTelemetry instrumentation for Node.js.

$ npm install @foam-ai/node-opentelemetry
import { init, captureException } from '@foam-ai/node-opentelemetry'; init({ apiKey: process.env.FOAM_API_KEY, serviceName: 'my-api', isProduction: process.env.NODE_ENV === 'production', });
React ·Next.js Client

@foam-ai/browser

Client-side error capture and browser monitoring via OpenTelemetry.

$ npm install @foam-ai/browser
import { init, captureException } from '@foam-ai/browser'; init({ apiKey: process.env.FOAM_API_KEY, serviceName: 'my-web-app', isProduction: process.env.NODE_ENV === 'production', tracePropagationTargets: [/api\.example\.com/], });
Vercel ·Next.js

@foam-ai/vercel-otel

OTLP exporters for traces, metrics, and logs — designed for Vercel's instrumentation hooks.

$ npm install @foam-ai/vercel-otel
import { registerOTel } from '@vercel/otel'; import { foamOtelConfig } from '@foam-ai/vercel-otel'; registerOTel({ serviceName: 'my-nextjs-app', ...foamOtelConfig({ apiKey: process.env.FOAM_API_KEY, serviceName: 'my-nextjs-app', isProduction: process.env.NODE_ENV === 'production', }), });
OpenTelemetry ·Errors ·Node.js

@foam-ai/opentelemetry

Record exceptions as OpenTelemetry span events — use standalone or bridge from your error-reporting SDK’s before-send hook.

$ npm install @foam-ai/opentelemetry
import { recordException } from '@foam-ai/opentelemetry'; // Standalone: capture any error as an OTel span event try { await riskyOperation(); } catch (err) { recordException(err); throw err; } // Example: bridge from an error-reporting SDK's before-send hook // (pseudo-code — use your vendor's init API) errorReportingSdk.init({ dsn: '...', beforeSend: (event, hint) => { recordException(hint.originalException); return event; }, });
Go ·OpenTelemetry

github.com/foam-ai/foam-go-opentelemetry

Go SDK for OpenTelemetry traces, errors, and OTLP export to Foam.

$ go get github.com/foam-ai/foam-go-opentelemetry
package main import ( "os" foam "github.com/foam-ai/foam-go-opentelemetry" ) func main() { shutdown := foam.Init(foam.Config{ APIKey: os.Getenv("FOAM_API_KEY"), ServiceName: "my-go-service", Production: os.Getenv("ENV") == "production", }) defer shutdown() }
Python ·OpenTelemetry

foam-opentelemetry

Python SDK for OpenTelemetry setup and exception capture.

$ pip install foam-opentelemetry
import os from foam_opentelemetry import capture_exception, init init( api_key=os.environ["FOAM_API_KEY"], service_name="my-python-service", is_production=os.getenv("ENV") == "production", ) try: risky_operation() except Exception as err: capture_exception(err) raise
Get Started