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