Configuration Reference
This document is automatically generated from the application's default settings. All settings can be configured via the Web UI (Settings page), or overridden via Environment Variables.
Environment Variables
To override a setting using an environment variable, convert the key to uppercase, replace dots with underscores, and prefix with LDR_.
For example, app.debug becomes LDR_APP_DEBUG.
Configuration Priority: Web UI Config > Environment Variables > Default Values
Environmental Variables are used to override default values, easing installation, while allowing for adjustments to configuration via Web UI.
System Locking
There is a special environment variable LDR_LOCKED_SETTINGS that allows administrators to strictly enforce specific settings.
- Variable:
LDR_LOCKED_SETTINGS - Format: Comma-separated list of setting keys (e.g.,
llm.model,app.port) - Behavior:
- Any setting listed here MUST have a corresponding value defined in the environment variables (e.g.,
LDR_LLM_MODEL). If not, the application will fail to start. - The setting becomes read-only in the Web UI.
- The Environment Variable value takes absolute precedence, ignoring any value in the database.
- Any setting listed here MUST have a corresponding value defined in the environment variables (e.g.,
Priority for Locked Settings: Environment Variable > Database (Ignored) > Default (Ignored)
Pre-Database (Env-Only) Settings
These settings are required before database initialization and can only be set via environment variables. They are not available in the Web UI because they are needed to start the application.
| Environment Variable | Type | Default | Required | Constraints | Description | Category | Deprecated Alias |
|---|---|---|---|---|---|---|---|
LDR_BOOTSTRAP_ALLOW_UNENCRYPTED |
Boolean | False |
No | Allow unencrypted database (for development) | Bootstrap | LDR_ALLOW_UNENCRYPTED | |
LDR_BOOTSTRAP_CONFIG_DIR |
Path | None |
No | Configuration directory path | Bootstrap | ||
LDR_BOOTSTRAP_DATABASE_URL |
String | None |
No | Database connection URL | Bootstrap | ||
LDR_BOOTSTRAP_DATA_DIR |
Path | None |
No | Data directory path | Bootstrap | ||
LDR_BOOTSTRAP_ENABLE_FILE_LOGGING |
Boolean | False |
No | Enable logging to file | Bootstrap | ||
LDR_BOOTSTRAP_ENCRYPTION_KEY |
Secret | None |
No | Database encryption key | Bootstrap | ||
LDR_BOOTSTRAP_LOG_DIR |
Path | None |
No | Log directory path | Bootstrap | ||
LDR_BOOTSTRAP_SECRET_KEY |
Secret | None |
No | Application secret key for session encryption | Bootstrap | ||
LDR_DB_CONFIG_CACHE_SIZE_MB |
Integer | 64 |
No | 1..10000 | SQLite cache size in MB | Db Config | LDR_DB_CACHE_SIZE_MB |
LDR_DB_CONFIG_CIPHER_MEMORY_SECURITY |
Enum | 'OFF' |
No | OFF, ON | SQLCipher memory security (ON=clear memory after use + mlock, OFF=faster). ON requires IPC_LOCK in Docker. | Db Config | |
LDR_DB_CONFIG_HMAC_ALGORITHM |
Enum | 'HMAC_SHA512' |
No | HMAC_SHA1, HMAC_SHA256, HMAC_SHA512 | HMAC algorithm for database integrity | Db Config | LDR_DB_HMAC_ALGORITHM |
LDR_DB_CONFIG_JOURNAL_MODE |
Enum | 'WAL' |
No | DELETE, MEMORY, OFF, PERSIST, TRUNCATE, WAL | SQLite journal mode | Db Config | LDR_DB_JOURNAL_MODE |
LDR_DB_CONFIG_KDF_ALGORITHM |
Enum | 'PBKDF2_HMAC_SHA512' |
No | PBKDF2_HMAC_SHA1, PBKDF2_HMAC_SHA256, PBKDF2_HMAC_SHA512 | Key derivation function algorithm | Db Config | LDR_DB_KDF_ALGORITHM |
LDR_DB_CONFIG_KDF_ITERATIONS |
Integer | 256000 |
No | 1000..1000000 | Number of KDF iterations for key derivation | Db Config | LDR_DB_KDF_ITERATIONS |
LDR_DB_CONFIG_PAGE_SIZE |
Integer | 16384 |
No | 512..65536 | SQLite page size (must be power of 2) | Db Config | LDR_DB_PAGE_SIZE |
LDR_DB_CONFIG_SYNCHRONOUS |
Enum | 'NORMAL' |
No | EXTRA, FULL, NORMAL, OFF | SQLite synchronous mode | Db Config | LDR_DB_SYNCHRONOUS |
LDR_NEWS_SCHEDULER_ENABLED |
Boolean | True |
No | Enable or disable the news subscription scheduler | News Scheduler | ||
LDR_SECURITY_CORS_ALLOWED_ORIGINS |
String | None |
No | Allowed CORS origins for API routes (comma-separated). Use '*' for all origins, empty for same-origin only. Example: 'https://example.com,https://app.example.com' | Security | ||
LDR_SECURITY_SSRF_DISABLE_VALIDATION |
Boolean | False |
No | Disable SSRF validation (test/dev only - NEVER in production) | Security | ||
LDR_SECURITY_WEBSOCKET_ALLOWED_ORIGINS |
String | None |
No | Allowed origins for WebSocket/Socket.IO connections (comma-separated). Use '*' for all origins (default), empty for same-origin only. Example: 'https://example.com,https://app.example.com' | Security | ||
LDR_TESTING_TEST_MODE |
Boolean | False |
No | Enable test mode (adds delays for testing concurrency) | Testing | ||
LDR_TESTING_USE_FALLBACK_LLM |
Boolean | False |
No | Use mock LLM for testing (skips API calls and DB operations) | Testing |
Settings List
| Key | Environment Variable | Default Value | Description | Type |
|---|---|---|---|---|
app.allow_registrations |
LDR_APP_ALLOW_REGISTRATIONS |
true |
Allow new user registrations through the web interface. This setting cannot be changed from the UI for security reasons. To disable registration on public-facing deployments, set the environment variable LDR_APP_ALLOW_REGISTRATIONS=false. Enabled by default so initial account creation works out of the box. | APP |
app.debug |
LDR_APP_DEBUG |
false |
Produces more informative errors when something goes wrong, but may expose sensitive data. | APP |
app.enable_file_logging |
LDR_APP_ENABLE_FILE_LOGGING |
false |
Enable logging to files (WARNING: Log files are unencrypted and may contain sensitive data) | APP |
app.enable_notifications |
LDR_APP_ENABLE_NOTIFICATIONS |
true |
Enable browser notifications for research events | APP |
app.enable_web |
LDR_APP_ENABLE_WEB |
true |
Enable the web server | APP |
app.external_url |
LDR_APP_EXTERNAL_URL |
`` | Public URL where this application is accessible (e.g., http://localhost:5000, https://myapp.example.com). Used for generating links in notifications. Leave empty to auto-detect from request context. | APP |
app.host |
LDR_APP_HOST |
0.0.0.0 |
Host address to bind the web server | APP |
app.lock_settings |
LDR_APP_LOCK_SETTINGS |
false |
If true, disables editing for all settings | APP |
app.max_concurrent_researches |
LDR_MAX_CONCURRENT |
3 |
Maximum number of concurrent research processes allowed per user | APP |
app.max_user_query_length |
LDR_APP_MAX_USER_QUERY_LENGTH |
300 |
Maximum character length for user queries before disabling direct search. Longer queries will use LLM-generated questions only. | SEARCH |
app.port |
LDR_APP_PORT |
5000 |
Port for the web server | APP |
app.queue_mode |
LDR_QUEUE_MODE |
direct |
Queue processing mode: 'direct' for immediate execution, 'queue' for background processing | APP |
app.theme |
LDR_APP_THEME |
dark |
User interface color theme. Choose from 20 themes including popular developer themes. | APP |
app.timezone |
TZ |
UTC |
Timezone for date calculations (e.g., news subscription YYYY-MM-DD placeholder). Use 'UTC' for server time or specify your local timezone. | APP |
app.warnings.dismiss_high_context |
LDR_APP_WARNINGS_DISMISS_HIGH_CONTEXT |
false |
Dismiss warnings about high context window sizes that may cause memory issues | APP |
app.warnings.dismiss_low_context_focused |
LDR_APP_WARNINGS_DISMISS_LOW_CONTEXT_FOCUSED |
false |
Dismiss warnings about using focused iteration with low context window sizes | APP |
app.warnings.dismiss_model_mismatch |
LDR_APP_WARNINGS_DISMISS_MODEL_MISMATCH |
false |
Dismiss warnings about context size vs model size mismatches | APP |
app.warnings.dismiss_searxng_recommendation |
LDR_APP_WARNINGS_DISMISS_SEARXNG_RECOMMENDATION |
false |
Dismiss recommendations about using more questions instead of iterations with SearXNG | APP |
app.web_interface |
LDR_APP_WEB_INTERFACE |
true |
Enable the web interface | APP |
benchmark.evaluation.endpoint_url |
LDR_BENCHMARK_EVALUATION_ENDPOINT_URL |
https://openrouter.ai/api/v1 |
Endpoint URL for evaluation model (when using OpenAI-compatible APIs) | SEARCH |
benchmark.evaluation.model |
LDR_BENCHMARK_EVALUATION_MODEL |
anthropic/claude-3.7-sonnet |
Model for evaluating benchmark results | SEARCH |
benchmark.evaluation.provider |
LDR_BENCHMARK_EVALUATION_PROVIDER |
openai_endpoint |
Provider for benchmark evaluation model | SEARCH |
benchmark.evaluation.temperature |
LDR_BENCHMARK_EVALUATION_TEMPERATURE |
0 |
Temperature for evaluation (0 recommended for consistency) | SEARCH |
document_scheduler.download_pdfs |
LDR_DOCUMENT_SCHEDULER_DOWNLOAD_PDFS |
false |
Automatically download PDF files during scheduled document processing. Files will be stored on disk (requires storage space). WARNING: Downloaded files are stored unencrypted on disk. | APP |
document_scheduler.enabled |
LDR_DOCUMENT_SCHEDULER_ENABLED |
true |
Enable automatic document processing from research history | APP |
document_scheduler.extract_text |
LDR_DOCUMENT_SCHEDULER_EXTRACT_TEXT |
true |
Extract text content to database (minimal space usage) | APP |
document_scheduler.generate_rag |
LDR_DOCUMENT_SCHEDULER_GENERATE_RAG |
false |
Generate RAG embeddings for semantic search | APP |
document_scheduler.interval_seconds |
LDR_DOCUMENT_SCHEDULER_INTERVAL_SECONDS |
1800 |
How often to process new research (seconds) | APP |
embeddings.ollama.url |
LDR_EMBEDDINGS_OLLAMA_URL |
http://localhost:11434 |
URL of the Ollama endpoint for embedding models. This setting allows you to use a different Ollama server for embeddings than for LLM operations. If not set, the system will fall back to the LLM Ollama URL. | APP |
focused_iteration.adaptive_questions |
LDR_FOCUSED_ITERATION_ADAPTIVE_QUESTIONS |
0 |
Enables intelligent adaptation of search queries based on previous results. 1=ON: If 3+ recent searches return 0 results, the LLM is warned that queries are 'too narrow'. 0=OFF: Stable main-branch behavior. | SEARCH |
focused_iteration.knowledge_summary_limit |
LDR_FOCUSED_ITERATION_KNOWLEDGE_SUMMARY_LIMIT |
10 |
Controls how many previous search results the LLM sees when generating follow-up questions. Lower values (e.g., 10) reduce context size and focus the LLM on top results. Set to 0 for unlimited (LLM sees all results). NOTE: This only affects question generation - the final answer synthesis always sees ALL results. | SEARCH |
focused_iteration.previous_searches_limit |
LDR_FOCUSED_ITERATION_PREVIOUS_SEARCHES_LIMIT |
10 |
Maximum number of previous searches to show the LLM when generating follow-up questions. This helps the LLM avoid duplicate searches. Set to 0 for unlimited (show all previous searches). Higher values provide more context but use more tokens. | SEARCH |
focused_iteration.prompt_knowledge_truncate |
LDR_FOCUSED_ITERATION_PROMPT_KNOWLEDGE_TRUNCATE |
1500 |
Maximum characters of knowledge context to include in the LLM prompt when generating follow-up questions. This truncates the 'Current Knowledge Summary' section in the prompt. Set to 0 for unlimited. Lower values reduce token usage but may miss relevant context. | SEARCH |
focused_iteration.question_generator |
LDR_FOCUSED_ITERATION_QUESTION_GENERATOR |
browsecomp |
Algorithm for generating follow-up search queries. 'browsecomp': Extracts entities (names, dates, locations) from the query and systematically combines them - more structured and predictable. 'flexible': Gives the LLM more freedom to explore different search strategies - less rigid but may be less consistent. | SEARCH |
focused_iteration.snippet_truncate |
LDR_FOCUSED_ITERATION_SNIPPET_TRUNCATE |
200 |
Maximum characters per snippet when showing search results to LLM for question generation. Shorter snippets (e.g., 200) reduce token usage and keep context focused. Set to 0 for full snippets. NOTE: This only affects question generation - the final answer synthesis sees full snippets. | SEARCH |
general.enable_fact_checking |
LDR_GENERAL_ENABLE_FACT_CHECKING |
false |
Enable LLM-based fact verification for research findings. Adds additional validation pass to check claims against sources. | APP |
general.knowledge_accumulation |
LDR_GENERAL_KNOWLEDGE_ACCUMULATION |
ITERATION |
How to accumulate knowledge across iterations: 'ITERATION' (carry forward per iteration), 'SECTION' (per section), 'FULL' (all content), 'NONE' (fresh each time). | APP |
general.knowledge_accumulation_context_limit |
LDR_GENERAL_KNOWLEDGE_ACCUMULATION_CONTEXT_LIMIT |
2000000 |
Maximum token count for accumulated knowledge context. Higher values preserve more history but increase LLM costs/latency. | APP |
general.output_dir |
LDR_GENERAL_OUTPUT_DIR |
research_outputs |
Directory where research report files are saved. Relative paths are relative to the application root. | APP |
general.output_instructions |
LDR_GENERAL_OUTPUT_INSTRUCTIONS |
`` | Customize how research outputs are formatted: language, tone, style, formatting preferences, audience level, etc. Examples: 'Respond in Spanish with formal tone' | 'Use simple language for beginners' | 'Be concise with bullet points'. Leave empty for default English output. | APP |
llm.anthropic.api_key |
LDR_LLM_ANTHROPIC_API_KEY |
`` | Your Anthropic API key for Claude models. Get one at console.anthropic.com. Required when using the Anthropic provider. | SEARCH |
llm.context_window_size |
LDR_LLM_CONTEXT_WINDOW_SIZE |
128000 |
Maximum context window size in tokens for cloud LLMs. Only used when unrestricted context is disabled. | LLM |
llm.context_window_unrestricted |
LDR_LLM_CONTEXT_WINDOW_UNRESTRICTED |
true |
Let cloud providers automatically handle context sizing (recommended). Uncheck to set a specific limit. | LLM |
llm.google.api_key |
LDR_LLM_GOOGLE_API_KEY |
null |
API key to use for the Google Gemini provider. | SEARCH |
llm.ionos.api_key |
LDR_LLM_IONOS_API_KEY |
null |
API key to use for the IONOS AI Model Hub provider. | SEARCH |
llm.llamacpp_f16_kv |
LDR_LLM_LLAMACPP_F16_KV |
true |
Use 16-bit floating point for LlamaCpp's key-value cache. Reduces memory usage compared to 32-bit; disable only if you need higher precision and have enough VRAM. | LLM |
llm.llamacpp_model_path |
LDR_LLM_LLAMACPP_MODEL_PATH |
`` | Path to GGUF model file relative to models directory (~/.local/share/llm_models/). For llama.cpp server connections, use 'openai_endpoint' provider instead with the server's /v1 URL. | LLM |
llm.llamacpp_n_batch |
LDR_LLM_LLAMACPP_N_BATCH |
512 |
Batch size for LlamaCpp token processing. Higher values improve inference speed but increase memory usage. Reduce if experiencing out-of-memory errors. | LLM |
llm.llamacpp_n_gpu_layers |
LDR_LLM_LLAMACPP_N_GPU_LAYERS |
1 |
Number of model layers to offload to GPU for acceleration in LlamaCpp. 0 = CPU only, higher values = more GPU usage and faster inference. Set based on your available VRAM. | LLM |
llm.lmstudio.url |
LDR_LLM_LMSTUDIO_URL |
http://localhost:1234/v1 |
HTTP endpoint URL where LM Studio is running locally. Include the full path (e.g., http://localhost:1234/v1 for OpenAI-compatible API format). | LLM |
llm.local_context_window_size |
LDR_LLM_LOCAL_CONTEXT_WINDOW_SIZE |
4096 |
Context window size in tokens for local LLMs (Ollama, LlamaCpp). Smaller values prevent memory issues. | LLM |
llm.max_tokens |
LDR_LLM_MAX_TOKENS |
30000 |
Maximum tokens in model responses. Automatically capped at 80% of the context window size to leave room for prompt tokens. | LLM |
llm.model |
LDR_LLM_MODEL |
gemma3:12b |
The language model to use. Available models depend on the selected provider (e.g., 'gpt-4o' for OpenAI, 'gemma:7b' for Ollama). You can type any model name supported by your provider. | LLM |
llm.ollama.enable_thinking |
LDR_LLM_OLLAMA_ENABLE_THINKING |
true |
Enable thinking/reasoning mode for models like deepseek-r1 and qwen2.5. When enabled (recommended), the model performs internal reasoning for more accurate answers, but the reasoning content is automatically separated and excluded from the final response. When disabled, the model gives faster but potentially less accurate direct answers without reasoning. | LLM |
llm.ollama.url |
LDR_LLM_OLLAMA_URL |
http://localhost:11434 |
HTTP endpoint URL where Ollama is running. Used to connect to local or remote Ollama instances for model inference. | LLM |
llm.openai.api_key |
LDR_LLM_OPENAI_API_KEY |
`` | Your OpenAI API key for GPT models. Get one at platform.openai.com. Required when using the OpenAI provider. | SEARCH |
llm.openai_endpoint.api_key |
LDR_LLM_OPENAI_ENDPOINT_API_KEY |
`` | API key for your custom OpenAI-compatible endpoint. For cloud services (OpenRouter, Groq), use your actual API key. For local servers (llama.cpp, vLLM), use any non-empty value like 'not-needed'. | SEARCH |
llm.openai_endpoint.url |
LDR_LLM_OPENAI_ENDPOINT_URL |
https://openrouter.ai/api/v1 |
URL of a custom OpenAI-compatible API endpoint. Use for llama.cpp server, vLLM, Ollama, OpenRouter, Groq, Together, or any service that implements the OpenAI API format. Example for local llama.cpp: http://localhost:8000/v1 | LLM |
llm.openrouter.api_key |
LDR_LLM_OPENROUTER_API_KEY |
null |
API key to use for the OpenRouter provider. | SEARCH |
llm.provider |
LDR_LLM_PROVIDER |
OLLAMA |
The LLM service provider. Choose local providers (Ollama, LM Studio, LlamaCpp, vLLM) for free on-device inference, or cloud APIs (OpenAI, Anthropic, Google, OpenRouter) for hosted models. | LLM |
llm.supports_max_tokens |
LDR_LLM_SUPPORTS_MAX_TOKENS |
true |
Feature flag for max_tokens parameter. Disable if your LLM API returns errors when max_tokens is set. When disabled, the parameter is not passed to the API. | LLM |
llm.temperature |
LDR_LLM_TEMPERATURE |
0.7 |
Controls randomness in model outputs. Lower values (0.0-0.3) produce deterministic, factual responses; higher values (0.7-1.0) produce more creative and varied outputs. | LLM |
llm.xai.api_key |
LDR_LLM_XAI_API_KEY |
null |
API key to use for the xAI Grok provider. | LLM |
news.display.default_headline_max_length |
LDR_NEWS_DISPLAY_DEFAULT_HEADLINE_MAX_LENGTH |
100 |
Default maximum headline length | APP |
news.display.max_query_length |
LDR_NEWS_DISPLAY_MAX_QUERY_LENGTH |
50 |
Maximum query display length in UI | APP |
news.feed.default_limit |
LDR_NEWS_FEED_DEFAULT_LIMIT |
20 |
Default number of news items to show in feed | APP |
news.preferences.max_stored |
LDR_NEWS_PREFERENCES_MAX_STORED |
100 |
Maximum number of stored preferences per user | APP |
news.progress.complete |
LDR_NEWS_PROGRESS_COMPLETE |
100 |
Progress percentage when complete | APP |
news.progress.generating_searches |
LDR_NEWS_PROGRESS_GENERATING_SEARCHES |
50 |
Progress percentage when generating searches | APP |
news.refresh.default_hours |
LDR_NEWS_REFRESH_DEFAULT_HOURS |
4 |
Default refresh interval in hours | APP |
news.scheduler.activity_check_interval |
LDR_NEWS_SCHEDULER_ACTIVITY_CHECK_INTERVAL |
5 |
How often to check for due subscriptions (minutes) | APP |
news.scheduler.batch_size |
LDR_NEWS_SCHEDULER_BATCH_SIZE |
5 |
Number of subscriptions to process in each batch | APP |
news.scheduler.cleanup_interval_hours |
LDR_NEWS_SCHEDULER_CLEANUP_INTERVAL_HOURS |
1 |
How often to run cleanup job for inactive users | APP |
news.scheduler.enabled |
LDR_NEWS_SCHEDULER_ENABLED |
true |
Enable automatic news subscription updates for active users | APP |
news.scheduler.max_concurrent_jobs |
LDR_NEWS_SCHEDULER_MAX_CONCURRENT_JOBS |
10 |
Maximum concurrent subscription checks across all users | APP |
news.scheduler.max_jitter_seconds |
LDR_NEWS_SCHEDULER_MAX_JITTER_SECONDS |
300 |
Maximum random delay added to subscription checks to spread load | APP |
news.scheduler.retention_hours |
LDR_NEWS_SCHEDULER_RETENTION_HOURS |
48 |
Hours to keep user credentials in memory after last activity | APP |
news.storage.default_limit |
LDR_NEWS_STORAGE_DEFAULT_LIMIT |
100 |
Default limit for storing news items | APP |
news.subscription.default_type |
LDR_NEWS_SUBSCRIPTION_DEFAULT_TYPE |
search |
Default subscription type | APP |
news.subscription.refresh_minutes |
LDR_NEWS_SUBSCRIPTION_REFRESH_MINUTES |
360 |
Default subscription refresh interval in minutes | APP |
news.trending.lookback_hours |
LDR_NEWS_TRENDING_LOOKBACK_HOURS |
24 |
Hours to look back for trending analysis | APP |
notifications.enabled |
LDR_NOTIFICATIONS_ENABLED |
false |
Enable external notifications (email, messaging, etc.) | APP |
notifications.on_api_quota_warning |
LDR_NOTIFICATIONS_ON_API_QUOTA_WARNING |
false |
Send notification when API quota/rate limits are exceeded | APP |
notifications.on_auth_issue |
LDR_NOTIFICATIONS_ON_AUTH_ISSUE |
false |
Send notification when authentication fails for API services | APP |
notifications.on_research_completed |
LDR_NOTIFICATIONS_ON_RESEARCH_COMPLETED |
true |
Send notification when research completes | APP |
notifications.on_research_failed |
LDR_NOTIFICATIONS_ON_RESEARCH_FAILED |
true |
Send notification when research fails | APP |
notifications.on_research_queued |
LDR_NOTIFICATIONS_ON_RESEARCH_QUEUED |
false |
Send notification when research is added to queue | APP |
notifications.on_subscription_error |
LDR_NOTIFICATIONS_ON_SUBSCRIPTION_ERROR |
false |
Send notification when subscription encounters an error | APP |
notifications.on_subscription_update |
LDR_NOTIFICATIONS_ON_SUBSCRIPTION_UPDATE |
true |
Send notification when subscriptions have new content | APP |
notifications.rate_limit_per_day |
LDR_NOTIFICATIONS_RATE_LIMIT_PER_DAY |
50 |
Maximum number of notifications per day (prevents spam) | APP |
notifications.rate_limit_per_hour |
LDR_NOTIFICATIONS_RATE_LIMIT_PER_HOUR |
10 |
Maximum number of notifications per hour (prevents spam) | APP |
notifications.service_url |
LDR_NOTIFICATIONS_SERVICE_URL |
`` | Notification service URL(s). Supports multiple comma-separated URLs to send notifications to multiple destinations (e.g., discord://YOUR_WEBHOOK_ID/YOUR_TOKEN, mailto://YOUR_USER:YOUR_PASS@smtp.example.com?to=recipient@example.com). See documentation for supported services. | APP |
rag.indexing_batch_size |
LDR_RAG_INDEXING_BATCH_SIZE |
15 |
Number of documents to process in parallel during RAG indexing. Higher values are faster but use more memory. | APP |
rate_limiting.decay_per_day |
LDR_RATE_LIMITING_DECAY_PER_DAY |
0.95 |
Confidence decay factor per day for old rate limit estimates (0.5-0.99, lower = faster decay) | APP |
rate_limiting.enabled |
LDR_RATE_LIMITING_ENABLED |
true |
Enable adaptive rate limiting system that learns optimal wait times for each search engine | APP |
rate_limiting.exploration_rate |
LDR_RATE_LIMITING_EXPLORATION_RATE |
0.1 |
Percentage of attempts that will explore faster rates to discover improvements (0.0-1.0) | APP |
rate_limiting.learning_rate |
LDR_RATE_LIMITING_LEARNING_RATE |
0.45 |
How quickly to adapt to new rate limit information (higher = faster adaptation) | APP |
rate_limiting.llm_enabled |
LDR_RATE_LIMITING_LLM_ENABLED |
false |
Enable adaptive rate limiting for LLM API calls (e.g., for free tier APIs with request limits) | APP |
rate_limiting.memory_window |
LDR_RATE_LIMITING_MEMORY_WINDOW |
100 |
Number of recent attempts to keep in memory for learning | APP |
rate_limiting.profile |
LDR_RATE_LIMITING_PROFILE |
balanced |
Rate limiting aggressiveness profile | APP |
report.citation_format |
LDR_REPORT_CITATION_FORMAT |
number_hyperlinks |
Citation format style for reports | REPORT |
report.detailed_citations |
LDR_REPORT_DETAILED_CITATIONS |
true |
Include detailed citations in reports | REPORT |
report.enable_fact_checking |
LDR_REPORT_ENABLE_FACT_CHECKING |
true |
Enable fact checking for report contents | REPORT |
report.enable_file_backup |
LDR_REPORT_ENABLE_FILE_BACKUP |
false |
Also save reports to file system for external access (reports are always stored in database) | REPORT |
report.export_formats |
LDR_REPORT_EXPORT_FORMATS |
["markdown", "latex", "quarto", "ris"] |
Available export formats for reports | REPORT |
report.max_context_chars |
LDR_REPORT_MAX_CONTEXT_CHARS |
4000 |
Maximum characters for context when generating sections (lower values are safer for smaller local models) | REPORT |
report.max_context_sections |
LDR_REPORT_MAX_CONTEXT_SECTIONS |
3 |
Number of previous sections to include as context when generating new sections (helps reduce repetition in detailed reports) | REPORT |
report.searches_per_section |
LDR_REPORT_SEARCHES_PER_SECTION |
2 |
Number of searches to run per report section | REPORT |
research_library.auto_index_enabled |
LDR_RESEARCH_LIBRARY_AUTO_INDEX_ENABLED |
false |
Automatically index documents for RAG search when they are added to collections (via upload or download). Indexing happens in the background without blocking uploads. | APP |
research_library.confirm_deletions |
LDR_RESEARCH_LIBRARY_CONFIRM_DELETIONS |
true |
Show confirmation dialogs before delete operations. Recommended to keep enabled to prevent accidental data loss. | APP |
research_library.enable_pdf_storage |
RESEARCH_LIBRARY_ENABLE_PDF_STORAGE |
false |
DEPRECATED: Use pdf_storage_mode instead. Kept for backward compatibility. | APP |
research_library.enable_txt_storage |
LDR_RESEARCH_LIBRARY_ENABLE_TXT_STORAGE |
false |
⚠️ PRIVACY WARNING: Text files will be stored unencrypted on disk for RAG/ChromaDB integration. This exposes document contents to anyone with filesystem access. | APP |
research_library.max_pdf_size_mb |
LDR_RESEARCH_LIBRARY_MAX_PDF_SIZE_MB |
100 |
Maximum allowed PDF file size in megabytes. PDFs larger than this will not be stored. | APP |
research_library.pdf_storage_mode |
RESEARCH_LIBRARY_PDF_STORAGE_MODE |
database |
Choose how PDFs are stored. Each user has their own encrypted database. Database mode stores PDFs encrypted within it (secure, portable, isolated per-user). Filesystem mode stores unencrypted files on disk (faster for large files). None stores only extracted text (smallest footprint). | APP |
research_library.shared_library |
RESEARCH_LIBRARY_SHARED_LIBRARY |
false |
When enabled, all users share the same library directory. Documents from all users will be visible to each other. | APP |
research_library.storage_path |
RESEARCH_LIBRARY_STORAGE_PATH |
~/Documents/LocalDeepResearch/Library |
Base path for storing research library documents. Each user will have their own subdirectory unless shared library is enabled. | APP |
research_library.upload_pdf_storage |
RESEARCH_LIBRARY_UPLOAD_PDF_STORAGE |
none |
Choose how user-uploaded PDFs are stored. Database mode stores PDFs encrypted in your personal database (increases database size but allows viewing/downloading later). Text Only extracts and stores only the text content (smallest footprint). Note: Filesystem storage is not available for uploads for security reasons. | APP |
search.cross_engine_max_results |
LDR_SEARCH_CROSS_ENGINE_MAX_RESULTS |
100 |
Maximum number of search results to keep after cross-engine filtering. When results from multiple search engines are combined, this limits how many total results are displayed. Higher values show more comprehensive results. | SEARCH |
search.engine.DEFAULT_SEARCH_ENGINE |
LDR_SEARCH_ENGINE_DEFAULT_SEARCH_ENGINE |
wikipedia |
Fallback search engine used when the configured engine is unavailable or has errors. | SEARCH |
search.engine.auto.class_name |
LDR_SEARCH_ENGINE_AUTO_CLASS_NAME |
MetaSearchEngine |
Internal: Python class implementing the automatic search engine selector. | SEARCH |
search.engine.auto.default_params.max_engines_to_try |
LDR_SEARCH_ENGINE_AUTO_DEFAULT_PARAMS_MAX_ENGINES_TO_TRY |
3 |
Maximum number of search engines to try before returning results. Auto mode selects the best engine(s) based on your query type. | SEARCH |
search.engine.auto.default_params.use_api_key_services |
LDR_SEARCH_ENGINE_AUTO_DEFAULT_PARAMS_USE_API_KEY_SERVICES |
true |
Whether to include paid API services (Brave, SerpAPI, etc.) in auto-selection. Disable to only use free search engines. | SEARCH |
search.engine.auto.description |
LDR_SEARCH_ENGINE_AUTO_DESCRIPTION |
Attempt to choose the best combination of search engines automatically. |
Human-readable description of the search engine. | SEARCH |
search.engine.auto.display_name |
LDR_SEARCH_ENGINE_AUTO_DISPLAY_NAME |
Auto |
Display name to use in the U.I. for this search engine. | SEARCH |
search.engine.auto.module_path |
LDR_SEARCH_ENGINE_AUTO_MODULE_PATH |
.engines.meta_search_engine |
Internal: Python module path for the auto search engine selector. | SEARCH |
search.engine.auto.reliability |
LDR_SEARCH_ENGINE_AUTO_RELIABILITY |
0.85 |
Reliability rating for auto mode. Varies based on which underlying engine is selected. | SEARCH |
search.engine.auto.requires_api_key |
LDR_SEARCH_ENGINE_AUTO_REQUIRES_API_KEY |
false |
Whether auto mode requires API keys. False because it can fall back to free engines like Wikipedia. | SEARCH |
search.engine.auto.requires_llm |
LDR_SEARCH_ENGINE_AUTO_REQUIRES_LLM |
true |
Whether auto mode uses LLM to select the best engine. When disabled, falls back to rule-based selection. | SEARCH |
search.engine.auto.strengths |
LDR_SEARCH_ENGINE_AUTO_STRENGTHS |
["intelligent engine selection", "adaptable to query type", "fallback capabilities"] |
Key advantages of auto mode: Intelligently selects the best engine for each query type, tries multiple sources if needed. | SEARCH |
search.engine.auto.weaknesses |
LDR_SEARCH_ENGINE_AUTO_WEAKNESSES |
["slightly slower due to LLM analysis"] |
Limitations of auto mode: May use more API calls trying multiple engines, selection heuristics may not always be optimal. | SEARCH |
search.engine.local.local_all.class_name |
LDR_SEARCH_ENGINE_LOCAL_LOCAL_ALL_CLASS_NAME |
LocalAllSearchEngine |
Internal: Python class implementing local document search. Do not modify. | SEARCH |
search.engine.local.local_all.description |
LDR_SEARCH_ENGINE_LOCAL_LOCAL_ALL_DESCRIPTION |
Search only local documents using RAG. |
Human-readable description of the search engine. | SEARCH |
search.engine.local.local_all.display_name |
LDR_SEARCH_ENGINE_LOCAL_LOCAL_ALL_DISPLAY_NAME |
Local Documents |
Display name to use in the U.I. for this search engine. | SEARCH |
search.engine.local.local_all.module_path |
LDR_SEARCH_ENGINE_LOCAL_LOCAL_ALL_MODULE_PATH |
.engines.search_engine_local_all |
Internal: Python module path for local search implementation. Do not modify. | SEARCH |
search.engine.local.local_all.reliability |
LDR_SEARCH_ENGINE_LOCAL_LOCAL_ALL_RELIABILITY |
0.85 |
Reliability score (0-1) for local search. Quality depends on your document collection and indexing. | SEARCH |
search.engine.local.local_all.requires_api_key |
LDR_SEARCH_ENGINE_LOCAL_LOCAL_ALL_REQUIRES_API_KEY |
false |
Local document search does not require any external API keys. | SEARCH |
search.engine.local.local_all.requires_llm |
LDR_SEARCH_ENGINE_LOCAL_LOCAL_ALL_REQUIRES_LLM |
true |
Indicates this engine uses the LLM to rerank and filter results for relevance. | SEARCH |
search.engine.local.local_all.strengths |
LDR_SEARCH_ENGINE_LOCAL_LOCAL_ALL_STRENGTHS |
["searches all local collections", "personal documents", "offline access"] |
Advantages: Searches all local document collections at once, works offline, uses your private documents. | SEARCH |
search.engine.local.local_all.use_in_auto_search |
LDR_SEARCH_ENGINE_LOCAL_LOCAL_ALL_USE_IN_AUTO_SEARCH |
true |
Include local documents in auto search mode | SEARCH |
search.engine.local.local_all.weaknesses |
LDR_SEARCH_ENGINE_LOCAL_LOCAL_ALL_WEAKNESSES |
["may return too many results", "requires indexing"] |
Limitations: May return too many results from mixed collections, requires documents to be indexed first. | SEARCH |
search.engine.local.personal_notes.cache_dir |
LDR_SEARCH_ENGINE_LOCAL_PERSONAL_NOTES_CACHE_DIR |
null |
Directory for storing indexed embeddings and cache files. Uses system cache location by default. | SEARCH |
search.engine.local.personal_notes.chunk_overlap |
LDR_SEARCH_ENGINE_LOCAL_PERSONAL_NOTES_CHUNK_OVERLAP |
100 |
Number of characters to overlap between chunks for context continuity during RAG indexing. | SEARCH |
search.engine.local.personal_notes.chunk_size |
LDR_SEARCH_ENGINE_LOCAL_PERSONAL_NOTES_CHUNK_SIZE |
500 |
Maximum characters per chunk when splitting documents for RAG indexing. Smaller = more precise, larger = more context. | SEARCH |
search.engine.local.personal_notes.description |
LDR_SEARCH_ENGINE_LOCAL_PERSONAL_NOTES_DESCRIPTION |
Personal notes and documents |
Human-readable description of this document collection shown in the UI. | SEARCH |
search.engine.local.personal_notes.embedding_device |
LDR_SEARCH_ENGINE_LOCAL_PERSONAL_NOTES_EMBEDDING_DEVICE |
cpu |
Device for computing embeddings. 'cpu' works everywhere; 'cuda' is faster but requires NVIDIA GPU. | SEARCH |
search.engine.local.personal_notes.embedding_model |
LDR_SEARCH_ENGINE_LOCAL_PERSONAL_NOTES_EMBEDDING_MODEL |
all-MiniLM-L6-v2 |
Model for generating text embeddings. Default 'all-MiniLM-L6-v2' is fast and works well; larger models may improve accuracy. | SEARCH |
search.engine.local.personal_notes.embedding_model_type |
LDR_SEARCH_ENGINE_LOCAL_PERSONAL_NOTES_EMBEDDING_MODEL_TYPE |
sentence_transformers |
Model provider to use for generating document embeddings. | SEARCH |
search.engine.local.personal_notes.enabled |
LDR_SEARCH_ENGINE_LOCAL_PERSONAL_NOTES_ENABLED |
true |
Enable this document collection for searching. Disable if you don't want to index these documents. | SEARCH |
search.engine.local.personal_notes.max_filtered_results |
LDR_SEARCH_ENGINE_LOCAL_PERSONAL_NOTES_MAX_FILTERED_RESULTS |
10 |
Maximum results to return after LLM relevance filtering. These are the final results used in research. | SEARCH |
search.engine.local.personal_notes.max_results |
LDR_SEARCH_ENGINE_LOCAL_PERSONAL_NOTES_MAX_RESULTS |
30 |
Maximum results from initial vector similarity search, before LLM filters for relevance. | SEARCH |
search.engine.local.personal_notes.name |
LDR_SEARCH_ENGINE_LOCAL_PERSONAL_NOTES_NAME |
Personal Notes |
Internal identifier for this collection. Used in logs and configuration. | SEARCH |
search.engine.local.personal_notes.paths |
LDR_SEARCH_ENGINE_LOCAL_PERSONAL_NOTES_PATHS |
["/local_collections/personal_notes"] |
File paths to include in this collection. Supports directories (recursively indexed) and individual files. | SEARCH |
search.engine.local.personal_notes.reliability |
LDR_SEARCH_ENGINE_LOCAL_PERSONAL_NOTES_RELIABILITY |
0.75 |
Reliability score (0-1). Personal notes are rated lower (0.75) as they may contain informal or subjective content. | SEARCH |
search.engine.local.personal_notes.strengths |
LDR_SEARCH_ENGINE_LOCAL_PERSONAL_NOTES_STRENGTHS |
["personal knowledge", "notes", "private documents"] |
Advantages: Access to your personal knowledge, notes, and private documents not available elsewhere. | SEARCH |
search.engine.local.personal_notes.use_in_auto_search |
LDR_SEARCH_ENGINE_LOCAL_PERSONAL_NOTES_USE_IN_AUTO_SEARCH |
false |
Include personal notes in auto search mode | SEARCH |
search.engine.local.personal_notes.weaknesses |
LDR_SEARCH_ENGINE_LOCAL_PERSONAL_NOTES_WEAKNESSES |
["subjective content", "informal information"] |
Limitations: Content may be subjective, informal, or incomplete compared to published sources. | SEARCH |
search.engine.local.project_docs.cache_dir |
LDR_SEARCH_ENGINE_LOCAL_PROJECT_DOCS_CACHE_DIR |
null |
Directory for storing indexed embeddings and cache files. Uses system cache location by default. | SEARCH |
search.engine.local.project_docs.chunk_overlap |
LDR_SEARCH_ENGINE_LOCAL_PROJECT_DOCS_CHUNK_OVERLAP |
200 |
Number of characters to overlap between chunks for context continuity during RAG indexing. | SEARCH |
search.engine.local.project_docs.chunk_size |
LDR_SEARCH_ENGINE_LOCAL_PROJECT_DOCS_CHUNK_SIZE |
1000 |
Maximum characters per chunk when splitting documents for RAG indexing. Larger default (1000) suits technical documentation. | SEARCH |
search.engine.local.project_docs.description |
LDR_SEARCH_ENGINE_LOCAL_PROJECT_DOCS_DESCRIPTION |
Project documentation and specifications |
Human-readable description of this document collection shown in the UI. | SEARCH |
search.engine.local.project_docs.embedding_device |
LDR_SEARCH_ENGINE_LOCAL_PROJECT_DOCS_EMBEDDING_DEVICE |
cpu |
Device for computing embeddings. 'cpu' works everywhere; 'cuda' is faster but requires NVIDIA GPU. | SEARCH |
search.engine.local.project_docs.embedding_model |
LDR_SEARCH_ENGINE_LOCAL_PROJECT_DOCS_EMBEDDING_MODEL |
all-MiniLM-L6-v2 |
Model for generating text embeddings. Default 'all-MiniLM-L6-v2' is fast and works well; larger models may improve accuracy. | SEARCH |
search.engine.local.project_docs.embedding_model_type |
LDR_SEARCH_ENGINE_LOCAL_PROJECT_DOCS_EMBEDDING_MODEL_TYPE |
sentence_transformers |
Model provider to use for generating document embeddings. | SEARCH |
search.engine.local.project_docs.enabled |
LDR_SEARCH_ENGINE_LOCAL_PROJECT_DOCS_ENABLED |
true |
Enable this document collection for searching. Disable if you don't want to index these documents. | SEARCH |
search.engine.local.project_docs.max_filtered_results |
LDR_SEARCH_ENGINE_LOCAL_PROJECT_DOCS_MAX_FILTERED_RESULTS |
5 |
Maximum results to return after LLM relevance filtering. These are the final results used in research. | SEARCH |
search.engine.local.project_docs.max_results |
LDR_SEARCH_ENGINE_LOCAL_PROJECT_DOCS_MAX_RESULTS |
20 |
Maximum results from initial vector similarity search, before LLM filters for relevance. | SEARCH |
search.engine.local.project_docs.name |
LDR_SEARCH_ENGINE_LOCAL_PROJECT_DOCS_NAME |
Project Documents |
Internal identifier for this collection. Used in logs and configuration. | SEARCH |
search.engine.local.project_docs.paths |
LDR_SEARCH_ENGINE_LOCAL_PROJECT_DOCS_PATHS |
["/local_collections/project_docs/"] |
File paths to include in this collection. Supports directories (recursively indexed) and individual files. | SEARCH |
search.engine.local.project_docs.reliability |
LDR_SEARCH_ENGINE_LOCAL_PROJECT_DOCS_RELIABILITY |
0.9 |
Reliability score (0-1). Project docs rated moderately (0.8) as they are semi-formal technical content. | SEARCH |
search.engine.local.project_docs.strengths |
LDR_SEARCH_ENGINE_LOCAL_PROJECT_DOCS_STRENGTHS |
``["project documentation", "specifications", "internal d |
…(truncated)