# ⚙️ Dashboard Settings ## Table of Contents 1. [Overview](#overview) 2. [Memory Settings](#memory-settings) 3. [API & Model Settings](#api--model-settings) 4. [MCP Server Management](#mcp-server-management) 5. [Agent Behavior](#agent-behavior) 6. [Search Engine Configuration](#search-engine-configuration) 7. [Network & Proxy](#network--proxy) 8. [Cost Control](#cost-control) 9. [Performance Tuning](#performance-tuning) 10. [Import/Export](#importexport) --- ## Overview The **Settings Dashboard** provides comprehensive configuration for all aspects of the WebScraper environment, models, MCPs, agents, and observability. ### Settings Structure ``` Settings ├── Memory │ ├── Short-Term Memory │ ├── Working Memory │ ├── Long-Term Memory │ └── Shared Memory ├── API & Models │ ├── OpenAI │ ├── Anthropic │ ├── Google │ ├── Groq │ ├── Custom Providers │ └── Model Routing ├── MCP Servers │ ├── Installed Servers │ ├── Available Servers │ └── Custom Servers ├── Agent Behavior │ ├── Exploration vs Exploitation │ ├── Retry Strategy │ ├── Planning Depth │ └── Risk Tolerance ├── Search Engines │ ├── Google Search │ ├── Bing Search │ ├── Brave Search │ └── DuckDuckGo ├── Network & Proxy │ ├── Proxy Pool │ ├── VPN Configuration │ ├── Rate Limiting │ └── User Agent Rotation ├── Cost Control │ ├── Daily Budget │ ├── Model Costs │ └── Alerts └── Performance ├── Batch Processing ├── Parallel Execution ├── Caching └── Context Optimization ``` --- ## Memory Settings ### Configuration ```typescript interface MemorySettings { // Layer toggles enableShortTerm: boolean; // Episode memory enableWorking: boolean; // Reasoning buffer enableLongTerm: boolean; // Persistent patterns enableShared: boolean; // Multi-agent memory // Size limits maxEpisodeMemoryMB: number; // Default: 10 maxWorkingMemoryItems: number; // Default: 50 maxLongTermPatterns: number; // Default: 10000 // Vector database vectorDB: { provider: 'faiss' | 'qdrant' | 'pinecone' | 'weaviate'; embeddingModel: string; // Default: 'text-embedding-3-small' dimension: number; // Default: 1536 similarityMetric: 'cosine' | 'euclidean' | 'dot_product'; }; // Storage backend storage: { backend: 'filesystem' | 'postgresql' | 'mongodb' | 'redis'; path: string; // For filesystem connectionString?: string; // For databases }; // Optimization autoPrune: boolean; // Default: true pruneThreshold: number; // Default: 0.3 (keep if score > 0.3) pruneIntervalHours: number; // Default: 24 autoSummarize: boolean; // Default: true maxContextTokens: number; // Default: 4000 } ``` ### UI Component ```jsx ``` --- ## API & Model Settings ### Multi-Provider Configuration ```typescript interface APISettings { providers: { openai?: { apiKey: string; organization?: string; models: { default: string; reasoning: string; fast: string; }; temperature: number; maxTokens: number; }; anthropic?: { apiKey: string; models: { default: string; reasoning: string; fast: string; }; temperature: number; maxTokens: number; }; google?: { apiKey: string; models: { default: string; reasoning: string; fast: string; }; temperature: number; maxOutputTokens: number; }; groq?: { apiKey: string; models: { default: string; reasoning: string; fast: string; }; temperature: number; maxTokens: number; }; custom?: { baseURL: string; apiKey: string; models: Record; }; }; // Smart routing router: { enabled: boolean; strategy: 'task_based' | 'cost_optimized' | 'speed_optimized' | 'quality_optimized'; fallbackOrder: string[]; autoRetry: boolean; maxRetries: number; }; // Ensemble ensemble: { enabled: boolean; strategy: 'voting' | 'ranking' | 'fusion' | 'verification'; models: string[]; minAgreement: number; }; } ``` ### UI Component ```jsx Test Connection Test Connection Test Connection Test Connection Test Connection ``` --- ## MCP Server Management ### Configuration ```typescript interface MCPSettings { servers: Record; autoDiscoverTools: boolean; toolTimeout: number; // Seconds maxConcurrentCalls: number; retryFailedCalls: boolean; cacheToolResults: boolean; cacheTTL: number; // Seconds } interface MCPServerConfig { command: string; args: string[]; enabled: boolean; autoDownload: boolean; config: Record; // Metadata name: string; description: string; category: string; installSize: string; status: 'installed' | 'not_installed' | 'downloading' | 'error'; } ``` ### UI Component ```jsx {installedServers.map(server => ( {server.name} {server.description} { server.category} {server.toolCount} tools testServer(server)}>Test uninstallServer(server)}>Uninstall ))} {availableServers.map(server => ( {server.name} {server.description} {server.installSize} installServer(server)}> Install ))} Add Server ``` --- ## Agent Behavior ### Configuration ```typescript interface AgentBehaviorSettings { // Exploration vs Exploitation explorationRate: number; // 0.0 = exploit only, 1.0 = explore only explorationDecay: number; // Decay rate per episode // Planning planningDepth: number; // How many steps ahead to plan replanThreshold: number; // Replan if reward drops by X% // Retry strategy maxRetries: number; // Per action retryDelay: number; // Seconds adaptiveRetry: boolean; // Increase delay after each failure // Risk tolerance riskTolerance: 'conservative' | 'balanced' | 'aggressive'; // Memory usage memoryIntensity: 'low' | 'medium' | 'high'; // Learning learningRate: number; enableOnlineLearning: boolean; updateMemoryAfterEpisode: boolean; } ``` ### UI Component ```jsx 0.0 = Always use best known strategy (exploit) 1.0 = Always try new approaches (explore) How many steps ahead the agent plans (higher = slower but smarter) Conservative Prefer proven patterns, avoid risky actions Balanced Balance exploration and exploitation Aggressive Try new approaches quickly, higher failure tolerance ``` --- ## Search Engine Configuration ### Configuration ```typescript interface SearchEngineSettings { default: 'google' | 'bing' | 'brave' | 'duckduckgo' | 'perplexity'; google?: { apiKey: string; searchEngineId: string; region: string; safeSearch: boolean; }; bing?: { apiKey: string; market: string; }; brave?: { apiKey: string; country: string; }; duckduckgo?: { region: string; safeSearch: boolean; }; perplexity?: { apiKey: string; model: string; }; // Global settings maxResults: number; timeout: number; cacheResults: boolean; cacheTTL: number; } ``` ### UI Component ```jsx Test Test Test No API key required (free) Test ``` --- ## Network & Proxy ### Configuration ```typescript interface NetworkSettings { proxy: { enabled: boolean; pools: ProxyPool[]; rotationStrategy: 'round_robin' | 'random' | 'health_based'; maxRetries: number; }; vpn: { enabled: boolean; provider: string; server: string; credentials: { username: string; password: string; }; }; rateLimiting: { enabled: boolean; requestsPerSecond: number; burstSize: number; }; userAgent: { rotationEnabled: boolean; customUserAgents: string[]; }; timeout: { connect: number; read: number; }; } ``` ### UI - See [proxy-vpn.md](./WebScraper_OpenEnv_SoftwareDoc.md#9-network-layer--vpn--proxy) for full details --- ## Cost Control ### Configuration ```typescript interface CostControlSettings { dailyBudget: number; // USD monthlyBudget: number; // USD alertThresholds: number[]; // [0.5, 0.8, 0.9] = 50%, 80%, 90% modelCosts: Record; enforcements: { stopOnBudgetExceeded: boolean; downgradeToCheaperModel: boolean; notifyOnHighCost: boolean; }; } ``` ### UI Component ```jsx Today ${todayCost.toFixed(2)} / ${dailyBudget.toFixed(2)} This Month ${monthCost.toFixed(2)} / ${monthlyBudget.toFixed(2)} Get notified at these percentages of budget Model Input (per 1M tokens) Output (per 1M tokens) Estimated Cost/Episode {models.map(model => ( {model.name} ${model.inputCost.toFixed(2)} ${model.outputCost.toFixed(2)} ${model.estimatedCostPerEpisode.toFixed(4)} ))} ``` --- ## Performance Tuning ### Configuration ```typescript interface PerformanceSettings { batchProcessing: { enabled: boolean; batchSize: number; maxConcurrent: number; }; parallelExecution: { enabled: boolean; maxWorkers: number; }; caching: { enabled: boolean; cacheHTML: boolean; cacheAPIResponses: boolean; cacheDuration: number; // Seconds maxCacheSize: number; // MB }; contextOptimization: { enabled: boolean; summarizeOldObservations: boolean; pruneThreshold: number; maxContextTokens: number; }; } ``` --- ## Import/Export ```jsx Export All Settings (JSON) Export Memory Database Export Logs Reset to Defaults ``` --- **Next:** See [rewards.md](./rewards.md) for advanced reward function design.