local-deep-research 0.1.25__tar.gz → 0.2.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (164) hide show
  1. {local_deep_research-0.1.25/src/local_deep_research.egg-info → local_deep_research-0.2.0}/PKG-INFO +175 -101
  2. {local_deep_research-0.1.25 → local_deep_research-0.2.0}/README.md +143 -70
  3. {local_deep_research-0.1.25 → local_deep_research-0.2.0}/pyproject.toml +39 -13
  4. local_deep_research-0.2.0/src/local_deep_research/__init__.py +34 -0
  5. local_deep_research-0.2.0/src/local_deep_research/__main__.py +16 -0
  6. local_deep_research-0.2.0/src/local_deep_research/advanced_search_system/__init__.py +7 -0
  7. local_deep_research-0.2.0/src/local_deep_research/advanced_search_system/filters/__init__.py +8 -0
  8. local_deep_research-0.2.0/src/local_deep_research/advanced_search_system/filters/base_filter.py +38 -0
  9. local_deep_research-0.2.0/src/local_deep_research/advanced_search_system/filters/cross_engine_filter.py +200 -0
  10. local_deep_research-0.2.0/src/local_deep_research/advanced_search_system/findings/base_findings.py +81 -0
  11. local_deep_research-0.2.0/src/local_deep_research/advanced_search_system/findings/repository.py +452 -0
  12. local_deep_research-0.2.0/src/local_deep_research/advanced_search_system/knowledge/__init__.py +1 -0
  13. local_deep_research-0.2.0/src/local_deep_research/advanced_search_system/knowledge/base_knowledge.py +151 -0
  14. local_deep_research-0.2.0/src/local_deep_research/advanced_search_system/knowledge/standard_knowledge.py +159 -0
  15. local_deep_research-0.2.0/src/local_deep_research/advanced_search_system/questions/__init__.py +1 -0
  16. local_deep_research-0.2.0/src/local_deep_research/advanced_search_system/questions/base_question.py +64 -0
  17. local_deep_research-0.2.0/src/local_deep_research/advanced_search_system/questions/decomposition_question.py +445 -0
  18. local_deep_research-0.2.0/src/local_deep_research/advanced_search_system/questions/standard_question.py +119 -0
  19. local_deep_research-0.2.0/src/local_deep_research/advanced_search_system/repositories/__init__.py +7 -0
  20. local_deep_research-0.2.0/src/local_deep_research/advanced_search_system/strategies/__init__.py +1 -0
  21. local_deep_research-0.2.0/src/local_deep_research/advanced_search_system/strategies/base_strategy.py +118 -0
  22. local_deep_research-0.2.0/src/local_deep_research/advanced_search_system/strategies/iterdrag_strategy.py +450 -0
  23. local_deep_research-0.2.0/src/local_deep_research/advanced_search_system/strategies/parallel_search_strategy.py +312 -0
  24. local_deep_research-0.2.0/src/local_deep_research/advanced_search_system/strategies/rapid_search_strategy.py +270 -0
  25. local_deep_research-0.2.0/src/local_deep_research/advanced_search_system/strategies/standard_strategy.py +300 -0
  26. local_deep_research-0.2.0/src/local_deep_research/advanced_search_system/tools/__init__.py +1 -0
  27. local_deep_research-0.2.0/src/local_deep_research/advanced_search_system/tools/base_tool.py +100 -0
  28. local_deep_research-0.2.0/src/local_deep_research/advanced_search_system/tools/knowledge_tools/__init__.py +1 -0
  29. local_deep_research-0.2.0/src/local_deep_research/advanced_search_system/tools/question_tools/__init__.py +1 -0
  30. local_deep_research-0.2.0/src/local_deep_research/advanced_search_system/tools/search_tools/__init__.py +1 -0
  31. {local_deep_research-0.1.25 → local_deep_research-0.2.0}/src/local_deep_research/api/__init__.py +5 -5
  32. {local_deep_research-0.1.25 → local_deep_research-0.2.0}/src/local_deep_research/api/research_functions.py +96 -84
  33. local_deep_research-0.2.0/src/local_deep_research/app.py +8 -0
  34. {local_deep_research-0.1.25 → local_deep_research-0.2.0}/src/local_deep_research/citation_handler.py +25 -16
  35. local_deep_research-0.1.25/src/local_deep_research/config.py → local_deep_research-0.2.0/src/local_deep_research/config/config_files.py +113 -120
  36. local_deep_research-0.2.0/src/local_deep_research/config/llm_config.py +472 -0
  37. local_deep_research-0.2.0/src/local_deep_research/config/search_config.py +77 -0
  38. local_deep_research-0.2.0/src/local_deep_research/defaults/.env.template +15 -0
  39. {local_deep_research-0.1.25 → local_deep_research-0.2.0}/src/local_deep_research/defaults/__init__.py +10 -5
  40. {local_deep_research-0.1.25 → local_deep_research-0.2.0}/src/local_deep_research/defaults/main.toml +2 -2
  41. {local_deep_research-0.1.25 → local_deep_research-0.2.0}/src/local_deep_research/defaults/search_engines.toml +60 -34
  42. local_deep_research-0.2.0/src/local_deep_research/main.py +215 -0
  43. local_deep_research-0.2.0/src/local_deep_research/migrate_db.py +147 -0
  44. {local_deep_research-0.1.25 → local_deep_research-0.2.0}/src/local_deep_research/report_generator.py +72 -44
  45. local_deep_research-0.2.0/src/local_deep_research/search_system.py +170 -0
  46. local_deep_research-0.2.0/src/local_deep_research/setup_data_dir.py +35 -0
  47. local_deep_research-0.2.0/src/local_deep_research/test_migration.py +178 -0
  48. local_deep_research-0.2.0/src/local_deep_research/utilities/db_utils.py +49 -0
  49. {local_deep_research-0.1.25/src/local_deep_research/utilties → local_deep_research-0.2.0/src/local_deep_research/utilities}/enums.py +2 -2
  50. {local_deep_research-0.1.25/src/local_deep_research/utilties → local_deep_research-0.2.0/src/local_deep_research/utilities}/llm_utils.py +63 -29
  51. local_deep_research-0.2.0/src/local_deep_research/utilities/search_utilities.py +242 -0
  52. {local_deep_research-0.1.25/src/local_deep_research/utilties → local_deep_research-0.2.0/src/local_deep_research/utilities}/setup_utils.py +4 -2
  53. {local_deep_research-0.1.25 → local_deep_research-0.2.0}/src/local_deep_research/web/__init__.py +0 -1
  54. local_deep_research-0.2.0/src/local_deep_research/web/app.py +123 -0
  55. local_deep_research-0.2.0/src/local_deep_research/web/app_factory.py +289 -0
  56. local_deep_research-0.2.0/src/local_deep_research/web/database/README.md +70 -0
  57. local_deep_research-0.2.0/src/local_deep_research/web/database/migrate_to_ldr_db.py +289 -0
  58. local_deep_research-0.2.0/src/local_deep_research/web/database/migrations.py +447 -0
  59. local_deep_research-0.2.0/src/local_deep_research/web/database/models.py +117 -0
  60. local_deep_research-0.2.0/src/local_deep_research/web/database/schema_upgrade.py +107 -0
  61. local_deep_research-0.2.0/src/local_deep_research/web/models/database.py +294 -0
  62. local_deep_research-0.2.0/src/local_deep_research/web/models/settings.py +94 -0
  63. local_deep_research-0.2.0/src/local_deep_research/web/routes/api_routes.py +559 -0
  64. local_deep_research-0.2.0/src/local_deep_research/web/routes/history_routes.py +354 -0
  65. local_deep_research-0.2.0/src/local_deep_research/web/routes/research_routes.py +715 -0
  66. local_deep_research-0.2.0/src/local_deep_research/web/routes/settings_routes.py +1592 -0
  67. local_deep_research-0.2.0/src/local_deep_research/web/services/research_service.py +947 -0
  68. local_deep_research-0.2.0/src/local_deep_research/web/services/resource_service.py +149 -0
  69. local_deep_research-0.2.0/src/local_deep_research/web/services/settings_manager.py +669 -0
  70. local_deep_research-0.2.0/src/local_deep_research/web/services/settings_service.py +187 -0
  71. local_deep_research-0.2.0/src/local_deep_research/web/services/socket_service.py +210 -0
  72. local_deep_research-0.2.0/src/local_deep_research/web/static/css/custom_dropdown.css +277 -0
  73. local_deep_research-0.2.0/src/local_deep_research/web/static/css/settings.css +1223 -0
  74. {local_deep_research-0.1.25 → local_deep_research-0.2.0}/src/local_deep_research/web/static/css/styles.css +525 -48
  75. local_deep_research-0.2.0/src/local_deep_research/web/static/js/components/custom_dropdown.js +428 -0
  76. local_deep_research-0.2.0/src/local_deep_research/web/static/js/components/detail.js +348 -0
  77. local_deep_research-0.2.0/src/local_deep_research/web/static/js/components/fallback/formatting.js +122 -0
  78. local_deep_research-0.2.0/src/local_deep_research/web/static/js/components/fallback/ui.js +215 -0
  79. local_deep_research-0.2.0/src/local_deep_research/web/static/js/components/history.js +487 -0
  80. local_deep_research-0.2.0/src/local_deep_research/web/static/js/components/logpanel.js +949 -0
  81. local_deep_research-0.2.0/src/local_deep_research/web/static/js/components/progress.js +1107 -0
  82. local_deep_research-0.2.0/src/local_deep_research/web/static/js/components/research.js +1865 -0
  83. local_deep_research-0.2.0/src/local_deep_research/web/static/js/components/results.js +766 -0
  84. local_deep_research-0.2.0/src/local_deep_research/web/static/js/components/settings.js +3981 -0
  85. local_deep_research-0.2.0/src/local_deep_research/web/static/js/components/settings_sync.js +106 -0
  86. local_deep_research-0.2.0/src/local_deep_research/web/static/js/main.js +226 -0
  87. local_deep_research-0.2.0/src/local_deep_research/web/static/js/services/api.js +253 -0
  88. local_deep_research-0.2.0/src/local_deep_research/web/static/js/services/audio.js +31 -0
  89. local_deep_research-0.2.0/src/local_deep_research/web/static/js/services/formatting.js +119 -0
  90. local_deep_research-0.2.0/src/local_deep_research/web/static/js/services/pdf.js +622 -0
  91. local_deep_research-0.2.0/src/local_deep_research/web/static/js/services/socket.js +882 -0
  92. local_deep_research-0.2.0/src/local_deep_research/web/static/js/services/ui.js +546 -0
  93. local_deep_research-0.2.0/src/local_deep_research/web/templates/base.html +72 -0
  94. local_deep_research-0.2.0/src/local_deep_research/web/templates/components/custom_dropdown.html +47 -0
  95. local_deep_research-0.2.0/src/local_deep_research/web/templates/components/log_panel.html +32 -0
  96. local_deep_research-0.2.0/src/local_deep_research/web/templates/components/mobile_nav.html +22 -0
  97. local_deep_research-0.2.0/src/local_deep_research/web/templates/components/settings_form.html +299 -0
  98. local_deep_research-0.2.0/src/local_deep_research/web/templates/components/sidebar.html +21 -0
  99. local_deep_research-0.2.0/src/local_deep_research/web/templates/pages/details.html +73 -0
  100. local_deep_research-0.2.0/src/local_deep_research/web/templates/pages/history.html +51 -0
  101. local_deep_research-0.2.0/src/local_deep_research/web/templates/pages/progress.html +57 -0
  102. local_deep_research-0.2.0/src/local_deep_research/web/templates/pages/research.html +139 -0
  103. local_deep_research-0.2.0/src/local_deep_research/web/templates/pages/results.html +59 -0
  104. local_deep_research-0.2.0/src/local_deep_research/web/templates/settings_dashboard.html +93 -0
  105. local_deep_research-0.2.0/src/local_deep_research/web/utils/formatters.py +76 -0
  106. local_deep_research-0.2.0/src/local_deep_research/web_search_engines/__init__.py +0 -0
  107. local_deep_research-0.2.0/src/local_deep_research/web_search_engines/engines/__init__.py +0 -0
  108. {local_deep_research-0.1.25 → local_deep_research-0.2.0}/src/local_deep_research/web_search_engines/engines/full_search.py +18 -16
  109. {local_deep_research-0.1.25 → local_deep_research-0.2.0}/src/local_deep_research/web_search_engines/engines/meta_search_engine.py +182 -131
  110. {local_deep_research-0.1.25 → local_deep_research-0.2.0}/src/local_deep_research/web_search_engines/engines/search_engine_arxiv.py +224 -139
  111. {local_deep_research-0.1.25 → local_deep_research-0.2.0}/src/local_deep_research/web_search_engines/engines/search_engine_brave.py +88 -71
  112. {local_deep_research-0.1.25 → local_deep_research-0.2.0}/src/local_deep_research/web_search_engines/engines/search_engine_ddg.py +48 -39
  113. {local_deep_research-0.1.25 → local_deep_research-0.2.0}/src/local_deep_research/web_search_engines/engines/search_engine_github.py +415 -204
  114. {local_deep_research-0.1.25 → local_deep_research-0.2.0}/src/local_deep_research/web_search_engines/engines/search_engine_google_pse.py +123 -90
  115. {local_deep_research-0.1.25 → local_deep_research-0.2.0}/src/local_deep_research/web_search_engines/engines/search_engine_guardian.py +210 -157
  116. {local_deep_research-0.1.25 → local_deep_research-0.2.0}/src/local_deep_research/web_search_engines/engines/search_engine_local.py +532 -369
  117. {local_deep_research-0.1.25 → local_deep_research-0.2.0}/src/local_deep_research/web_search_engines/engines/search_engine_local_all.py +42 -36
  118. {local_deep_research-0.1.25 → local_deep_research-0.2.0}/src/local_deep_research/web_search_engines/engines/search_engine_pubmed.py +358 -266
  119. {local_deep_research-0.1.25 → local_deep_research-0.2.0}/src/local_deep_research/web_search_engines/engines/search_engine_searxng.py +211 -159
  120. {local_deep_research-0.1.25 → local_deep_research-0.2.0}/src/local_deep_research/web_search_engines/engines/search_engine_semantic_scholar.py +213 -170
  121. {local_deep_research-0.1.25 → local_deep_research-0.2.0}/src/local_deep_research/web_search_engines/engines/search_engine_serpapi.py +84 -68
  122. {local_deep_research-0.1.25 → local_deep_research-0.2.0}/src/local_deep_research/web_search_engines/engines/search_engine_wayback.py +186 -154
  123. {local_deep_research-0.1.25 → local_deep_research-0.2.0}/src/local_deep_research/web_search_engines/engines/search_engine_wikipedia.py +115 -77
  124. local_deep_research-0.2.0/src/local_deep_research/web_search_engines/search_engine_base.py +271 -0
  125. {local_deep_research-0.1.25 → local_deep_research-0.2.0}/src/local_deep_research/web_search_engines/search_engine_factory.py +192 -102
  126. {local_deep_research-0.1.25 → local_deep_research-0.2.0}/src/local_deep_research/web_search_engines/search_engines_config.py +22 -15
  127. local_deep_research-0.2.0/tests/__init__.py +0 -0
  128. local_deep_research-0.2.0/tests/download_stuff_for_local_test.py +29 -0
  129. local_deep_research-0.2.0/tests/searxng/test_searxng_instance.py +39 -0
  130. local_deep_research-0.2.0/tests/searxng/test_searxng_integration.py +16 -0
  131. {local_deep_research-0.1.25 → local_deep_research-0.2.0}/tests/test_google_pse.py +84 -57
  132. local_deep_research-0.1.25/MANIFEST.in +0 -5
  133. local_deep_research-0.1.25/PKG-INFO +0 -460
  134. local_deep_research-0.1.25/setup.cfg +0 -4
  135. local_deep_research-0.1.25/src/local_deep_research/__init__.py +0 -33
  136. local_deep_research-0.1.25/src/local_deep_research/defaults/.env.template +0 -12
  137. local_deep_research-0.1.25/src/local_deep_research/defaults/llm_config.py +0 -338
  138. local_deep_research-0.1.25/src/local_deep_research/main.py +0 -113
  139. local_deep_research-0.1.25/src/local_deep_research/search_system.py +0 -306
  140. local_deep_research-0.1.25/src/local_deep_research/utilties/search_utilities.py +0 -114
  141. local_deep_research-0.1.25/src/local_deep_research/web/app.py +0 -1746
  142. local_deep_research-0.1.25/src/local_deep_research/web/static/js/app.js +0 -3763
  143. local_deep_research-0.1.25/src/local_deep_research/web/templates/api_keys_config.html +0 -82
  144. local_deep_research-0.1.25/src/local_deep_research/web/templates/collections_config.html +0 -90
  145. local_deep_research-0.1.25/src/local_deep_research/web/templates/index.html +0 -348
  146. local_deep_research-0.1.25/src/local_deep_research/web/templates/llm_config.html +0 -120
  147. local_deep_research-0.1.25/src/local_deep_research/web/templates/main_config.html +0 -89
  148. local_deep_research-0.1.25/src/local_deep_research/web/templates/search_engines_config.html +0 -154
  149. local_deep_research-0.1.25/src/local_deep_research/web/templates/settings.html +0 -519
  150. local_deep_research-0.1.25/src/local_deep_research/web/templates/settings_dashboard.html +0 -207
  151. local_deep_research-0.1.25/src/local_deep_research/web_search_engines/search_engine_base.py +0 -196
  152. local_deep_research-0.1.25/src/local_deep_research.egg-info/SOURCES.txt +0 -66
  153. local_deep_research-0.1.25/src/local_deep_research.egg-info/dependency_links.txt +0 -1
  154. local_deep_research-0.1.25/src/local_deep_research.egg-info/entry_points.txt +0 -3
  155. local_deep_research-0.1.25/src/local_deep_research.egg-info/requires.txt +0 -33
  156. local_deep_research-0.1.25/src/local_deep_research.egg-info/top_level.txt +0 -1
  157. {local_deep_research-0.1.25 → local_deep_research-0.2.0}/LICENSE +0 -0
  158. {local_deep_research-0.1.25/src/local_deep_research/utilties → local_deep_research-0.2.0/src/local_deep_research/config}/__init__.py +0 -0
  159. {local_deep_research-0.1.25 → local_deep_research-0.2.0}/src/local_deep_research/defaults/local_collections.toml +0 -0
  160. {local_deep_research-0.1.25/src/local_deep_research/web_search_engines → local_deep_research-0.2.0/src/local_deep_research/utilities}/__init__.py +0 -0
  161. {local_deep_research-0.1.25 → local_deep_research-0.2.0}/src/local_deep_research/web/static/sounds/README.md +0 -0
  162. {local_deep_research-0.1.25 → local_deep_research-0.2.0}/src/local_deep_research/web/static/sounds/error.mp3 +0 -0
  163. {local_deep_research-0.1.25 → local_deep_research-0.2.0}/src/local_deep_research/web/static/sounds/success.mp3 +0 -0
  164. {local_deep_research-0.1.25/src/local_deep_research/web_search_engines/engines → local_deep_research-0.2.0/src/local_deep_research/web/utils}/__init__.py +0 -0
