Files
sim/apps/sim/telemetry.config.ts
Waleed 41c068c023 improvement(lib): refactored lib/ to be more aligned with queries and api directory (#2160)
* fix(lib): consolidate into core dir in lib/

* refactored lib/
2025-12-02 14:17:41 -08:00

119 lines
3.3 KiB
TypeScript

/**
* Sim OpenTelemetry Configuration
*
* PRIVACY NOTICE:
* - Telemetry is enabled by default to help us improve the product
* - You can disable telemetry via:
* 1. Settings UI > Privacy tab > Toggle off "Allow anonymous telemetry"
* 2. Setting NEXT_TELEMETRY_DISABLED=1 environment variable
*
* This file allows you to configure OpenTelemetry collection for your
* Sim instance. If you've forked the repository, you can modify
* this file to send telemetry to your own collector.
*
* We only collect anonymous usage data to improve the product:
* - Feature usage statistics
* - Error rates (always captured)
* - Performance metrics (sampled at 10%)
* - AI/LLM operation traces (always captured for workflows)
*
* We NEVER collect:
* - Personal information
* - Workflow content or outputs
* - API keys or tokens
* - IP addresses or geolocation data
*/
import { env } from './lib/core/config/env'
const config = {
/**
* OTLP Endpoint URL where telemetry data is sent
* Change this if you want to send telemetry to your own collector
* Supports any OTLP-compatible backend (Jaeger, Grafana Tempo, etc.)
*/
endpoint: env.TELEMETRY_ENDPOINT || 'https://telemetry.simstudio.ai/v1/traces',
/**
* Service name used to identify this instance
* You can change this for your fork
*/
serviceName: 'sim-studio',
/**
* Version of the service, defaults to the app version
*/
serviceVersion: '0.1.0',
/**
* Batch settings for OpenTelemetry BatchSpanProcessor
* Optimized for production use with minimal overhead
*
* - maxQueueSize: Max number of spans to buffer (increased from 100 to 2048)
* - maxExportBatchSize: Max number of spans per batch (increased from 10 to 512)
* - scheduledDelayMillis: Delay between batches (5 seconds)
* - exportTimeoutMillis: Timeout for exporting data (30 seconds)
*/
batchSettings: {
maxQueueSize: 2048,
maxExportBatchSize: 512,
scheduledDelayMillis: 5000,
exportTimeoutMillis: 30000,
},
/**
* Sampling configuration
* - Errors: Always sampled (100%)
* - AI/LLM operations: Always sampled (100%)
* - Other operations: Sampled at 10%
*/
sampling: {
defaultRate: 0.1, // 10% sampling for regular operations
alwaysSampleErrors: true,
alwaysSampleAI: true,
},
/**
* Categories of events that can be collected
* This is used for validation when events are sent
*/
allowedCategories: [
'page_view',
'feature_usage',
'performance',
'error',
'workflow',
'consent',
'batch', // Added for batched events
],
/**
* Client-side instrumentation settings
* Set enabled: false to disable client-side telemetry entirely
*
* Client-side telemetry now uses:
* - Event batching (send every 10s or 50 events)
* - Only critical Web Vitals (LCP, FID, CLS)
* - Unhandled errors only
*/
clientSide: {
enabled: true,
batchIntervalMs: 10000, // 10 seconds
maxBatchSize: 50,
},
/**
* Server-side instrumentation settings
* Set enabled: false to disable server-side telemetry entirely
*
* Server-side telemetry uses:
* - OpenTelemetry SDK with BatchSpanProcessor
* - Intelligent sampling (errors and AI ops always captured)
* - Semantic conventions for AI/LLM operations
*/
serverSide: {
enabled: true,
},
}
export default config