local-deep-research 0.1.26__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.
- {local_deep_research-0.1.26/src/local_deep_research.egg-info → local_deep_research-0.2.0}/PKG-INFO +177 -97
- {local_deep_research-0.1.26 → local_deep_research-0.2.0}/README.md +145 -66
- {local_deep_research-0.1.26 → local_deep_research-0.2.0}/pyproject.toml +39 -13
- local_deep_research-0.2.0/src/local_deep_research/__init__.py +34 -0
- local_deep_research-0.2.0/src/local_deep_research/__main__.py +16 -0
- local_deep_research-0.2.0/src/local_deep_research/advanced_search_system/__init__.py +7 -0
- local_deep_research-0.2.0/src/local_deep_research/advanced_search_system/filters/__init__.py +8 -0
- local_deep_research-0.2.0/src/local_deep_research/advanced_search_system/filters/base_filter.py +38 -0
- local_deep_research-0.2.0/src/local_deep_research/advanced_search_system/filters/cross_engine_filter.py +200 -0
- local_deep_research-0.2.0/src/local_deep_research/advanced_search_system/findings/base_findings.py +81 -0
- local_deep_research-0.2.0/src/local_deep_research/advanced_search_system/findings/repository.py +452 -0
- local_deep_research-0.2.0/src/local_deep_research/advanced_search_system/knowledge/__init__.py +1 -0
- local_deep_research-0.2.0/src/local_deep_research/advanced_search_system/knowledge/base_knowledge.py +151 -0
- local_deep_research-0.2.0/src/local_deep_research/advanced_search_system/knowledge/standard_knowledge.py +159 -0
- local_deep_research-0.2.0/src/local_deep_research/advanced_search_system/questions/__init__.py +1 -0
- local_deep_research-0.2.0/src/local_deep_research/advanced_search_system/questions/base_question.py +64 -0
- local_deep_research-0.2.0/src/local_deep_research/advanced_search_system/questions/decomposition_question.py +445 -0
- local_deep_research-0.2.0/src/local_deep_research/advanced_search_system/questions/standard_question.py +119 -0
- local_deep_research-0.2.0/src/local_deep_research/advanced_search_system/repositories/__init__.py +7 -0
- local_deep_research-0.2.0/src/local_deep_research/advanced_search_system/strategies/__init__.py +1 -0
- local_deep_research-0.2.0/src/local_deep_research/advanced_search_system/strategies/base_strategy.py +118 -0
- local_deep_research-0.2.0/src/local_deep_research/advanced_search_system/strategies/iterdrag_strategy.py +450 -0
- local_deep_research-0.2.0/src/local_deep_research/advanced_search_system/strategies/parallel_search_strategy.py +312 -0
- local_deep_research-0.2.0/src/local_deep_research/advanced_search_system/strategies/rapid_search_strategy.py +270 -0
- local_deep_research-0.2.0/src/local_deep_research/advanced_search_system/strategies/standard_strategy.py +300 -0
- local_deep_research-0.2.0/src/local_deep_research/advanced_search_system/tools/__init__.py +1 -0
- local_deep_research-0.2.0/src/local_deep_research/advanced_search_system/tools/base_tool.py +100 -0
- local_deep_research-0.2.0/src/local_deep_research/advanced_search_system/tools/knowledge_tools/__init__.py +1 -0
- local_deep_research-0.2.0/src/local_deep_research/advanced_search_system/tools/question_tools/__init__.py +1 -0
- local_deep_research-0.2.0/src/local_deep_research/advanced_search_system/tools/search_tools/__init__.py +1 -0
- {local_deep_research-0.1.26 → local_deep_research-0.2.0}/src/local_deep_research/api/__init__.py +5 -5
- {local_deep_research-0.1.26 → local_deep_research-0.2.0}/src/local_deep_research/api/research_functions.py +96 -84
- local_deep_research-0.2.0/src/local_deep_research/app.py +8 -0
- {local_deep_research-0.1.26 → local_deep_research-0.2.0}/src/local_deep_research/citation_handler.py +25 -16
- local_deep_research-0.1.26/src/local_deep_research/config.py → local_deep_research-0.2.0/src/local_deep_research/config/config_files.py +102 -110
- local_deep_research-0.2.0/src/local_deep_research/config/llm_config.py +472 -0
- local_deep_research-0.2.0/src/local_deep_research/config/search_config.py +77 -0
- {local_deep_research-0.1.26 → local_deep_research-0.2.0}/src/local_deep_research/defaults/__init__.py +10 -5
- {local_deep_research-0.1.26 → local_deep_research-0.2.0}/src/local_deep_research/defaults/main.toml +2 -2
- {local_deep_research-0.1.26 → local_deep_research-0.2.0}/src/local_deep_research/defaults/search_engines.toml +60 -34
- local_deep_research-0.2.0/src/local_deep_research/main.py +215 -0
- local_deep_research-0.2.0/src/local_deep_research/migrate_db.py +147 -0
- {local_deep_research-0.1.26 → local_deep_research-0.2.0}/src/local_deep_research/report_generator.py +72 -44
- local_deep_research-0.2.0/src/local_deep_research/search_system.py +170 -0
- local_deep_research-0.2.0/src/local_deep_research/setup_data_dir.py +35 -0
- local_deep_research-0.2.0/src/local_deep_research/test_migration.py +178 -0
- local_deep_research-0.2.0/src/local_deep_research/utilities/db_utils.py +49 -0
- {local_deep_research-0.1.26/src/local_deep_research/utilties → local_deep_research-0.2.0/src/local_deep_research/utilities}/enums.py +2 -2
- {local_deep_research-0.1.26/src/local_deep_research/utilties → local_deep_research-0.2.0/src/local_deep_research/utilities}/llm_utils.py +63 -29
- local_deep_research-0.2.0/src/local_deep_research/utilities/search_utilities.py +242 -0
- {local_deep_research-0.1.26/src/local_deep_research/utilties → local_deep_research-0.2.0/src/local_deep_research/utilities}/setup_utils.py +4 -2
- {local_deep_research-0.1.26 → local_deep_research-0.2.0}/src/local_deep_research/web/__init__.py +0 -1
- local_deep_research-0.2.0/src/local_deep_research/web/app.py +123 -0
- local_deep_research-0.2.0/src/local_deep_research/web/app_factory.py +289 -0
- local_deep_research-0.2.0/src/local_deep_research/web/database/README.md +70 -0
- local_deep_research-0.2.0/src/local_deep_research/web/database/migrate_to_ldr_db.py +289 -0
- local_deep_research-0.2.0/src/local_deep_research/web/database/migrations.py +447 -0
- local_deep_research-0.2.0/src/local_deep_research/web/database/models.py +117 -0
- local_deep_research-0.2.0/src/local_deep_research/web/database/schema_upgrade.py +107 -0
- local_deep_research-0.2.0/src/local_deep_research/web/models/database.py +294 -0
- local_deep_research-0.2.0/src/local_deep_research/web/models/settings.py +94 -0
- local_deep_research-0.2.0/src/local_deep_research/web/routes/api_routes.py +559 -0
- local_deep_research-0.2.0/src/local_deep_research/web/routes/history_routes.py +354 -0
- local_deep_research-0.2.0/src/local_deep_research/web/routes/research_routes.py +715 -0
- local_deep_research-0.2.0/src/local_deep_research/web/routes/settings_routes.py +1592 -0
- local_deep_research-0.2.0/src/local_deep_research/web/services/research_service.py +947 -0
- local_deep_research-0.2.0/src/local_deep_research/web/services/resource_service.py +149 -0
- local_deep_research-0.2.0/src/local_deep_research/web/services/settings_manager.py +669 -0
- local_deep_research-0.2.0/src/local_deep_research/web/services/settings_service.py +187 -0
- local_deep_research-0.2.0/src/local_deep_research/web/services/socket_service.py +210 -0
- local_deep_research-0.2.0/src/local_deep_research/web/static/css/custom_dropdown.css +277 -0
- local_deep_research-0.2.0/src/local_deep_research/web/static/css/settings.css +1223 -0
- {local_deep_research-0.1.26 → local_deep_research-0.2.0}/src/local_deep_research/web/static/css/styles.css +525 -48
- local_deep_research-0.2.0/src/local_deep_research/web/static/js/components/custom_dropdown.js +428 -0
- local_deep_research-0.2.0/src/local_deep_research/web/static/js/components/detail.js +348 -0
- local_deep_research-0.2.0/src/local_deep_research/web/static/js/components/fallback/formatting.js +122 -0
- local_deep_research-0.2.0/src/local_deep_research/web/static/js/components/fallback/ui.js +215 -0
- local_deep_research-0.2.0/src/local_deep_research/web/static/js/components/history.js +487 -0
- local_deep_research-0.2.0/src/local_deep_research/web/static/js/components/logpanel.js +949 -0
- local_deep_research-0.2.0/src/local_deep_research/web/static/js/components/progress.js +1107 -0
- local_deep_research-0.2.0/src/local_deep_research/web/static/js/components/research.js +1865 -0
- local_deep_research-0.2.0/src/local_deep_research/web/static/js/components/results.js +766 -0
- local_deep_research-0.2.0/src/local_deep_research/web/static/js/components/settings.js +3981 -0
- local_deep_research-0.2.0/src/local_deep_research/web/static/js/components/settings_sync.js +106 -0
- local_deep_research-0.2.0/src/local_deep_research/web/static/js/main.js +226 -0
- local_deep_research-0.2.0/src/local_deep_research/web/static/js/services/api.js +253 -0
- local_deep_research-0.2.0/src/local_deep_research/web/static/js/services/audio.js +31 -0
- local_deep_research-0.2.0/src/local_deep_research/web/static/js/services/formatting.js +119 -0
- local_deep_research-0.2.0/src/local_deep_research/web/static/js/services/pdf.js +622 -0
- local_deep_research-0.2.0/src/local_deep_research/web/static/js/services/socket.js +882 -0
- local_deep_research-0.2.0/src/local_deep_research/web/static/js/services/ui.js +546 -0
- local_deep_research-0.2.0/src/local_deep_research/web/templates/base.html +72 -0
- local_deep_research-0.2.0/src/local_deep_research/web/templates/components/custom_dropdown.html +47 -0
- local_deep_research-0.2.0/src/local_deep_research/web/templates/components/log_panel.html +32 -0
- local_deep_research-0.2.0/src/local_deep_research/web/templates/components/mobile_nav.html +22 -0
- local_deep_research-0.2.0/src/local_deep_research/web/templates/components/settings_form.html +299 -0
- local_deep_research-0.2.0/src/local_deep_research/web/templates/components/sidebar.html +21 -0
- local_deep_research-0.2.0/src/local_deep_research/web/templates/pages/details.html +73 -0
- local_deep_research-0.2.0/src/local_deep_research/web/templates/pages/history.html +51 -0
- local_deep_research-0.2.0/src/local_deep_research/web/templates/pages/progress.html +57 -0
- local_deep_research-0.2.0/src/local_deep_research/web/templates/pages/research.html +139 -0
- local_deep_research-0.2.0/src/local_deep_research/web/templates/pages/results.html +59 -0
- local_deep_research-0.2.0/src/local_deep_research/web/templates/settings_dashboard.html +93 -0
- local_deep_research-0.2.0/src/local_deep_research/web/utils/formatters.py +76 -0
- local_deep_research-0.2.0/src/local_deep_research/web_search_engines/__init__.py +0 -0
- local_deep_research-0.2.0/src/local_deep_research/web_search_engines/engines/__init__.py +0 -0
- {local_deep_research-0.1.26 → local_deep_research-0.2.0}/src/local_deep_research/web_search_engines/engines/full_search.py +18 -16
- {local_deep_research-0.1.26 → local_deep_research-0.2.0}/src/local_deep_research/web_search_engines/engines/meta_search_engine.py +182 -131
- {local_deep_research-0.1.26 → local_deep_research-0.2.0}/src/local_deep_research/web_search_engines/engines/search_engine_arxiv.py +224 -139
- {local_deep_research-0.1.26 → local_deep_research-0.2.0}/src/local_deep_research/web_search_engines/engines/search_engine_brave.py +88 -71
- {local_deep_research-0.1.26 → local_deep_research-0.2.0}/src/local_deep_research/web_search_engines/engines/search_engine_ddg.py +48 -39
- {local_deep_research-0.1.26 → local_deep_research-0.2.0}/src/local_deep_research/web_search_engines/engines/search_engine_github.py +415 -204
- {local_deep_research-0.1.26 → local_deep_research-0.2.0}/src/local_deep_research/web_search_engines/engines/search_engine_google_pse.py +123 -90
- {local_deep_research-0.1.26 → local_deep_research-0.2.0}/src/local_deep_research/web_search_engines/engines/search_engine_guardian.py +210 -157
- {local_deep_research-0.1.26 → local_deep_research-0.2.0}/src/local_deep_research/web_search_engines/engines/search_engine_local.py +532 -369
- {local_deep_research-0.1.26 → local_deep_research-0.2.0}/src/local_deep_research/web_search_engines/engines/search_engine_local_all.py +42 -36
- {local_deep_research-0.1.26 → local_deep_research-0.2.0}/src/local_deep_research/web_search_engines/engines/search_engine_pubmed.py +358 -266
- {local_deep_research-0.1.26 → local_deep_research-0.2.0}/src/local_deep_research/web_search_engines/engines/search_engine_searxng.py +211 -159
- {local_deep_research-0.1.26 → local_deep_research-0.2.0}/src/local_deep_research/web_search_engines/engines/search_engine_semantic_scholar.py +213 -170
- {local_deep_research-0.1.26 → local_deep_research-0.2.0}/src/local_deep_research/web_search_engines/engines/search_engine_serpapi.py +84 -68
- {local_deep_research-0.1.26 → local_deep_research-0.2.0}/src/local_deep_research/web_search_engines/engines/search_engine_wayback.py +186 -154
- {local_deep_research-0.1.26 → local_deep_research-0.2.0}/src/local_deep_research/web_search_engines/engines/search_engine_wikipedia.py +115 -77
- local_deep_research-0.2.0/src/local_deep_research/web_search_engines/search_engine_base.py +271 -0
- {local_deep_research-0.1.26 → local_deep_research-0.2.0}/src/local_deep_research/web_search_engines/search_engine_factory.py +192 -102
- {local_deep_research-0.1.26 → local_deep_research-0.2.0}/src/local_deep_research/web_search_engines/search_engines_config.py +22 -15
- local_deep_research-0.2.0/tests/__init__.py +0 -0
- local_deep_research-0.2.0/tests/download_stuff_for_local_test.py +29 -0
- local_deep_research-0.2.0/tests/searxng/test_searxng_instance.py +39 -0
- local_deep_research-0.2.0/tests/searxng/test_searxng_integration.py +16 -0
- {local_deep_research-0.1.26 → local_deep_research-0.2.0}/tests/test_google_pse.py +84 -57
- local_deep_research-0.1.26/MANIFEST.in +0 -5
- local_deep_research-0.1.26/PKG-INFO +0 -454
- local_deep_research-0.1.26/setup.cfg +0 -4
- local_deep_research-0.1.26/src/local_deep_research/__init__.py +0 -33
- local_deep_research-0.1.26/src/local_deep_research/defaults/llm_config.py +0 -338
- local_deep_research-0.1.26/src/local_deep_research/main.py +0 -113
- local_deep_research-0.1.26/src/local_deep_research/search_system.py +0 -306
- local_deep_research-0.1.26/src/local_deep_research/utilties/search_utilities.py +0 -114
- local_deep_research-0.1.26/src/local_deep_research/web/app.py +0 -1746
- local_deep_research-0.1.26/src/local_deep_research/web/static/js/app.js +0 -3763
- local_deep_research-0.1.26/src/local_deep_research/web/templates/api_keys_config.html +0 -82
- local_deep_research-0.1.26/src/local_deep_research/web/templates/collections_config.html +0 -90
- local_deep_research-0.1.26/src/local_deep_research/web/templates/index.html +0 -348
- local_deep_research-0.1.26/src/local_deep_research/web/templates/llm_config.html +0 -120
- local_deep_research-0.1.26/src/local_deep_research/web/templates/main_config.html +0 -89
- local_deep_research-0.1.26/src/local_deep_research/web/templates/search_engines_config.html +0 -154
- local_deep_research-0.1.26/src/local_deep_research/web/templates/settings.html +0 -519
- local_deep_research-0.1.26/src/local_deep_research/web/templates/settings_dashboard.html +0 -207
- local_deep_research-0.1.26/src/local_deep_research/web_search_engines/search_engine_base.py +0 -196
- local_deep_research-0.1.26/src/local_deep_research.egg-info/SOURCES.txt +0 -66
- local_deep_research-0.1.26/src/local_deep_research.egg-info/dependency_links.txt +0 -1
- local_deep_research-0.1.26/src/local_deep_research.egg-info/entry_points.txt +0 -3
- local_deep_research-0.1.26/src/local_deep_research.egg-info/requires.txt +0 -33
- local_deep_research-0.1.26/src/local_deep_research.egg-info/top_level.txt +0 -1
- {local_deep_research-0.1.26 → local_deep_research-0.2.0}/LICENSE +0 -0
- {local_deep_research-0.1.26/src/local_deep_research/utilties → local_deep_research-0.2.0/src/local_deep_research/config}/__init__.py +0 -0
- {local_deep_research-0.1.26 → local_deep_research-0.2.0}/src/local_deep_research/defaults/.env.template +0 -0
- {local_deep_research-0.1.26 → local_deep_research-0.2.0}/src/local_deep_research/defaults/local_collections.toml +0 -0
- {local_deep_research-0.1.26/src/local_deep_research/web_search_engines → local_deep_research-0.2.0/src/local_deep_research/utilities}/__init__.py +0 -0
- {local_deep_research-0.1.26 → local_deep_research-0.2.0}/src/local_deep_research/web/static/sounds/README.md +0 -0
- {local_deep_research-0.1.26 → local_deep_research-0.2.0}/src/local_deep_research/web/static/sounds/error.mp3 +0 -0
- {local_deep_research-0.1.26 → local_deep_research-0.2.0}/src/local_deep_research/web/static/sounds/success.mp3 +0 -0
- {local_deep_research-0.1.26/src/local_deep_research/web_search_engines/engines → local_deep_research-0.2.0/src/local_deep_research/web/utils}/__init__.py +0 -0
{local_deep_research-0.1.26/src/local_deep_research.egg-info → local_deep_research-0.2.0}/PKG-INFO
RENAMED
@@ -1,38 +1,36 @@
|
|
1
|
-
Metadata-Version: 2.
|
1
|
+
Metadata-Version: 2.1
|
2
2
|
Name: local-deep-research
|
3
|
-
Version: 0.
|
3
|
+
Version: 0.2.0
|
4
4
|
Summary: AI-powered research assistant with deep, iterative analysis using LLMs and web searches
|
5
|
-
Author-
|
5
|
+
Author-Email: LearningCircuit <185559241+LearningCircuit@users.noreply.github.com>, HashedViking <6432677+HashedViking@users.noreply.github.com>
|
6
6
|
License: MIT License
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
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
|
-
|
34
|
-
|
35
|
-
|
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>=
|
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
|
-
|
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,7 +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
|
+
|
125
|
+
## Windows Installation
|
83
126
|
|
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.
|
128
|
+
|
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
|
84
132
|
|
85
133
|
## Quick Start (not required if installed with windows installer)
|
86
134
|
|
@@ -129,6 +177,16 @@ For comprehensive Docker setup information, see:
|
|
129
177
|
- [Docker Usage Guide](https://github.com/LearningCircuit/local-deep-research/blob/main/docs/docker-usage-readme.md)
|
130
178
|
- [Docker Compose Guide](https://github.com/LearningCircuit/local-deep-research/blob/main/docs/docker-compose-guide.md)
|
131
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
|
+
|
132
190
|
## Programmatic Access
|
133
191
|
|
134
192
|
Local Deep Research now provides a simple API for programmatic access to its research capabilities:
|
@@ -138,7 +196,7 @@ import os
|
|
138
196
|
# Set environment variables to control the LLM
|
139
197
|
os.environ["LDR_LLM__MODEL"] = "mistral" # Specify model name
|
140
198
|
|
141
|
-
from local_deep_research import quick_summary, generate_report
|
199
|
+
from local_deep_research import quick_summary, generate_report
|
142
200
|
|
143
201
|
# Generate a quick research summary with custom parameters
|
144
202
|
results = quick_summary(
|
@@ -154,44 +212,6 @@ print(results["summary"])
|
|
154
212
|
|
155
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).
|
156
214
|
|
157
|
-
|
158
|
-
## Features
|
159
|
-
|
160
|
-
- 🔍 **Advanced Research Capabilities**
|
161
|
-
- Automated deep research with intelligent follow-up questions
|
162
|
-
- Proper inline citation and source verification
|
163
|
-
- Multi-iteration analysis for comprehensive coverage
|
164
|
-
- Full webpage content analysis (not just snippets)
|
165
|
-
|
166
|
-
- 🤖 **Flexible LLM Support**
|
167
|
-
- Local AI processing with Ollama models
|
168
|
-
- Cloud LLM support (Claude, GPT)
|
169
|
-
- Supports all Langchain models
|
170
|
-
- Configurable model selection based on needs
|
171
|
-
|
172
|
-
- 📊 **Rich Output Options**
|
173
|
-
- Detailed research findings with proper citations
|
174
|
-
- Well-structured comprehensive research reports
|
175
|
-
- Quick summaries for rapid insights
|
176
|
-
- Source tracking and verification
|
177
|
-
|
178
|
-
- 🔒 **Privacy-Focused**
|
179
|
-
- Runs entirely on your machine when using local models
|
180
|
-
- Configurable search settings
|
181
|
-
- Transparent data handling
|
182
|
-
|
183
|
-
- 🌐 **Enhanced Search Integration**
|
184
|
-
- **Auto-selection of search sources**: The "auto" search engine intelligently analyzes your query and selects the most appropriate search engine
|
185
|
-
- Multiple search engines including Wikipedia, arXiv, PubMed, Semantic Scholar, and more
|
186
|
-
- **Local RAG search for private documents** - search your own documents with vector embeddings
|
187
|
-
- Full webpage content retrieval and intelligent filtering
|
188
|
-
|
189
|
-
- 🎓 **Academic & Scientific Integration**
|
190
|
-
- Direct integration with PubMed, arXiv, Wikipedia, Semantic Scholar
|
191
|
-
- Properly formatted citations from academic sources
|
192
|
-
- Report structure suitable for literature reviews
|
193
|
-
- Cross-disciplinary synthesis of information
|
194
|
-
|
195
215
|
## Configuration System
|
196
216
|
|
197
217
|
The package automatically creates and manages configuration files in your user directory:
|
@@ -206,7 +226,6 @@ When you first run the tool, it creates these configuration files:
|
|
206
226
|
| File | Purpose |
|
207
227
|
|------|---------|
|
208
228
|
| `settings.toml` | General settings for research, web interface, and search |
|
209
|
-
| `llm_config.py` | Advanced LLM configuration (rarely needs modification) |
|
210
229
|
| `search_engines.toml` | Define and configure search engines |
|
211
230
|
| `local_collections.toml` | Configure local document collections for RAG |
|
212
231
|
| `.env` | Environment variables for configuration (recommended for API keys) |
|
@@ -219,7 +238,7 @@ The system supports multiple LLM providers:
|
|
219
238
|
|
220
239
|
### Local Models (via Ollama)
|
221
240
|
|
222
|
-
1. [Install Ollama](https://ollama.ai)
|
241
|
+
1. [Install Ollama](https://ollama.ai)
|
223
242
|
2. Pull a model: `ollama pull gemma3:12b` (recommended model)
|
224
243
|
3. Ollama runs on port 11434 by default
|
225
244
|
|
@@ -233,13 +252,11 @@ ANTHROPIC_API_KEY=your-api-key-here # For Claude models
|
|
233
252
|
OPENAI_API_KEY=your-openai-key-here # For GPT models
|
234
253
|
OPENAI_ENDPOINT_API_KEY=your-key-here # For OpenRouter or similar services
|
235
254
|
|
236
|
-
# Set your preferred LLM provider and model
|
255
|
+
# Set your preferred LLM provider and model
|
237
256
|
LDR_LLM__PROVIDER=ollama # Options: ollama, openai, anthropic, etc.
|
238
257
|
LDR_LLM__MODEL=gemma3:12b # Model name to use
|
239
258
|
```
|
240
259
|
|
241
|
-
> **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.
|
242
|
-
|
243
260
|
### Supported LLM Providers
|
244
261
|
|
245
262
|
The system supports multiple LLM providers:
|
@@ -373,10 +390,11 @@ LDR_SEARCH__QUESTIONS_PER_ITERATION=2
|
|
373
390
|
The web interface offers several features:
|
374
391
|
|
375
392
|
- **Dashboard**: Start and manage research queries
|
376
|
-
- **Real-time Updates**: Track research progress
|
393
|
+
- **Real-time Updates**: Track research progress with improved logging
|
377
394
|
- **Research History**: Access past queries
|
378
395
|
- **PDF Export**: Download reports
|
379
396
|
- **Research Management**: Terminate processes or delete records
|
397
|
+
- **Enhanced Settings Panel**: New unified settings UI with improved organization
|
380
398
|
|
381
399
|
## Command Line Interface
|
382
400
|
|
@@ -387,17 +405,19 @@ The CLI version allows you to:
|
|
387
405
|
3. View results directly in the terminal
|
388
406
|
4. Save reports automatically to the configured output directory
|
389
407
|
|
390
|
-
## Development
|
408
|
+
## Development Environment
|
391
409
|
|
392
|
-
|
410
|
+
This project now uses PDM for dependency management. To set up a development environment:
|
393
411
|
|
394
412
|
```bash
|
395
|
-
#
|
396
|
-
|
397
|
-
|
413
|
+
# Install PDM if you don't have it
|
414
|
+
pip install pdm
|
415
|
+
|
416
|
+
# Install dependencies
|
417
|
+
pdm install --no-self
|
398
418
|
|
399
|
-
#
|
400
|
-
|
419
|
+
# Activate the environment
|
420
|
+
pdm venv activate
|
401
421
|
```
|
402
422
|
|
403
423
|
You can run the application directly using Python module syntax:
|
@@ -410,9 +430,82 @@ python -m local_deep_research.web.app
|
|
410
430
|
python -m local_deep_research.main
|
411
431
|
```
|
412
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
|
+
|
413
503
|
## Community & Support
|
414
504
|
|
415
|
-
Join our [Discord server](https://discord.gg/
|
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.
|
416
509
|
|
417
510
|
## License
|
418
511
|
|
@@ -439,16 +532,3 @@ This project is licensed under the MIT License.
|
|
439
532
|
> - [Support arXiv](https://arxiv.org/about/give)
|
440
533
|
> - [Donate to DuckDuckGo](https://duckduckgo.com/donations)
|
441
534
|
> - [Support PubMed/NCBI](https://www.nlm.nih.gov/pubs/donations/donations.html)
|
442
|
-
|
443
|
-
## Contributing
|
444
|
-
|
445
|
-
Contributions are welcome! Please feel free to submit a Pull Request.
|
446
|
-
|
447
|
-
1. Fork the repository
|
448
|
-
2. Create your feature branch (`git checkout -b feature/AmazingFeature`)
|
449
|
-
3. Make your changes
|
450
|
-
4. Commit your changes (`git commit -m 'Add some AmazingFeature'`)
|
451
|
-
5. Push to the branch (`git push origin feature/AmazingFeature`)
|
452
|
-
6. **Important:** Open a Pull Request against the `dev` branch, not the `main` branch
|
453
|
-
|
454
|
-
We prefer all pull requests to be submitted against the `dev` branch for easier testing and integration before releasing to the main branch.
|
@@ -1,5 +1,44 @@
|
|
1
1
|
# Local Deep Research
|
2
2
|
|
3
|
+
## Features
|
4
|
+
|
5
|
+
- 🔍 **Advanced Research Capabilities**
|
6
|
+
- Automated deep research with intelligent follow-up questions
|
7
|
+
- Proper inline citation and source verification
|
8
|
+
- Multi-iteration analysis for comprehensive coverage
|
9
|
+
- Full webpage content analysis (not just snippets)
|
10
|
+
|
11
|
+
- 🤖 **Flexible LLM Support**
|
12
|
+
- Local AI processing with Ollama models
|
13
|
+
- Cloud LLM support (Claude, GPT)
|
14
|
+
- Supports all Langchain models
|
15
|
+
- Configurable model selection based on needs
|
16
|
+
|
17
|
+
- 📊 **Rich Output Options**
|
18
|
+
- Detailed research findings with proper citations
|
19
|
+
- Well-structured comprehensive research reports
|
20
|
+
- Quick summaries for rapid insights
|
21
|
+
- Source tracking and verification
|
22
|
+
|
23
|
+
- 🔒 **Privacy-Focused**
|
24
|
+
- Runs entirely on your machine when using local models
|
25
|
+
- Configurable search settings
|
26
|
+
- Transparent data handling
|
27
|
+
|
28
|
+
- 🌐 **Enhanced Search Integration**
|
29
|
+
- **Auto-selection of search sources**: The "auto" search engine intelligently analyzes your query and selects the most appropriate search engine
|
30
|
+
- Multiple search engines including Wikipedia, arXiv, PubMed, Semantic Scholar, and more
|
31
|
+
- **Local RAG search for private documents** - search your own documents with vector embeddings
|
32
|
+
- Full webpage content retrieval and intelligent filtering
|
33
|
+
|
34
|
+
- 🎓 **Academic & Scientific Integration**
|
35
|
+
- Direct integration with PubMed, arXiv, Wikipedia, Semantic Scholar
|
36
|
+
- Properly formatted citations from academic sources
|
37
|
+
- Report structure suitable for literature reviews
|
38
|
+
- Cross-disciplinary synthesis of information
|
39
|
+
|
40
|
+
| [Reddit](https://www.reddit.com/r/LocalDeepResearch/) | [Discord](https://discord.gg/ttcqQeFcJ3) |
|
41
|
+
|
3
42
|
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.
|
4
43
|
|
5
44
|
<div align="center">
|
@@ -10,7 +49,15 @@ A powerful AI-powered research assistant that performs deep, iterative analysis
|
|
10
49
|
</a>
|
11
50
|
</div>
|
12
51
|
|
52
|
+
**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.
|
53
|
+
|
54
|
+
## Windows Installation
|
13
55
|
|
56
|
+
Download the [Windows Installer](https://github.com/LearningCircuit/local-deep-research/releases/download/v0.2.0/LocalDeepResearch_Setup.exe) for easy one-click installation.
|
57
|
+
|
58
|
+
**Requires Ollama (or other model provider configured in .env).**
|
59
|
+
Download from https://ollama.ai and then pull a model
|
60
|
+
ollama pull gemma3:12b
|
14
61
|
|
15
62
|
## Quick Start (not required if installed with windows installer)
|
16
63
|
|
@@ -59,6 +106,16 @@ For comprehensive Docker setup information, see:
|
|
59
106
|
- [Docker Usage Guide](https://github.com/LearningCircuit/local-deep-research/blob/main/docs/docker-usage-readme.md)
|
60
107
|
- [Docker Compose Guide](https://github.com/LearningCircuit/local-deep-research/blob/main/docs/docker-compose-guide.md)
|
61
108
|
|
109
|
+
## Migrating from Version 0.1.0
|
110
|
+
|
111
|
+
If you just upgraded from 0.1.0, and you want to preserve your configuration,
|
112
|
+
you will need to manually migrate from the old config files to the new settings
|
113
|
+
database:
|
114
|
+
|
115
|
+
```bash
|
116
|
+
python -m local_deep_research.migrate_db
|
117
|
+
```
|
118
|
+
|
62
119
|
## Programmatic Access
|
63
120
|
|
64
121
|
Local Deep Research now provides a simple API for programmatic access to its research capabilities:
|
@@ -68,7 +125,7 @@ import os
|
|
68
125
|
# Set environment variables to control the LLM
|
69
126
|
os.environ["LDR_LLM__MODEL"] = "mistral" # Specify model name
|
70
127
|
|
71
|
-
from local_deep_research import quick_summary, generate_report
|
128
|
+
from local_deep_research import quick_summary, generate_report
|
72
129
|
|
73
130
|
# Generate a quick research summary with custom parameters
|
74
131
|
results = quick_summary(
|
@@ -84,44 +141,6 @@ print(results["summary"])
|
|
84
141
|
|
85
142
|
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).
|
86
143
|
|
87
|
-
|
88
|
-
## Features
|
89
|
-
|
90
|
-
- 🔍 **Advanced Research Capabilities**
|
91
|
-
- Automated deep research with intelligent follow-up questions
|
92
|
-
- Proper inline citation and source verification
|
93
|
-
- Multi-iteration analysis for comprehensive coverage
|
94
|
-
- Full webpage content analysis (not just snippets)
|
95
|
-
|
96
|
-
- 🤖 **Flexible LLM Support**
|
97
|
-
- Local AI processing with Ollama models
|
98
|
-
- Cloud LLM support (Claude, GPT)
|
99
|
-
- Supports all Langchain models
|
100
|
-
- Configurable model selection based on needs
|
101
|
-
|
102
|
-
- 📊 **Rich Output Options**
|
103
|
-
- Detailed research findings with proper citations
|
104
|
-
- Well-structured comprehensive research reports
|
105
|
-
- Quick summaries for rapid insights
|
106
|
-
- Source tracking and verification
|
107
|
-
|
108
|
-
- 🔒 **Privacy-Focused**
|
109
|
-
- Runs entirely on your machine when using local models
|
110
|
-
- Configurable search settings
|
111
|
-
- Transparent data handling
|
112
|
-
|
113
|
-
- 🌐 **Enhanced Search Integration**
|
114
|
-
- **Auto-selection of search sources**: The "auto" search engine intelligently analyzes your query and selects the most appropriate search engine
|
115
|
-
- Multiple search engines including Wikipedia, arXiv, PubMed, Semantic Scholar, and more
|
116
|
-
- **Local RAG search for private documents** - search your own documents with vector embeddings
|
117
|
-
- Full webpage content retrieval and intelligent filtering
|
118
|
-
|
119
|
-
- 🎓 **Academic & Scientific Integration**
|
120
|
-
- Direct integration with PubMed, arXiv, Wikipedia, Semantic Scholar
|
121
|
-
- Properly formatted citations from academic sources
|
122
|
-
- Report structure suitable for literature reviews
|
123
|
-
- Cross-disciplinary synthesis of information
|
124
|
-
|
125
144
|
## Configuration System
|
126
145
|
|
127
146
|
The package automatically creates and manages configuration files in your user directory:
|
@@ -136,7 +155,6 @@ When you first run the tool, it creates these configuration files:
|
|
136
155
|
| File | Purpose |
|
137
156
|
|------|---------|
|
138
157
|
| `settings.toml` | General settings for research, web interface, and search |
|
139
|
-
| `llm_config.py` | Advanced LLM configuration (rarely needs modification) |
|
140
158
|
| `search_engines.toml` | Define and configure search engines |
|
141
159
|
| `local_collections.toml` | Configure local document collections for RAG |
|
142
160
|
| `.env` | Environment variables for configuration (recommended for API keys) |
|
@@ -149,7 +167,7 @@ The system supports multiple LLM providers:
|
|
149
167
|
|
150
168
|
### Local Models (via Ollama)
|
151
169
|
|
152
|
-
1. [Install Ollama](https://ollama.ai)
|
170
|
+
1. [Install Ollama](https://ollama.ai)
|
153
171
|
2. Pull a model: `ollama pull gemma3:12b` (recommended model)
|
154
172
|
3. Ollama runs on port 11434 by default
|
155
173
|
|
@@ -163,13 +181,11 @@ ANTHROPIC_API_KEY=your-api-key-here # For Claude models
|
|
163
181
|
OPENAI_API_KEY=your-openai-key-here # For GPT models
|
164
182
|
OPENAI_ENDPOINT_API_KEY=your-key-here # For OpenRouter or similar services
|
165
183
|
|
166
|
-
# Set your preferred LLM provider and model
|
184
|
+
# Set your preferred LLM provider and model
|
167
185
|
LDR_LLM__PROVIDER=ollama # Options: ollama, openai, anthropic, etc.
|
168
186
|
LDR_LLM__MODEL=gemma3:12b # Model name to use
|
169
187
|
```
|
170
188
|
|
171
|
-
> **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.
|
172
|
-
|
173
189
|
### Supported LLM Providers
|
174
190
|
|
175
191
|
The system supports multiple LLM providers:
|
@@ -303,10 +319,11 @@ LDR_SEARCH__QUESTIONS_PER_ITERATION=2
|
|
303
319
|
The web interface offers several features:
|
304
320
|
|
305
321
|
- **Dashboard**: Start and manage research queries
|
306
|
-
- **Real-time Updates**: Track research progress
|
322
|
+
- **Real-time Updates**: Track research progress with improved logging
|
307
323
|
- **Research History**: Access past queries
|
308
324
|
- **PDF Export**: Download reports
|
309
325
|
- **Research Management**: Terminate processes or delete records
|
326
|
+
- **Enhanced Settings Panel**: New unified settings UI with improved organization
|
310
327
|
|
311
328
|
## Command Line Interface
|
312
329
|
|
@@ -317,17 +334,19 @@ The CLI version allows you to:
|
|
317
334
|
3. View results directly in the terminal
|
318
335
|
4. Save reports automatically to the configured output directory
|
319
336
|
|
320
|
-
## Development
|
337
|
+
## Development Environment
|
321
338
|
|
322
|
-
|
339
|
+
This project now uses PDM for dependency management. To set up a development environment:
|
323
340
|
|
324
341
|
```bash
|
325
|
-
#
|
326
|
-
|
327
|
-
|
342
|
+
# Install PDM if you don't have it
|
343
|
+
pip install pdm
|
344
|
+
|
345
|
+
# Install dependencies
|
346
|
+
pdm install --no-self
|
328
347
|
|
329
|
-
#
|
330
|
-
|
348
|
+
# Activate the environment
|
349
|
+
pdm venv activate
|
331
350
|
```
|
332
351
|
|
333
352
|
You can run the application directly using Python module syntax:
|
@@ -340,9 +359,82 @@ python -m local_deep_research.web.app
|
|
340
359
|
python -m local_deep_research.main
|
341
360
|
```
|
342
361
|
|
362
|
+
For more information, see the [development documentation](docs/developing.md).
|
363
|
+
|
364
|
+
## Unified Database
|
365
|
+
|
366
|
+
The application now uses a single unified database (`ldr.db`) for all settings and history, making configuration management simpler and more reliable.
|
367
|
+
|
368
|
+
### Migration from v0.1.x
|
369
|
+
|
370
|
+
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.
|
371
|
+
|
372
|
+
## Contributing
|
373
|
+
|
374
|
+
Contributions are welcome! Please feel free to submit a Pull Request.
|
375
|
+
|
376
|
+
### Development Setup with PDM
|
377
|
+
|
378
|
+
This project uses PDM for dependency management. Here's how to set up your development environment:
|
379
|
+
|
380
|
+
```bash
|
381
|
+
# Install PDM if you don't have it
|
382
|
+
pip install pdm
|
383
|
+
|
384
|
+
# Clone the repository
|
385
|
+
git clone https://github.com/LearningCircuit/local-deep-research.git
|
386
|
+
cd local-deep-research
|
387
|
+
|
388
|
+
# Install dependencies including dev dependencies
|
389
|
+
pdm install --no-self
|
390
|
+
|
391
|
+
# Set up pre-commit hooks
|
392
|
+
pdm run pre-commit install
|
393
|
+
pdm run pre-commit install-hooks
|
394
|
+
|
395
|
+
# Activate the virtual environment
|
396
|
+
pdm venv activate
|
397
|
+
```
|
398
|
+
|
399
|
+
#### Common PDM Commands
|
400
|
+
|
401
|
+
```bash
|
402
|
+
# Run linting checks
|
403
|
+
pdm run flake8
|
404
|
+
pdm run black .
|
405
|
+
|
406
|
+
# Run tests (when available)
|
407
|
+
pdm run pytest
|
408
|
+
|
409
|
+
# Add a new dependency
|
410
|
+
pdm add package-name
|
411
|
+
|
412
|
+
# Add a development dependency
|
413
|
+
pdm add -dG dev package-name
|
414
|
+
```
|
415
|
+
|
416
|
+
### Contributing Process
|
417
|
+
|
418
|
+
1. Fork the repository
|
419
|
+
2. Create your feature branch (`git checkout -b feature/AmazingFeature`)
|
420
|
+
3. Make your changes
|
421
|
+
4. Run linting checks to ensure code quality
|
422
|
+
5. Commit your changes (`git commit -m 'Add some AmazingFeature'`)
|
423
|
+
6. Push to the branch (`git push origin feature/AmazingFeature`)
|
424
|
+
7. **Important:** Open a Pull Request against the `dev` branch, not the `main` branch
|
425
|
+
|
426
|
+
We prefer all pull requests to be submitted against the `dev` branch for easier testing and integration before releasing to the main branch.
|
427
|
+
|
428
|
+
### Getting Help
|
429
|
+
|
430
|
+
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!
|
431
|
+
|
343
432
|
## Community & Support
|
344
433
|
|
345
|
-
Join our [Discord server](https://discord.gg/
|
434
|
+
Join our [Discord server](https://discord.gg/ttcqQeFcJ3) to exchange ideas, discuss usage patterns, and
|
435
|
+
share research approaches.
|
436
|
+
|
437
|
+
Follow our [Subreddit](https://www.reddit.com/r/LocalDeepResearch/) for announcements, updates, and feature highlights.
|
346
438
|
|
347
439
|
## License
|
348
440
|
|
@@ -369,16 +461,3 @@ This project is licensed under the MIT License.
|
|
369
461
|
> - [Support arXiv](https://arxiv.org/about/give)
|
370
462
|
> - [Donate to DuckDuckGo](https://duckduckgo.com/donations)
|
371
463
|
> - [Support PubMed/NCBI](https://www.nlm.nih.gov/pubs/donations/donations.html)
|
372
|
-
|
373
|
-
## Contributing
|
374
|
-
|
375
|
-
Contributions are welcome! Please feel free to submit a Pull Request.
|
376
|
-
|
377
|
-
1. Fork the repository
|
378
|
-
2. Create your feature branch (`git checkout -b feature/AmazingFeature`)
|
379
|
-
3. Make your changes
|
380
|
-
4. Commit your changes (`git commit -m 'Add some AmazingFeature'`)
|
381
|
-
5. Push to the branch (`git push origin feature/AmazingFeature`)
|
382
|
-
6. **Important:** Open a Pull Request against the `dev` branch, not the `main` branch
|
383
|
-
|
384
|
-
We prefer all pull requests to be submitted against the `dev` branch for easier testing and integration before releasing to the main branch.
|