Back to Documentation
Configuration
Configure RANA for your environment. Set up providers, storage, security, and performance settings.
npm install @rana/core
Global Configuration
Configure RANA settings for your entire application
import { configure, getConfig } from '@rana/core';
// Configure RANA globally
configure({
// Default model for all operations
defaultModel: 'claude-sonnet-4-20250514',
// Default provider
defaultProvider: 'anthropic',
// Logging level
logLevel: 'info', // 'debug' | 'info' | 'warn' | 'error'
// Enable telemetry
telemetry: true,
// Request timeout (ms)
timeout: 30000,
// Retry configuration
retry: {
maxAttempts: 3,
backoff: 'exponential'
},
// Cache configuration
cache: {
enabled: true,
ttl: '1h',
storage: 'redis'
}
});
// Get current config
const config = getConfig();
console.log(config.defaultModel); // 'claude-sonnet-4-20250514'Provider Configuration
Set up API keys and provider settings
import { configureProviders } from '@rana/core';
configureProviders({
anthropic: {
apiKey: process.env.ANTHROPIC_API_KEY,
defaultModel: 'claude-sonnet-4-20250514',
maxTokens: 4096
},
openai: {
apiKey: process.env.OPENAI_API_KEY,
organization: process.env.OPENAI_ORG_ID,
defaultModel: 'gpt-4o'
},
google: {
apiKey: process.env.GOOGLE_API_KEY,
defaultModel: 'gemini-pro'
},
azure: {
apiKey: process.env.AZURE_OPENAI_KEY,
endpoint: process.env.AZURE_OPENAI_ENDPOINT,
deploymentName: 'gpt-4'
},
cohere: {
apiKey: process.env.COHERE_API_KEY
},
huggingface: {
apiKey: process.env.HF_API_KEY
}
});Environment Variables
Configure via environment variables
# .env file # Provider API Keys ANTHROPIC_API_KEY=sk-ant-... OPENAI_API_KEY=sk-... GOOGLE_API_KEY=AIza... COHERE_API_KEY=... HF_API_KEY=hf_... # Azure OpenAI AZURE_OPENAI_KEY=... AZURE_OPENAI_ENDPOINT=https://your-resource.openai.azure.com # Default Settings RANA_DEFAULT_MODEL=claude-sonnet-4-20250514 RANA_DEFAULT_PROVIDER=anthropic RANA_LOG_LEVEL=info RANA_TIMEOUT=30000 # Cache Settings RANA_CACHE_ENABLED=true RANA_CACHE_TTL=3600 RANA_CACHE_REDIS_URL=redis://localhost:6379 # Telemetry RANA_TELEMETRY=true RANA_OTLP_ENDPOINT=http://localhost:4318
Storage Configuration
Configure storage backends for various features
import { configureStorage } from '@rana/core';
configureStorage({
// Prompt storage
prompts: {
type: 'postgresql',
connectionString: process.env.DATABASE_URL
},
// Memory/conversation storage
memory: {
type: 'redis',
url: process.env.REDIS_URL,
prefix: 'rana:memory:'
},
// Vector store for RAG
vectors: {
type: 'pinecone',
apiKey: process.env.PINECONE_API_KEY,
environment: 'us-east-1',
indexName: 'rana-vectors'
},
// Cache storage
cache: {
type: 'redis',
url: process.env.REDIS_URL,
prefix: 'rana:cache:'
},
// Audit logs
audit: {
type: 'postgresql',
connectionString: process.env.DATABASE_URL,
tableName: 'rana_audit_logs'
}
});Security Configuration
Configure security settings and policies
import { configureSecurity } from '@rana/core';
configureSecurity({
// PII detection and redaction
pii: {
enabled: true,
types: ['email', 'phone', 'ssn', 'credit_card'],
action: 'redact' // 'redact' | 'block' | 'warn'
},
// Prompt injection protection
promptInjection: {
enabled: true,
sensitivity: 'high',
action: 'block'
},
// Content filtering
contentFilter: {
enabled: true,
categories: ['hate', 'violence', 'sexual'],
thresholds: {
hate: 0.7,
violence: 0.8
}
},
// Rate limiting
rateLimiting: {
enabled: true,
defaultLimits: {
requests: { max: 100, window: '1m' },
tokens: { max: 100000, window: '1h' }
}
},
// Audit logging
audit: {
enabled: true,
logInputs: true,
logOutputs: true,
retention: '7 years'
}
});Performance Configuration
Tune performance and optimization settings
import { configurePerformance } from '@rana/core';
configurePerformance({
// Concurrency limits
concurrency: {
maxParallelRequests: 10,
maxQueueSize: 100,
queueTimeout: 60000
},
// Batching
batching: {
enabled: true,
maxBatchSize: 20,
maxWaitTime: 100 // ms
},
// Streaming
streaming: {
enabled: true,
chunkSize: 1024
},
// Cost optimization
optimization: {
modelRouting: true, // Auto-select cheapest model
promptCompression: true, // Compress long prompts
caching: true, // Cache identical requests
deduplication: true // Deduplicate concurrent requests
},
// Monitoring
monitoring: {
metricsEnabled: true,
tracingEnabled: true,
samplingRate: 1.0, // 100% of requests
exporters: ['prometheus', 'otlp']
}
});Configuration File
You can also use a rana.config.ts file in your project root:
// rana.config.ts
import { defineConfig } from '@rana/core';
export default defineConfig({
defaultModel: 'claude-sonnet-4-20250514',
defaultProvider: 'anthropic',
providers: {
anthropic: {
apiKey: process.env.ANTHROPIC_API_KEY
},
openai: {
apiKey: process.env.OPENAI_API_KEY
}
},
storage: {
prompts: { type: 'postgresql' },
cache: { type: 'redis' }
},
security: {
pii: { enabled: true },
promptInjection: { enabled: true }
},
performance: {
optimization: {
caching: true,
modelRouting: true
}
}
});Configuration Validation
Validate your configuration at startup:
import { validateConfig } from '@rana/core';
const { valid, errors, warnings } = validateConfig();
if (!valid) {
console.error('Configuration errors:', errors);
process.exit(1);
}
if (warnings.length > 0) {
console.warn('Configuration warnings:', warnings);
}
// Or use the CLI
// npx rana config:validate