Environment Variables Reference
Note
Complete reference for HoneyHive SDK environment variables
Configure the SDK behavior through environment variables for different deployment scenarios.
The HoneyHive SDK supports comprehensive configuration through environment variables, allowing for flexible deployment across different environments without code changes.
Note
Runtime Configuration Support (v0.1.0rc2+)
Environment variables are now properly picked up when set at runtime, after SDK import. This enables dynamic configuration changes without restarting the application.
Core Configuration Variables
Authentication
Variable |
Default |
Description |
|---|---|---|
|
Required |
HoneyHive API key for authentication. Format: |
|
Optional |
Additional API secret for enhanced security (enterprise only) |
Examples:
# Basic authentication
export HH_API_KEY="hh_1234567890abcdef"
# Enterprise authentication with secret
export HH_API_KEY="hh_enterprise_key"
export HH_API_SECRET="secret_key_for_enhanced_security"
Project Configuration
Variable |
Default |
Description |
|---|---|---|
|
Required |
Project name for HoneyHive operations. Must match your HoneyHive project. |
|
|
Source environment identifier (e.g., production, staging) |
|
Auto-generated |
Default session name for trace grouping |
Examples:
# Production configuration
export HH_SOURCE="production"
export HH_SESSION_NAME="prod-session-$(date +%Y%m%d)"
# Development configuration
export HH_SOURCE="development"
export HH_SESSION_NAME="dev-local"
Network Configuration
Variable |
Default |
Description |
|---|---|---|
|
|
HoneyHive API endpoint URL |
|
None |
Alias for |
|
|
Request timeout in seconds |
|
|
Maximum number of retry attempts for failed requests |
Examples:
# Custom deployment
export HH_BASE_URL="https://honeyhive.mycompany.com"
export HH_TIMEOUT="60.0"
export HH_MAX_RETRIES="5"
# Development with local server
export HH_BASE_URL="http://localhost:8080"
export HH_TIMEOUT="10.0"
Testing and Development
Variable |
Default |
Description |
|---|---|---|
|
|
Enable test mode (no data sent to HoneyHive) |
|
|
Enable debug logging and verbose output |
|
|
Logging level (DEBUG, INFO, WARNING, ERROR, CRITICAL) |
Examples:
# Test environment
export HH_TEST_MODE="true"
export HH_DEBUG="true"
export HH_LOG_LEVEL="DEBUG"
# Production environment
export HH_TEST_MODE="false"
export HH_DEBUG="false"
export HH_LOG_LEVEL="WARNING"
Performance Configuration
Batching and Buffering
Variable |
Default |
Description |
|---|---|---|
|
|
Number of spans to batch before sending |
|
|
Automatic flush interval in seconds |
|
|
Maximum number of spans in memory queue |
Examples:
# High-throughput configuration
export HH_BATCH_SIZE="500"
export HH_FLUSH_INTERVAL="10.0"
export HH_MAX_QUEUE_SIZE="5000"
# Low-latency configuration
export HH_BATCH_SIZE="10"
export HH_FLUSH_INTERVAL="1.0"
export HH_MAX_QUEUE_SIZE="100"
Connection Pooling
Variable |
Default |
Description |
|---|---|---|
|
|
Maximum concurrent HTTP connections |
|
|
Maximum persistent connections |
|
|
Connection keepalive timeout in seconds |
Examples:
# High-concurrency configuration
export HH_MAX_CONNECTIONS="200"
export HH_MAX_KEEPALIVE_CONNECTIONS="50"
export HH_KEEPALIVE_EXPIRY="60.0"
Tracing Configuration
Instrumentation Control
Variable |
Default |
Description |
|---|---|---|
|
|
Disable automatic HTTP request tracing |
|
|
Default setting for capturing function inputs |
|
|
Default setting for capturing function outputs |
|
|
Whether to capture exception details in traces |
Backwards Compatibility Configuration
Variable |
Default |
Description |
|---|---|---|
|
|
Enable/disable git metadata collection for sessions |
|
|
Enable verbose debug logging throughout tracer initialization |
|
|
Use SimpleSpanProcessor instead of BatchSpanProcessor for immediate export |
Examples:
# Security-conscious configuration
export HH_CAPTURE_INPUTS="false"
export HH_CAPTURE_OUTPUTS="false"
export HH_CAPTURE_EXCEPTIONS="true"
# Full observability configuration
export HH_CAPTURE_INPUTS="true"
export HH_CAPTURE_OUTPUTS="true"
export HH_CAPTURE_EXCEPTIONS="true"
export HH_DISABLE_HTTP_TRACING="false"
# Backwards compatibility configuration
export HONEYHIVE_TELEMETRY="false" # Disable git metadata collection
export HH_VERBOSE="true" # Enable debug logging
export HH_DISABLE_BATCH="true" # Use immediate export for debugging
Sampling Configuration
Variable |
Default |
Description |
|---|---|---|
|
|
Global sampling rate (0.0 to 1.0) |
|
|
Sampling rate for error traces |
|
|
Threshold in milliseconds for slow trace sampling |
Examples:
# Production sampling (10% of normal traces, all errors)
export HH_SAMPLING_RATE="0.1"
export HH_ERROR_SAMPLING_RATE="1.0"
export HH_SLOW_THRESHOLD="500.0"
# Development (all traces)
export HH_SAMPLING_RATE="1.0"
export HH_ERROR_SAMPLING_RATE="1.0"
Security Configuration
SSL/TLS Settings
Variable |
Default |
Description |
|---|---|---|
|
|
Verify SSL certificates for HTTPS requests |
|
None |
Path to custom SSL certificate file |
|
None |
Path to SSL private key file (client certificates) |
Examples:
# Enterprise SSL configuration
export HH_VERIFY_SSL="true"
export HH_SSL_CERT_PATH="/etc/ssl/certs/honeyhive.pem"
export HH_SSL_KEY_PATH="/etc/ssl/private/honeyhive.key"
# Development with self-signed certificates
export HH_VERIFY_SSL="false"
Proxy Configuration
Variable |
Default |
Description |
|---|---|---|
|
None |
HTTP/HTTPS proxy URL |
|
None |
Proxy authentication username |
|
None |
Proxy authentication password |
Examples:
# Corporate proxy
export HH_PROXY_URL="http://proxy.company.com:8080"
export HH_PROXY_USERNAME="proxy_user"
export HH_PROXY_PASSWORD="proxy_password"
Data Privacy
Variable |
Default |
Description |
|---|---|---|
|
|
Automatically sanitize sensitive data in inputs |
|
|
Automatically sanitize sensitive data in outputs |
|
Default patterns |
Custom regex patterns for PII detection |
Examples:
# Privacy-focused configuration
export HH_SANITIZE_INPUTS="true"
export HH_SANITIZE_OUTPUTS="true"
export HH_PII_PATTERNS="email,phone,ssn,credit_card"
Evaluation Configuration
Evaluator Settings
Variable |
Default |
Description |
|---|---|---|
|
|
Enable automatic evaluation |
|
|
Timeout for evaluation requests in seconds |
|
|
Number of retries for failed evaluations |
Examples:
# Evaluation configuration
export HH_ENABLE_EVALUATION="true"
export HH_EVALUATION_TIMEOUT="60.0"
export HH_EVALUATION_RETRIES="3"
Provider-Specific Variables
OpenAI Configuration
Variable |
Default |
Description |
|---|---|---|
|
None |
OpenAI API key (used by OpenAI instrumentor) |
|
OpenAI default |
Custom OpenAI API endpoint |
|
None |
OpenAI organization ID |
Examples:
# OpenAI configuration
export OPENAI_API_KEY="sk-..."
export OPENAI_ORGANIZATION="org-..."
Anthropic Configuration
Variable |
Default |
Description |
|---|---|---|
|
None |
Anthropic API key (used by Anthropic instrumentor) |
|
Anthropic default |
Custom Anthropic API endpoint |
Examples:
# Anthropic configuration
export ANTHROPIC_API_KEY="sk-ant-..."
Environment-Specific Configurations
Development Environment
# .env.development
HH_API_KEY="hh_dev_key_here"
HH_SOURCE="development"
HH_TEST_MODE="false"
HH_DEBUG="true"
HH_LOG_LEVEL="DEBUG"
HH_SAMPLING_RATE="1.0"
HH_BATCH_SIZE="10"
HH_FLUSH_INTERVAL="1.0"
HH_CAPTURE_INPUTS="true"
HH_CAPTURE_OUTPUTS="true"
Staging Environment
# .env.staging
HH_API_KEY="hh_staging_key_here"
HH_SOURCE="staging"
HH_TEST_MODE="false"
HH_DEBUG="false"
HH_LOG_LEVEL="INFO"
HH_SAMPLING_RATE="0.5"
HH_BATCH_SIZE="50"
HH_FLUSH_INTERVAL="3.0"
HH_TIMEOUT="45.0"
Production Environment
# .env.production
HH_API_KEY="hh_prod_key_here"
HH_SOURCE="production"
HH_TEST_MODE="false"
HH_DEBUG="false"
HH_LOG_LEVEL="WARNING"
HH_SAMPLING_RATE="0.1"
HH_ERROR_SAMPLING_RATE="1.0"
HH_BATCH_SIZE="200"
HH_FLUSH_INTERVAL="10.0"
HH_MAX_CONNECTIONS="100"
HH_TIMEOUT="60.0"
HH_SANITIZE_INPUTS="true"
HH_VERIFY_SSL="true"
Container Deployment
Docker Configuration
# Dockerfile
FROM python:3.11-slim
# Install application
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . /app
WORKDIR /app
# Environment variables with defaults
ENV HH_SOURCE="container"
ENV HH_BATCH_SIZE="100"
ENV HH_FLUSH_INTERVAL="5.0"
ENV HH_LOG_LEVEL="INFO"
CMD ["python", "app.py"]
Docker Compose:
# docker-compose.yml
version: '3.8'
services:
app:
build: .
environment:
- HH_API_KEY=${HH_API_KEY}
- HH_SOURCE=docker-compose
- HH_DEBUG=false
- HH_BATCH_SIZE=150
- HH_TIMEOUT=45.0
env_file:
- .env.production
Kubernetes Configuration
# k8s-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: honeyhive-app
spec:
replicas: 3
selector:
matchLabels:
app: honeyhive-app
template:
metadata:
labels:
app: honeyhive-app
spec:
containers:
- name: app
image: myapp:latest
env:
- name: HH_API_KEY
valueFrom:
secretKeyRef:
name: honeyhive-secret
key: api-key
- name: HH_PROJECT
value: "k8s-production-app"
- name: HH_SOURCE
value: "kubernetes"
- name: HH_BATCH_SIZE
value: "200"
- name: HH_MAX_CONNECTIONS
value: "100"
- name: HH_LOG_LEVEL
value: "INFO"
apiVersion: v1
kind: Secret
metadata:
name: honeyhive-secret
type: Opaque
data:
api-key: <base64-encoded-api-key>
Configuration Validation
Environment Variable Validation
import os
from honeyhive.utils import validate_configuration
def validate_honeyhive_config():
"""Validate HoneyHive environment configuration."""
# Required variables
required_vars = ['HH_API_KEY']
missing_vars = [var for var in required_vars if not os.getenv(var)]
if missing_vars:
raise ValueError(f"Missing required environment variables: {missing_vars}")
# Validate API key format
api_key = os.getenv('HH_API_KEY')
if not api_key.startswith('hh_'):
raise ValueError("HH_API_KEY must start with 'hh_'")
# Validate numeric values
numeric_vars = {
'HH_TIMEOUT': (1.0, 300.0),
'HH_BATCH_SIZE': (1, 10000),
'HH_SAMPLING_RATE': (0.0, 1.0)
}
for var, (min_val, max_val) in numeric_vars.items():
if value_str := os.getenv(var):
try:
value = float(value_str)
if not min_val <= value <= max_val:
raise ValueError(f"{var} must be between {min_val} and {max_val}")
except ValueError:
raise ValueError(f"{var} must be a valid number")
# Validate boolean values
boolean_vars = ['HH_TEST_MODE', 'HH_DEBUG', 'HH_VERIFY_SSL']
for var in boolean_vars:
if value_str := os.getenv(var):
if value_str.lower() not in ['true', 'false']:
raise ValueError(f"{var} must be 'true' or 'false'")
print("✓ HoneyHive configuration is valid")
Configuration Loading Patterns
Hierarchical Configuration
import os
from typing import Dict, Any
class HoneyHiveConfig:
"""Hierarchical configuration with environment override."""
def __init__(self, config_file: str = None, env_prefix: str = "HH_"):
self.env_prefix = env_prefix
self.config = self._load_base_config()
if config_file:
self.config.update(self._load_file_config(config_file))
self.config.update(self._load_env_config())
def _load_base_config(self) -> Dict[str, Any]:
"""Load default configuration."""
return {
'api_key': None,
'project': 'default',
'source': 'unknown',
'test_mode': False,
'debug': False,
'timeout': 30.0,
'batch_size': 100,
'sampling_rate': 1.0
}
def _load_file_config(self, config_file: str) -> Dict[str, Any]:
"""Load configuration from file."""
import json
with open(config_file) as f:
return json.load(f)
def _load_env_config(self) -> Dict[str, Any]:
"""Load configuration from environment variables."""
config = {}
env_mapping = {
'HH_API_KEY': 'api_key',
'HH_PROJECT': 'project',
'HH_SOURCE': 'source',
'HH_TEST_MODE': 'test_mode',
'HH_DEBUG': 'debug',
'HH_TIMEOUT': 'timeout',
'HH_BATCH_SIZE': 'batch_size',
'HH_SAMPLING_RATE': 'sampling_rate'
}
for env_var, config_key in env_mapping.items():
if value := os.getenv(env_var):
# Type conversion
if config_key in ['test_mode', 'debug']:
config[config_key] = value.lower() == 'true'
elif config_key in ['timeout', 'sampling_rate']:
config[config_key] = float(value)
elif config_key in ['batch_size']:
config[config_key] = int(value)
else:
config[config_key] = value
return config
def get(self, key: str, default=None):
"""Get configuration value."""
return self.config.get(key, default)
def __getitem__(self, key: str):
"""Dictionary-style access."""
return self.config[key]
Configuration Factory
from honeyhive import HoneyHiveTracer
class ConfigurationFactory:
"""Factory for creating configured HoneyHive instances."""
@staticmethod
def create_from_environment() -> HoneyHiveTracer:
"""Create tracer from environment variables."""
return HoneyHiveTracer.init(
project=os.getenv('HH_PROJECT', 'default-project') # Or set HH_PROJECT environment variable
)
@staticmethod
def create_for_testing() -> HoneyHiveTracer:
"""Create tracer configured for testing."""
return HoneyHiveTracer.init(
api_key=os.getenv('HH_API_KEY', 'test_key'), # Or set HH_API_KEY environment variable
project=os.getenv('HH_PROJECT', 'test-project'), # Or set HH_PROJECT environment variable
source='test', # Or set HH_SOURCE environment variable
test_mode=True # Or set HH_TEST_MODE=true environment variable
)
@staticmethod
def create_for_production() -> HoneyHiveTracer:
"""Create production-optimized tracer."""
return HoneyHiveTracer.init(
api_key=os.getenv('HH_API_KEY'), # Or set HH_API_KEY environment variable
project=os.getenv('HH_PROJECT', 'production-project'), # Or set HH_PROJECT environment variable
source='production' # Or set HH_SOURCE environment variable
)
Troubleshooting Configuration
Common Issues
Issue: API Key Not Found
# Error: HoneyHive API key not found
# Solution: Set the environment variable
export HH_API_KEY="your_api_key_here"
Issue: Connection Timeout
# Error: Request timeout
# Solution: Increase timeout or check network
export HH_TIMEOUT="60.0"
export HH_MAX_RETRIES="5"
Issue: High Memory Usage
# Solution: Reduce batch size and queue size
export HH_BATCH_SIZE="50"
export HH_MAX_QUEUE_SIZE="500"
export HH_FLUSH_INTERVAL="2.0"
Issue: SSL Certificate Errors
# For development only - disable SSL verification
export HH_VERIFY_SSL="false"
# For production - use proper certificates
export HH_SSL_CERT_PATH="/path/to/cert.pem"
Configuration Debugging
import os
from honeyhive.utils import get_configuration_summary
def debug_configuration():
"""Debug current configuration."""
print("HoneyHive Configuration Debug:")
print("=" * 40)
# Core settings
print(f"API Key: {'✓ Set' if os.getenv('HH_API_KEY') else '✗ Missing'}")
print(f"Project: {os.getenv('HH_PROJECT', 'default')}")
print(f"Source: {os.getenv('HH_SOURCE', 'unknown')}")
print(f"Test Mode: {os.getenv('HH_TEST_MODE', 'false')}")
# Network settings
print(f"Base URL: {os.getenv('HH_BASE_URL', 'https://api.honeyhive.ai')}")
print(f"Timeout: {os.getenv('HH_TIMEOUT', '30.0')}s")
# Performance settings
print(f"Batch Size: {os.getenv('HH_BATCH_SIZE', '100')}")
print(f"Sampling Rate: {os.getenv('HH_SAMPLING_RATE', '1.0')}")
# Debug environment
all_hh_vars = {k: v for k, v in os.environ.items() if k.startswith('HH_')}
if all_hh_vars:
print("\nAll HH_ Environment Variables:")
for key, value in sorted(all_hh_vars.items()):
# Mask sensitive values
if 'key' in key.lower() or 'secret' in key.lower():
masked_value = value[:8] + "..." if len(value) > 8 else "***"
print(f" {key}={masked_value}")
else:
print(f" {key}={value}")
See Also
HoneyHiveTracer API Reference - HoneyHiveTracer configuration options
Advanced Configuration Guide - Advanced configuration patterns
Production Deployment Guide - Production deployment guide
How-to Guides - Configuration troubleshooting (see Troubleshooting section)