@@ -1,38 +1,36 @@
1
- Metadata-Version: 2.4
1
+ Metadata-Version: 2.1
2
2
  Name: local-deep-research
3
- Version: 0.1.25
3
+ Version: 0.2.0
4
4
  Summary: AI-powered research assistant with deep, iterative analysis using LLMs and web searches
5
- Author-email: LearningCircuit <185559241+LearningCircuit@users.noreply.github.com>, HashedViking <6432677+HashedViking@users.noreply.github.com>
5
+ Author-Email: LearningCircuit <185559241+LearningCircuit@users.noreply.github.com>, HashedViking <6432677+HashedViking@users.noreply.github.com>
6
6
  License: MIT License
7
-
8
- Copyright (c) 2025 LearningCircuit
9
-
10
- Permission is hereby granted, free of charge, to any person obtaining a copy
11
- of this software and associated documentation files (the "Software"), to deal
12
- in the Software without restriction, including without limitation the rights
13
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
14
- copies of the Software, and to permit persons to whom the Software is
15
- furnished to do so, subject to the following conditions:
16
-
17
- The above copyright notice and this permission notice shall be included in all
18
- copies or substantial portions of the Software.
19
-
20
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
21
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
22
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
23
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
24
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
25
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
26
- SOFTWARE.
27
-
28
- Project-URL: Homepage, https://github.com/LearningCircuit/local-deep-research
29
- Project-URL: Bug Tracker, https://github.com/LearningCircuit/local-deep-research/issues
7
+
8
+ Copyright (c) 2025 LearningCircuit
9
+
10
+ Permission is hereby granted, free of charge, to any person obtaining a copy
11
+ of this software and associated documentation files (the "Software"), to deal
12
+ in the Software without restriction, including without limitation the rights
13
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
14
+ copies of the Software, and to permit persons to whom the Software is
15
+ furnished to do so, subject to the following conditions:
16
+
17
+ The above copyright notice and this permission notice shall be included in all
18
+ copies or substantial portions of the Software.
19
+
20
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
21
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
22
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
23
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
24
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
25
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
26
+ SOFTWARE.
27
+
30
28
  Classifier: Programming Language :: Python :: 3
