ingest: kafka: broker: kafka:9092 brokerAddressFamily: v4 socketKeepAliveEnable: true topicMetadataRefreshInterval: 10s aggregation: clickhouse: address: clickhouse:9000 sink: minCommitCount: 1 namespaceRefetch: 1s namespaceRefetchTimeout: 1s kafka: brokers: kafka:9092 brokerAddressFamily: v4 socketKeepAliveEnable: true topicMetadataRefreshInterval: 10s dedupe: enabled: true driver: redis config: address: redis:6379 database: 0 expiration: 768h # 32d postgres: url: postgres://postgres:postgres@postgres:5432/postgres?sslmode=disable autoMigrate: migration # Runs migrations as part of the service startup, valid values are: ent, migration, false credits: enabled: true enableCreditThenInvoice: true meters: # Sample meter to count API requests - slug: api_requests_total # Unique identifier for the meter description: API Requests eventType: request # Filter events by type aggregation: COUNT # Aggregation method: COUNT, SUM, etc. groupBy: method: $.method # HTTP Method: GET, POST, etc. route: $.route # Route: /products/:product_id # Sample meter to sum API request duration - slug: api_requests_duration description: API Request Duration eventType: request aggregation: SUM valueProperty: $.duration_ms # JSONPath to parse usage value groupBy: method: $.method route: $.route # Sample meter to count LLM Token Usage - slug: tokens_total description: AI Token Usage eventType: prompt # Filter events by type aggregation: SUM valueProperty: $.tokens # JSONPath to parse usage value groupBy: model: $.model # AI model used: gpt4-turbo, etc. type: $.type # Prompt type: input, output, system portal: enabled: true tokenSecret: this-isnt-secure svix: # This is just a random JWT based on docker-compose's JWT_SECRET, so it's not sensitive apiKey: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE3MjI5NzYyNzMsImV4cCI6MjAzODMzNjI3MywibmJmIjoxNzIyOTc2MjczLCJpc3MiOiJzdml4LXNlcnZlciIsInN1YiI6Im9yZ18yM3JiOFlkR3FNVDBxSXpwZ0d3ZFhmSGlyTXUifQ.B0OVUl3w9m7nKkSjIpPrxbfXL9IuVimy8LXcdIc3q7k serverURL: http://svix:8071 debug: false