31
29
  Classifier: License :: OSI Approved :: MIT License
32
30
  Classifier: Operating System :: OS Independent
33
- Requires-Python: >=3.8
34
- Description-Content-Type: text/markdown
35
- License-File: LICENSE
31
+ Project-URL: Homepage, https://github.com/LearningCircuit/local-deep-research
32
+ Project-URL: Bug Tracker, https://github.com/LearningCircuit/local-deep-research/issues
33
+ Requires-Python: >=3.10
36
34
  Requires-Dist: langchain>=0.3.18
37
35
  Requires-Dist: langchain-community>=0.3.17
38
36
  Requires-Dist: langchain-core>=0.3.34
@@ -45,7 +43,7 @@ Requires-Dist: typing_extensions>=4.12.2
45
43
  Requires-Dist: justext
46
44
  Requires-Dist: playwright
47
45
  Requires-Dist: beautifulsoup4
48
- Requires-Dist: flask>=2.0.1
46
+ Requires-Dist: flask>=3.1.0
49
47
  Requires-Dist: flask-cors>=3.0.10
50
48
  Requires-Dist: flask-socketio>=5.1.1
51
49
  Requires-Dist: sqlalchemy>=1.4.23
@@ -66,10 +64,52 @@ Requires-Dist: lxml>=4.9.2
66
64
  Requires-Dist: pdfplumber>=0.9.0
67
65
  Requires-Dist: unstructured>=0.10.0
68
66
  Requires-Dist: google-search-results
69
- Dynamic: license-file
67
+ Requires-Dist: importlib-resources>=6.5.2
68
+ Requires-Dist: setuptools>=78.1.0
69
+ Requires-Dist: flask-wtf>=1.2.2
70
+ Description-Content-Type: text/markdown
70
71
 
71
72
  # Local Deep Research
72
73
 
74
+ ## Features
75
+
76
+ - 🔍 **Advanced Research Capabilities**
77
+ - Automated deep research with intelligent follow-up questions
78
+ - Proper inline citation and source verification
79
+ - Multi-iteration analysis for comprehensive coverage
80
+ - Full webpage content analysis (not just snippets)
81
+
82
+ - 🤖 **Flexible LLM Support**
83
+ - Local AI processing with Ollama models
84
+ - Cloud LLM support (Claude, GPT)
85
+ - Supports all Langchain models
86
+ - Configurable model selection based on needs
87
+
88
+ - 📊 **Rich Output Options**
89
+ - Detailed research findings with proper citations
90
+ - Well-structured comprehensive research reports
91
+ - Quick summaries for rapid insights
92
+ - Source tracking and verification
93
+
94
+ - 🔒 **Privacy-Focused**
95
+ - Runs entirely on your machine when using local models
96
+ - Configurable search settings
97
+ - Transparent data handling
98
+
99
+ - 🌐 **Enhanced Search Integration**
100
+ - **Auto-selection of search sources**: The "auto" search engine intelligently analyzes your query and selects the most appropriate search engine
101
+ - Multiple search engines including Wikipedia, arXiv, PubMed, Semantic Scholar, and more
102
+ - **Local RAG search for private documents** - search your own documents with vector embeddings
103
+ - Full webpage content retrieval and intelligent filtering
104
+
105
+ - 🎓 **Academic & Scientific Integration**
106
+ - Direct integration with PubMed, arXiv, Wikipedia, Semantic Scholar
107
+ - Properly formatted citations from academic sources
108
+ - Report structure suitable for literature reviews
109
+ - Cross-disciplinary synthesis of information
110
+
111
+ | [Reddit](https://www.reddit.com/r/LocalDeepResearch/) | [Discord](https://discord.gg/ttcqQeFcJ3) |
112
+
73
113
  A powerful AI-powered research assistant that performs deep, iterative analysis using multiple LLMs and web searches. The system can be run locally for privacy or configured to use cloud-based LLMs for enhanced capabilities.
74
114
 
75
115
  <div align="center">
@@ -80,13 +120,15 @@ A powerful AI-powered research assistant that performs deep, iterative analysis
80
120
  </a>
81
121
  </div>
82
122
 
123
+ **Important for non-academic searches:** For normal web searches you will need SearXNG or an API key to a search provider like brave search or SerpAPI. The free searches are mostly academic search engines and will not help you for most normal searches.
124
+
83
125
  ## Windows Installation
84
126
 
85
- Download the [Windows Installer](https://github.com/LearningCircuit/local-deep-research/releases/download/v0.1.0/LocalDeepResearch_Setup.exe) for easy one-click installation.
127
+ Download the [Windows Installer](https://github.com/LearningCircuit/local-deep-research/releases/download/v0.2.0/LocalDeepResearch_Setup.exe) for easy one-click installation.
86
128
 
87
- **Requires Ollama or other model preinstalled.**
88
- Download from https://ollama.ai and then pull a model
89
- ollama pull gemma3:12b
129
+ **Requires Ollama (or other model provider configured in .env).**
130
+ Download from https://ollama.ai and then pull a model
131
+ ollama pull gemma3:12b
90
132
 
91
133
  ## Quick Start (not required if installed with windows installer)
92
134
 
@@ -135,6 +177,16 @@ For comprehensive Docker setup information, see:
135
177
  - [Docker Usage Guide](https://github.com/LearningCircuit/local-deep-research/blob/main/docs/docker-usage-readme.md)
136
178
  - [Docker Compose Guide](https://github.com/LearningCircuit/local-deep-research/blob/main/docs/docker-compose-guide.md)
137
179
 
180
+ ## Migrating from Version 0.1.0
181
+
182
+ If you just upgraded from 0.1.0, and you want to preserve your configuration,
183
+ you will need to manually migrate from the old config files to the new settings
184
+ database:
185
+
186
+ ```bash
187
+ python -m local_deep_research.migrate_db
188
+ ```
189
+
138
190
  ## Programmatic Access
139
191
 
140
192
  Local Deep Research now provides a simple API for programmatic access to its research capabilities:
@@ -144,7 +196,7 @@ import os
144
196
  # Set environment variables to control the LLM
145
197
  os.environ["LDR_LLM__MODEL"] = "mistral" # Specify model name
146
198
 
147
- from local_deep_research import quick_summary, generate_report, analyze_documents
199
+ from local_deep_research import quick_summary, generate_report
148
200
 
149
201
  # Generate a quick research summary with custom parameters
150
202
  results = quick_summary(
@@ -160,44 +212,6 @@ print(results["summary"])
160
212
 
161
213
  These functions provide flexible options for customizing the search parameters, iterations, and output formats. For more examples, see the [programmatic access tutorial](https://github.com/LearningCircuit/local-deep-research/blob/main/examples/programmatic_access.ipynb).
162
214
 
163
-
164
- ## Features
165
-
166
- - 🔍 **Advanced Research Capabilities**
167
- - Automated deep research with intelligent follow-up questions
168
- - Proper inline citation and source verification
169
- - Multi-iteration analysis for comprehensive coverage
170
- - Full webpage content analysis (not just snippets)
171
-
172
- - 🤖 **Flexible LLM Support**
173
- - Local AI processing with Ollama models
174
- - Cloud LLM support (Claude, GPT)
175
- - Supports all Langchain models
176
- - Configurable model selection based on needs
177
-
178
- - 📊 **Rich Output Options**
179
- - Detailed research findings with proper citations
180
- - Well-structured comprehensive research reports
181
- - Quick summaries for rapid insights
182
- - Source tracking and verification
183
-
184
- - 🔒 **Privacy-Focused**
185
- - Runs entirely on your machine when using local models
186
- - Configurable search settings
187
- - Transparent data handling
188
-
189
- - 🌐 **Enhanced Search Integration**
190
- - **Auto-selection of search sources**: The "auto" search engine intelligently analyzes your query and selects the most appropriate search engine
191
- - Multiple search engines including Wikipedia, arXiv, PubMed, Semantic Scholar, and more
192
- - **Local RAG search for private documents** - search your own documents with vector embeddings
193
- - Full webpage content retrieval and intelligent filtering
194
-
195
- - 🎓 **Academic & Scientific Integration**
196
- - Direct integration with PubMed, arXiv, Wikipedia, Semantic Scholar
197
- - Properly formatted citations from academic sources
198
- - Report structure suitable for literature reviews
199
- - Cross-disciplinary synthesis of information
200
-
201
215
  ## Configuration System
202
216
 
203
217
  The package automatically creates and manages configuration files in your user directory:
@@ -212,7 +226,6 @@ When you first run the tool, it creates these configuration files:
212
226
  | File | Purpose |
213
227
  |------|---------|
214
228
  | `settings.toml` | General settings for research, web interface, and search |
215
- | `llm_config.py` | Advanced LLM configuration (rarely needs modification) |
216
229
  | `search_engines.toml` | Define and configure search engines |
217
230
  | `local_collections.toml` | Configure local document collections for RAG |
218
231
  | `.env` | Environment variables for configuration (recommended for API keys) |
@@ -225,7 +238,7 @@ The system supports multiple LLM providers:
225
238
 
226
239
  ### Local Models (via Ollama)
227
240
 
228
- 1. [Install Ollama](https://ollama.ai)
241
+ 1. [Install Ollama](https://ollama.ai)
229
242
  2. Pull a model: `ollama pull gemma3:12b` (recommended model)
230
243
  3. Ollama runs on port 11434 by default
231
244
 
@@ -239,13 +252,11 @@ ANTHROPIC_API_KEY=your-api-key-here # For Claude models
239
252
  OPENAI_API_KEY=your-openai-key-here # For GPT models
240
253
  OPENAI_ENDPOINT_API_KEY=your-key-here # For OpenRouter or similar services
241
254
 
242
- # Set your preferred LLM provider and model (no need to edit llm_config.py)
255
+ # Set your preferred LLM provider and model
243
256
  LDR_LLM__PROVIDER=ollama # Options: ollama, openai, anthropic, etc.
244
257
  LDR_LLM__MODEL=gemma3:12b # Model name to use
245
258
  ```
246
259
 
247
- > **Important:** In most cases, you don't need to modify the `llm_config.py` file. Simply set the `LDR_LLM__PROVIDER` and `LDR_LLM__MODEL` environment variables to use your preferred model.
248
-
249
260
  ### Supported LLM Providers
250
261
 
251
262
  The system supports multiple LLM providers:
@@ -379,10 +390,11 @@ LDR_SEARCH__QUESTIONS_PER_ITERATION=2
379
390
  The web interface offers several features:
380
391
 
381
392
  - **Dashboard**: Start and manage research queries
382
- - **Real-time Updates**: Track research progress
393
+ - **Real-time Updates**: Track research progress with improved logging
383
394
  - **Research History**: Access past queries
384
395
  - **PDF Export**: Download reports
385
396
  - **Research Management**: Terminate processes or delete records
397
+ - **Enhanced Settings Panel**: New unified settings UI with improved organization
386
398
 
387
399
  ## Command Line Interface
388
400
 
@@ -393,17 +405,19 @@ The CLI version allows you to:
393
405
  3. View results directly in the terminal
394
406
  4. Save reports automatically to the configured output directory
395
407
 
396
- ## Development Setup
408
+ ## Development Environment
397
409
 
398
- If you want to develop or modify the package, you can install it in development mode:
410
+ This project now uses PDM for dependency management. To set up a development environment:
399
411
 
400
412
  ```bash
401
- # Clone the repository
402
- git clone https://github.com/LearningCircuit/local-deep-research.git
403
- cd local-deep-research
413
+ # Install PDM if you don't have it
414
+ pip install pdm
415
+
416
+ # Install dependencies
417
+ pdm install --no-self
404
418
 
405
- # Install in development mode
406
- pip install -e .
419
+ # Activate the environment
420
+ pdm venv activate
407
421
  ```
408
422
 
409
423
  You can run the application directly using Python module syntax:
@@ -416,9 +430,82 @@ python -m local_deep_research.web.app
416
430
  python -m local_deep_research.main
417
431
  ```
418
432
 
433
+ For more information, see the [development documentation](docs/developing.md).
434
+
435
+ ## Unified Database
436
+
437
+ The application now uses a single unified database (`ldr.db`) for all settings and history, making configuration management simpler and more reliable.
438
+
439
+ ### Migration from v0.1.x
440
+
441
+ If you have existing data in legacy databases from v0.1.x, the application will automatically migrate your data when you first run v0.2.0.
442
+
443
+ ## Contributing
444
+
445
+ Contributions are welcome! Please feel free to submit a Pull Request.
446
+
447
+ ### Development Setup with PDM
448
+
449
+ This project uses PDM for dependency management. Here's how to set up your development environment:
450
+
451
+ ```bash
452
+ # Install PDM if you don't have it
453
+ pip install pdm
454
+
455
+ # Clone the repository
456
+ git clone https://github.com/LearningCircuit/local-deep-research.git
457
+ cd local-deep-research
458
+
459
+ # Install dependencies including dev dependencies
460
+ pdm install --no-self
461
+
462
+ # Set up pre-commit hooks
463
+ pdm run pre-commit install
464
+ pdm run pre-commit install-hooks
465
+
466
+ # Activate the virtual environment
467
+ pdm venv activate
468
+ ```
469
+
470
+ #### Common PDM Commands
471
+
472
+ ```bash
473
+ # Run linting checks
474
+ pdm run flake8
475
+ pdm run black .
476
+
477
+ # Run tests (when available)
478
+ pdm run pytest
479
+
480
+ # Add a new dependency
481
+ pdm add package-name
482
+
483
+ # Add a development dependency
484
+ pdm add -dG dev package-name
485
+ ```
486
+
487
+ ### Contributing Process
488
+
489
+ 1. Fork the repository
490
+ 2. Create your feature branch (`git checkout -b feature/AmazingFeature`)
491
+ 3. Make your changes
492
+ 4. Run linting checks to ensure code quality
493
+ 5. Commit your changes (`git commit -m 'Add some AmazingFeature'`)
494
+ 6. Push to the branch (`git push origin feature/AmazingFeature`)
495
+ 7. **Important:** Open a Pull Request against the `dev` branch, not the `main` branch
496
+
497
+ We prefer all pull requests to be submitted against the `dev` branch for easier testing and integration before releasing to the main branch.
498
+
499
+ ### Getting Help
500
+
501
+ Join our [Discord server](https://discord.gg/ttcqQeFcJ3) if you're planning to contribute. Let us know about your plans - we're always happy to guide new contributors and discuss feature ideas!
502
+
419
503
  ## Community & Support
420
504
 
421
- Join our [Discord server](https://discord.gg/2E6gYU2Z) to exchange ideas, discuss usage patterns, and share research approaches.
505
+ Join our [Discord server](https://discord.gg/ttcqQeFcJ3) to exchange ideas, discuss usage patterns, and
506
+ share research approaches.
507
+
508
+ Follow our [Subreddit](https://www.reddit.com/r/LocalDeepResearch/) for announcements, updates, and feature highlights.
422
509
 
423
510
  ## License
424
511
 
@@ -445,16 +532,3 @@ This project is licensed under the MIT License.
445
532
  > - [Support arXiv](https://arxiv.org/about/give)
446
533
  > - [Donate to DuckDuckGo](https://duckduckgo.com/donations)
447
534
  > - [Support PubMed/NCBI](https://www.nlm.nih.gov/pubs/donations/donations.html)
448
-
449
- ## Contributing
450
-
451
- Contributions are welcome! Please feel free to submit a Pull Request.
452
-
453
- 1. Fork the repository
454
- 2. Create your feature branch (`git checkout -b feature/AmazingFeature`)
455
- 3. Make your changes
456
- 4. Commit your changes (`git commit -m 'Add some AmazingFeature'`)
457
- 5. Push to the branch (`git push origin feature/AmazingFeature`)
458
- 6. **Important:** Open a Pull Request against the `dev` branch, not the `main` branch
459
-
460
- We prefer all pull requests to be submitted against the `dev` branch for easier testing and integration before releasing to the main branch.