sirchmunk 0.0.1.post1__tar.gz → 0.0.2__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.
- {sirchmunk-0.0.1.post1 → sirchmunk-0.0.2}/PKG-INFO +124 -9
- {sirchmunk-0.0.1.post1 → sirchmunk-0.0.2}/README.md +121 -8
- {sirchmunk-0.0.1.post1 → sirchmunk-0.0.2}/requirements/core.txt +2 -0
- sirchmunk-0.0.2/src/sirchmunk/api/chat.py +1123 -0
- sirchmunk-0.0.2/src/sirchmunk/api/components/history_storage.py +402 -0
- sirchmunk-0.0.2/src/sirchmunk/api/components/monitor_tracker.py +518 -0
- sirchmunk-0.0.2/src/sirchmunk/api/components/settings_storage.py +353 -0
- sirchmunk-0.0.2/src/sirchmunk/api/history.py +254 -0
- sirchmunk-0.0.2/src/sirchmunk/api/knowledge.py +411 -0
- sirchmunk-0.0.2/src/sirchmunk/api/main.py +120 -0
- sirchmunk-0.0.2/src/sirchmunk/api/monitor.py +219 -0
- sirchmunk-0.0.2/src/sirchmunk/api/run_server.py +54 -0
- sirchmunk-0.0.2/src/sirchmunk/api/search.py +230 -0
- sirchmunk-0.0.2/src/sirchmunk/api/settings.py +309 -0
- sirchmunk-0.0.2/src/sirchmunk/api/tools.py +315 -0
- sirchmunk-0.0.2/src/sirchmunk/cli/__init__.py +11 -0
- sirchmunk-0.0.2/src/sirchmunk/cli/cli.py +789 -0
- {sirchmunk-0.0.1.post1 → sirchmunk-0.0.2}/src/sirchmunk/learnings/knowledge_base.py +5 -2
- {sirchmunk-0.0.1.post1 → sirchmunk-0.0.2}/src/sirchmunk/llm/prompts.py +12 -1
- {sirchmunk-0.0.1.post1 → sirchmunk-0.0.2}/src/sirchmunk/retrieve/text_retriever.py +186 -2
- sirchmunk-0.0.2/src/sirchmunk/scan/__init__.py +1 -0
- {sirchmunk-0.0.1.post1 → sirchmunk-0.0.2}/src/sirchmunk/scan/file_scanner.py +2 -2
- sirchmunk-0.0.2/src/sirchmunk/scheduler/__init__.py +0 -0
- {sirchmunk-0.0.1.post1 → sirchmunk-0.0.2}/src/sirchmunk/schema/knowledge.py +119 -35
- {sirchmunk-0.0.1.post1 → sirchmunk-0.0.2}/src/sirchmunk/search.py +384 -26
- {sirchmunk-0.0.1.post1 → sirchmunk-0.0.2}/src/sirchmunk/storage/__init__.py +2 -2
- sirchmunk-0.0.1.post1/src/sirchmunk/storage/knowledge_manager.py → sirchmunk-0.0.2/src/sirchmunk/storage/knowledge_storage.py +265 -60
- sirchmunk-0.0.2/src/sirchmunk/utils/constants.py +17 -0
- sirchmunk-0.0.2/src/sirchmunk/utils/embedding_util.py +217 -0
- {sirchmunk-0.0.1.post1 → sirchmunk-0.0.2}/src/sirchmunk/utils/tokenizer_util.py +36 -1
- sirchmunk-0.0.2/src/sirchmunk/version.py +1 -0
- {sirchmunk-0.0.1.post1 → sirchmunk-0.0.2}/src/sirchmunk.egg-info/PKG-INFO +124 -9
- {sirchmunk-0.0.1.post1 → sirchmunk-0.0.2}/src/sirchmunk.egg-info/SOURCES.txt +26 -3
- {sirchmunk-0.0.1.post1 → sirchmunk-0.0.2}/src/sirchmunk.egg-info/requires.txt +2 -0
- sirchmunk-0.0.2/src/sirchmunk.egg-info/top_level.txt +2 -0
- sirchmunk-0.0.2/src/sirchmunk_mcp/__init__.py +25 -0
- sirchmunk-0.0.2/src/sirchmunk_mcp/cli.py +478 -0
- sirchmunk-0.0.2/src/sirchmunk_mcp/config.py +276 -0
- sirchmunk-0.0.2/src/sirchmunk_mcp/server.py +355 -0
- sirchmunk-0.0.2/src/sirchmunk_mcp/service.py +327 -0
- sirchmunk-0.0.2/src/sirchmunk_mcp/setup.py +15 -0
- sirchmunk-0.0.2/src/sirchmunk_mcp/tools.py +410 -0
- sirchmunk-0.0.1.post1/setup.py +0 -5
- sirchmunk-0.0.1.post1/src/sirchmunk/utils/constants.py +0 -15
- sirchmunk-0.0.1.post1/src/sirchmunk/version.py +0 -1
- sirchmunk-0.0.1.post1/src/sirchmunk.egg-info/top_level.txt +0 -1
- {sirchmunk-0.0.1.post1 → sirchmunk-0.0.2}/LICENSE +0 -0
- {sirchmunk-0.0.1.post1 → sirchmunk-0.0.2}/pyproject.toml +0 -0
- {sirchmunk-0.0.1.post1 → sirchmunk-0.0.2}/requirements/docs.txt +0 -0
- {sirchmunk-0.0.1.post1 → sirchmunk-0.0.2}/requirements/tests.txt +0 -0
- {sirchmunk-0.0.1.post1 → sirchmunk-0.0.2}/requirements/web.txt +0 -0
- {sirchmunk-0.0.1.post1 → sirchmunk-0.0.2}/setup.cfg +0 -0
- {sirchmunk-0.0.1.post1 → sirchmunk-0.0.2}/src/sirchmunk/__init__.py +0 -0
- {sirchmunk-0.0.1.post1/src/sirchmunk/learnings → sirchmunk-0.0.2/src/sirchmunk/api}/__init__.py +0 -0
- {sirchmunk-0.0.1.post1/src/sirchmunk/scheduler → sirchmunk-0.0.2/src/sirchmunk/api/components}/__init__.py +0 -0
- {sirchmunk-0.0.1.post1 → sirchmunk-0.0.2}/src/sirchmunk/base.py +0 -0
- {sirchmunk-0.0.1.post1 → sirchmunk-0.0.2}/src/sirchmunk/insight/__init__.py +0 -0
- {sirchmunk-0.0.1.post1 → sirchmunk-0.0.2}/src/sirchmunk/insight/text_insights.py +0 -0
- {sirchmunk-0.0.1.post1/src/sirchmunk/retrieve → sirchmunk-0.0.2/src/sirchmunk/learnings}/__init__.py +0 -0
- {sirchmunk-0.0.1.post1 → sirchmunk-0.0.2}/src/sirchmunk/learnings/evidence_processor.py +0 -0
- {sirchmunk-0.0.1.post1 → sirchmunk-0.0.2}/src/sirchmunk/llm/__init__.py +0 -0
- {sirchmunk-0.0.1.post1 → sirchmunk-0.0.2}/src/sirchmunk/llm/openai_chat.py +0 -0
- {sirchmunk-0.0.1.post1/src/sirchmunk/scan → sirchmunk-0.0.2/src/sirchmunk/retrieve}/__init__.py +0 -0
- {sirchmunk-0.0.1.post1 → sirchmunk-0.0.2}/src/sirchmunk/retrieve/base.py +0 -0
- {sirchmunk-0.0.1.post1 → sirchmunk-0.0.2}/src/sirchmunk/scan/base.py +0 -0
- {sirchmunk-0.0.1.post1 → sirchmunk-0.0.2}/src/sirchmunk/scan/web_scanner.py +0 -0
- {sirchmunk-0.0.1.post1 → sirchmunk-0.0.2}/src/sirchmunk/schema/__init__.py +0 -0
- {sirchmunk-0.0.1.post1 → sirchmunk-0.0.2}/src/sirchmunk/schema/cognition.py +0 -0
- {sirchmunk-0.0.1.post1 → sirchmunk-0.0.2}/src/sirchmunk/schema/context.py +0 -0
- {sirchmunk-0.0.1.post1 → sirchmunk-0.0.2}/src/sirchmunk/schema/metadata.py +0 -0
- {sirchmunk-0.0.1.post1 → sirchmunk-0.0.2}/src/sirchmunk/schema/request.py +0 -0
- {sirchmunk-0.0.1.post1 → sirchmunk-0.0.2}/src/sirchmunk/schema/response.py +0 -0
- {sirchmunk-0.0.1.post1 → sirchmunk-0.0.2}/src/sirchmunk/schema/snapshot.py +0 -0
- {sirchmunk-0.0.1.post1 → sirchmunk-0.0.2}/src/sirchmunk/storage/duckdb.py +0 -0
- {sirchmunk-0.0.1.post1 → sirchmunk-0.0.2}/src/sirchmunk/utils/__init__.py +0 -0
- {sirchmunk-0.0.1.post1 → sirchmunk-0.0.2}/src/sirchmunk/utils/deps.py +0 -0
- {sirchmunk-0.0.1.post1 → sirchmunk-0.0.2}/src/sirchmunk/utils/file_utils.py +0 -0
- {sirchmunk-0.0.1.post1 → sirchmunk-0.0.2}/src/sirchmunk/utils/install_rga.py +0 -0
- {sirchmunk-0.0.1.post1 → sirchmunk-0.0.2}/src/sirchmunk/utils/log_utils.py +0 -0
- {sirchmunk-0.0.1.post1 → sirchmunk-0.0.2}/src/sirchmunk/utils/utils.py +0 -0
- {sirchmunk-0.0.1.post1 → sirchmunk-0.0.2}/src/sirchmunk.egg-info/dependency_links.txt +0 -0
- {sirchmunk-0.0.1.post1 → sirchmunk-0.0.2}/src/sirchmunk.egg-info/entry_points.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: sirchmunk
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.2
|
|
4
4
|
Summary: Sirchmunk: From raw data to self-evolving real-time intelligence.
|
|
5
5
|
Author: ModelScope Team
|
|
6
6
|
Author-email: contact@modelscope.cn
|
|
@@ -34,6 +34,8 @@ Requires-Dist: tqdm
|
|
|
34
34
|
Requires-Dist: rapidfuzz
|
|
35
35
|
Requires-Dist: duckdb
|
|
36
36
|
Requires-Dist: kreuzberg>=4.0.0rc1
|
|
37
|
+
Requires-Dist: sentence-transformers
|
|
38
|
+
Requires-Dist: modelscope
|
|
37
39
|
Provides-Extra: web
|
|
38
40
|
Requires-Dist: fastapi>=0.100.0; extra == "web"
|
|
39
41
|
Requires-Dist: uvicorn[standard]>=0.24.0; extra == "web"
|
|
@@ -103,6 +105,7 @@ Dynamic: license-file
|
|
|
103
105
|
[](https://github.com/phiresky/ripgrep-all)
|
|
104
106
|
[](https://github.com/openai/openai-python)
|
|
105
107
|
[](https://github.com/kreuzberg-dev/kreuzberg)
|
|
108
|
+
[](https://github.com/modelcontextprotocol/python-sdk)
|
|
106
109
|
|
|
107
110
|
|
|
108
111
|
[**Quick Start**](#-quick-start) · [**Key Features**](#-key-features) · [**Web UI**](#-web-ui) · [**How it Works**](#-how-it-works) · [**FAQ**](#-faq)
|
|
@@ -228,6 +231,12 @@ It serves as a unified intelligent hub for AI agents, delivering deep insights a
|
|
|
228
231
|
|
|
229
232
|
## 🎉 News
|
|
230
233
|
|
|
234
|
+
* 🚀 **Feb 5, 2026**: Release **v0.0.2** — MCP Support, CLI Commands & Knowledge Persistence!
|
|
235
|
+
- **MCP Integration**: Full [Model Context Protocol](https://modelcontextprotocol.io) support, works seamlessly with Claude Desktop and Cursor IDE.
|
|
236
|
+
- **CLI Commands**: New `sirchmunk` CLI with `init`, `config`, `serve`, and `search` commands.
|
|
237
|
+
- **KnowledgeCluster Persistence**: DuckDB-powered storage with Parquet export for efficient knowledge management.
|
|
238
|
+
- **Knowledge Reuse**: Semantic similarity-based cluster retrieval for faster searches via embedding vectors.
|
|
239
|
+
|
|
231
240
|
* 🎉🎉 Jan 22, 2026: Introducing **Sirchmunk**: Initial Release v0.0.1 Now Available!
|
|
232
241
|
|
|
233
242
|
|
|
@@ -273,9 +282,9 @@ llm = OpenAIChat(
|
|
|
273
282
|
|
|
274
283
|
async def main():
|
|
275
284
|
|
|
276
|
-
|
|
285
|
+
searcher = AgenticSearch(llm=llm)
|
|
277
286
|
|
|
278
|
-
result: str = await
|
|
287
|
+
result: str = await searcher.search(
|
|
279
288
|
query="How does transformer attention work?",
|
|
280
289
|
search_paths=["/path/to/documents"],
|
|
281
290
|
)
|
|
@@ -286,11 +295,117 @@ asyncio.run(main())
|
|
|
286
295
|
```
|
|
287
296
|
|
|
288
297
|
**⚠️ Notes:**
|
|
289
|
-
- Upon initialization, AgenticSearch automatically checks if ripgrep-all and ripgrep are installed. If they are missing, it will attempt to install them automatically. If the automatic installation fails, please install them manually.
|
|
298
|
+
- Upon initialization, `AgenticSearch` automatically checks if `ripgrep-all` and `ripgrep` are installed. If they are missing, it will attempt to install them automatically. If the automatic installation fails, please install them manually.
|
|
290
299
|
- References: https://github.com/BurntSushi/ripgrep | https://github.com/phiresky/ripgrep-all
|
|
291
300
|
- Replace `"your-api-key"`, `"your-base-url"`, `"your-model-name"` and `/path/to/documents` with your actual values.
|
|
292
301
|
|
|
293
302
|
|
|
303
|
+
### Command Line Interface
|
|
304
|
+
|
|
305
|
+
Sirchmunk provides a powerful CLI for server management and search operations.
|
|
306
|
+
|
|
307
|
+
#### Installation
|
|
308
|
+
|
|
309
|
+
```bash
|
|
310
|
+
pip install "sirchmunk[web]"
|
|
311
|
+
|
|
312
|
+
# or install via UV
|
|
313
|
+
uv pip install "sirchmunk[web]"
|
|
314
|
+
```
|
|
315
|
+
|
|
316
|
+
|
|
317
|
+
#### Initialize
|
|
318
|
+
|
|
319
|
+
```bash
|
|
320
|
+
# Initialize Sirchmunk with default settings (Default work path: `~/.sirchmunk/`)
|
|
321
|
+
sirchmunk init
|
|
322
|
+
|
|
323
|
+
# Alternatively, initialize with custom work path
|
|
324
|
+
sirchmunk init --work-path /path/to/workspace
|
|
325
|
+
```
|
|
326
|
+
|
|
327
|
+
#### Configure
|
|
328
|
+
|
|
329
|
+
```bash
|
|
330
|
+
# Show current configuration
|
|
331
|
+
sirchmunk config
|
|
332
|
+
|
|
333
|
+
# Regenerate configuration file if needed (Default config file: ~/.sirchmunk/.env)
|
|
334
|
+
sirchmunk config --generate
|
|
335
|
+
```
|
|
336
|
+
|
|
337
|
+
#### Start API Server
|
|
338
|
+
|
|
339
|
+
```bash
|
|
340
|
+
# Start server with default settings
|
|
341
|
+
sirchmunk serve
|
|
342
|
+
|
|
343
|
+
# Custom host and port
|
|
344
|
+
sirchmunk serve --host 0.0.0.0 --port 8000
|
|
345
|
+
|
|
346
|
+
# Development mode with auto-reload
|
|
347
|
+
sirchmunk serve --reload
|
|
348
|
+
```
|
|
349
|
+
|
|
350
|
+
#### Search
|
|
351
|
+
|
|
352
|
+
```bash
|
|
353
|
+
# Search in current directory
|
|
354
|
+
sirchmunk search "How does authentication work?"
|
|
355
|
+
|
|
356
|
+
# Search in specific paths
|
|
357
|
+
sirchmunk search "find all API endpoints" ./src ./docs
|
|
358
|
+
|
|
359
|
+
# Quick filename search
|
|
360
|
+
sirchmunk search "config" --mode FILENAME_ONLY
|
|
361
|
+
|
|
362
|
+
# Output as JSON
|
|
363
|
+
sirchmunk search "database schema" --output json
|
|
364
|
+
|
|
365
|
+
# Use API server (requires running server)
|
|
366
|
+
sirchmunk search "query" --api --api-url http://localhost:8584
|
|
367
|
+
```
|
|
368
|
+
|
|
369
|
+
#### Available Commands
|
|
370
|
+
|
|
371
|
+
| Command | Description |
|
|
372
|
+
|---------|-------------|
|
|
373
|
+
| `sirchmunk init` | Initialize working directory and configuration |
|
|
374
|
+
| `sirchmunk config` | Show or generate configuration |
|
|
375
|
+
| `sirchmunk serve` | Start the API server |
|
|
376
|
+
| `sirchmunk search` | Perform search queries |
|
|
377
|
+
| `sirchmunk version` | Show version information |
|
|
378
|
+
|
|
379
|
+
---
|
|
380
|
+
|
|
381
|
+
## 🔌 MCP Server
|
|
382
|
+
|
|
383
|
+
Sirchmunk provides a [Model Context Protocol (MCP)](https://modelcontextprotocol.io) server that exposes its intelligent search capabilities as MCP tools. This enables seamless integration with AI assistants like **Claude Desktop** and **Cursor IDE**.
|
|
384
|
+
|
|
385
|
+
### Quick Start
|
|
386
|
+
|
|
387
|
+
```bash
|
|
388
|
+
# Install MCP package
|
|
389
|
+
pip install sirchmunk-mcp
|
|
390
|
+
|
|
391
|
+
# Initialize and configure
|
|
392
|
+
sirchmunk-mcp init
|
|
393
|
+
sirchmunk-mcp config --generate
|
|
394
|
+
|
|
395
|
+
# Edit ~/.sirchmunk/.mcp_env with your LLM API key
|
|
396
|
+
|
|
397
|
+
# Test with MCP Inspector
|
|
398
|
+
npx @modelcontextprotocol/inspector sirchmunk-mcp serve
|
|
399
|
+
```
|
|
400
|
+
|
|
401
|
+
### Features
|
|
402
|
+
|
|
403
|
+
- **Multi-Mode Search**: DEEP mode for comprehensive analysis, FILENAME_ONLY for fast file discovery
|
|
404
|
+
- **Knowledge Cluster Management**: Automatic extraction, storage, and reuse of knowledge
|
|
405
|
+
- **Standard MCP Protocol**: Works with stdio and Streamable HTTP transports
|
|
406
|
+
|
|
407
|
+
📖 **For detailed documentation, see [Sirchmunk MCP README](src/sirchmunk_mcp/README.md)**.
|
|
408
|
+
|
|
294
409
|
---
|
|
295
410
|
|
|
296
411
|
## 🖥️ Web UI
|
|
@@ -364,10 +479,10 @@ python scripts/stop_web.py
|
|
|
364
479
|
|
|
365
480
|
### Data Storage
|
|
366
481
|
|
|
367
|
-
All persistent data is stored in the configured `
|
|
482
|
+
All persistent data is stored in the configured `SIRCHMUNK_WORK_PATH` (default: `~/.sirchmunk/`):
|
|
368
483
|
|
|
369
484
|
```
|
|
370
|
-
{
|
|
485
|
+
{SIRCHMUNK_WORK_PATH}/
|
|
371
486
|
├── .cache/
|
|
372
487
|
├── history/ # Chat session history (DuckDB)
|
|
373
488
|
│ └── chat_history.db
|
|
@@ -410,7 +525,7 @@ Any OpenAI-compatible API endpoint, including (but not limited too):
|
|
|
410
525
|
Simply specify the path in your search query:
|
|
411
526
|
|
|
412
527
|
```python
|
|
413
|
-
result = await
|
|
528
|
+
result = await searcher.search(
|
|
414
529
|
query="Your question",
|
|
415
530
|
search_paths=["/path/to/folder", "/path/to/file.pdf"]
|
|
416
531
|
)
|
|
@@ -425,7 +540,7 @@ No pre-processing or indexing required!
|
|
|
425
540
|
|
|
426
541
|
Knowledge clusters are persisted in Parquet format at:
|
|
427
542
|
```
|
|
428
|
-
{
|
|
543
|
+
{SIRCHMUNK_WORK_PATH}/.cache/knowledge/knowledge_clusters.parquet
|
|
429
544
|
```
|
|
430
545
|
|
|
431
546
|
You can query them using DuckDB or the `KnowledgeManager` API.
|
|
@@ -437,7 +552,7 @@ You can query them using DuckDB or the `KnowledgeManager` API.
|
|
|
437
552
|
|
|
438
553
|
1. **Web Dashboard**: Visit the Monitor page for real-time statistics
|
|
439
554
|
2. **API**: `GET /api/v1/monitor/llm` returns usage metrics
|
|
440
|
-
3. **Code**: Access `
|
|
555
|
+
3. **Code**: Access `searcher.llm_usages` after search completion
|
|
441
556
|
|
|
442
557
|
</details>
|
|
443
558
|
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
[](https://github.com/phiresky/ripgrep-all)
|
|
14
14
|
[](https://github.com/openai/openai-python)
|
|
15
15
|
[](https://github.com/kreuzberg-dev/kreuzberg)
|
|
16
|
+
[](https://github.com/modelcontextprotocol/python-sdk)
|
|
16
17
|
|
|
17
18
|
|
|
18
19
|
[**Quick Start**](#-quick-start) · [**Key Features**](#-key-features) · [**Web UI**](#-web-ui) · [**How it Works**](#-how-it-works) · [**FAQ**](#-faq)
|
|
@@ -138,6 +139,12 @@ It serves as a unified intelligent hub for AI agents, delivering deep insights a
|
|
|
138
139
|
|
|
139
140
|
## 🎉 News
|
|
140
141
|
|
|
142
|
+
* 🚀 **Feb 5, 2026**: Release **v0.0.2** — MCP Support, CLI Commands & Knowledge Persistence!
|
|
143
|
+
- **MCP Integration**: Full [Model Context Protocol](https://modelcontextprotocol.io) support, works seamlessly with Claude Desktop and Cursor IDE.
|
|
144
|
+
- **CLI Commands**: New `sirchmunk` CLI with `init`, `config`, `serve`, and `search` commands.
|
|
145
|
+
- **KnowledgeCluster Persistence**: DuckDB-powered storage with Parquet export for efficient knowledge management.
|
|
146
|
+
- **Knowledge Reuse**: Semantic similarity-based cluster retrieval for faster searches via embedding vectors.
|
|
147
|
+
|
|
141
148
|
* 🎉🎉 Jan 22, 2026: Introducing **Sirchmunk**: Initial Release v0.0.1 Now Available!
|
|
142
149
|
|
|
143
150
|
|
|
@@ -183,9 +190,9 @@ llm = OpenAIChat(
|
|
|
183
190
|
|
|
184
191
|
async def main():
|
|
185
192
|
|
|
186
|
-
|
|
193
|
+
searcher = AgenticSearch(llm=llm)
|
|
187
194
|
|
|
188
|
-
result: str = await
|
|
195
|
+
result: str = await searcher.search(
|
|
189
196
|
query="How does transformer attention work?",
|
|
190
197
|
search_paths=["/path/to/documents"],
|
|
191
198
|
)
|
|
@@ -196,11 +203,117 @@ asyncio.run(main())
|
|
|
196
203
|
```
|
|
197
204
|
|
|
198
205
|
**⚠️ Notes:**
|
|
199
|
-
- Upon initialization, AgenticSearch automatically checks if ripgrep-all and ripgrep are installed. If they are missing, it will attempt to install them automatically. If the automatic installation fails, please install them manually.
|
|
206
|
+
- Upon initialization, `AgenticSearch` automatically checks if `ripgrep-all` and `ripgrep` are installed. If they are missing, it will attempt to install them automatically. If the automatic installation fails, please install them manually.
|
|
200
207
|
- References: https://github.com/BurntSushi/ripgrep | https://github.com/phiresky/ripgrep-all
|
|
201
208
|
- Replace `"your-api-key"`, `"your-base-url"`, `"your-model-name"` and `/path/to/documents` with your actual values.
|
|
202
209
|
|
|
203
210
|
|
|
211
|
+
### Command Line Interface
|
|
212
|
+
|
|
213
|
+
Sirchmunk provides a powerful CLI for server management and search operations.
|
|
214
|
+
|
|
215
|
+
#### Installation
|
|
216
|
+
|
|
217
|
+
```bash
|
|
218
|
+
pip install "sirchmunk[web]"
|
|
219
|
+
|
|
220
|
+
# or install via UV
|
|
221
|
+
uv pip install "sirchmunk[web]"
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
|
|
225
|
+
#### Initialize
|
|
226
|
+
|
|
227
|
+
```bash
|
|
228
|
+
# Initialize Sirchmunk with default settings (Default work path: `~/.sirchmunk/`)
|
|
229
|
+
sirchmunk init
|
|
230
|
+
|
|
231
|
+
# Alternatively, initialize with custom work path
|
|
232
|
+
sirchmunk init --work-path /path/to/workspace
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
#### Configure
|
|
236
|
+
|
|
237
|
+
```bash
|
|
238
|
+
# Show current configuration
|
|
239
|
+
sirchmunk config
|
|
240
|
+
|
|
241
|
+
# Regenerate configuration file if needed (Default config file: ~/.sirchmunk/.env)
|
|
242
|
+
sirchmunk config --generate
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
#### Start API Server
|
|
246
|
+
|
|
247
|
+
```bash
|
|
248
|
+
# Start server with default settings
|
|
249
|
+
sirchmunk serve
|
|
250
|
+
|
|
251
|
+
# Custom host and port
|
|
252
|
+
sirchmunk serve --host 0.0.0.0 --port 8000
|
|
253
|
+
|
|
254
|
+
# Development mode with auto-reload
|
|
255
|
+
sirchmunk serve --reload
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
#### Search
|
|
259
|
+
|
|
260
|
+
```bash
|
|
261
|
+
# Search in current directory
|
|
262
|
+
sirchmunk search "How does authentication work?"
|
|
263
|
+
|
|
264
|
+
# Search in specific paths
|
|
265
|
+
sirchmunk search "find all API endpoints" ./src ./docs
|
|
266
|
+
|
|
267
|
+
# Quick filename search
|
|
268
|
+
sirchmunk search "config" --mode FILENAME_ONLY
|
|
269
|
+
|
|
270
|
+
# Output as JSON
|
|
271
|
+
sirchmunk search "database schema" --output json
|
|
272
|
+
|
|
273
|
+
# Use API server (requires running server)
|
|
274
|
+
sirchmunk search "query" --api --api-url http://localhost:8584
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
#### Available Commands
|
|
278
|
+
|
|
279
|
+
| Command | Description |
|
|
280
|
+
|---------|-------------|
|
|
281
|
+
| `sirchmunk init` | Initialize working directory and configuration |
|
|
282
|
+
| `sirchmunk config` | Show or generate configuration |
|
|
283
|
+
| `sirchmunk serve` | Start the API server |
|
|
284
|
+
| `sirchmunk search` | Perform search queries |
|
|
285
|
+
| `sirchmunk version` | Show version information |
|
|
286
|
+
|
|
287
|
+
---
|
|
288
|
+
|
|
289
|
+
## 🔌 MCP Server
|
|
290
|
+
|
|
291
|
+
Sirchmunk provides a [Model Context Protocol (MCP)](https://modelcontextprotocol.io) server that exposes its intelligent search capabilities as MCP tools. This enables seamless integration with AI assistants like **Claude Desktop** and **Cursor IDE**.
|
|
292
|
+
|
|
293
|
+
### Quick Start
|
|
294
|
+
|
|
295
|
+
```bash
|
|
296
|
+
# Install MCP package
|
|
297
|
+
pip install sirchmunk-mcp
|
|
298
|
+
|
|
299
|
+
# Initialize and configure
|
|
300
|
+
sirchmunk-mcp init
|
|
301
|
+
sirchmunk-mcp config --generate
|
|
302
|
+
|
|
303
|
+
# Edit ~/.sirchmunk/.mcp_env with your LLM API key
|
|
304
|
+
|
|
305
|
+
# Test with MCP Inspector
|
|
306
|
+
npx @modelcontextprotocol/inspector sirchmunk-mcp serve
|
|
307
|
+
```
|
|
308
|
+
|
|
309
|
+
### Features
|
|
310
|
+
|
|
311
|
+
- **Multi-Mode Search**: DEEP mode for comprehensive analysis, FILENAME_ONLY for fast file discovery
|
|
312
|
+
- **Knowledge Cluster Management**: Automatic extraction, storage, and reuse of knowledge
|
|
313
|
+
- **Standard MCP Protocol**: Works with stdio and Streamable HTTP transports
|
|
314
|
+
|
|
315
|
+
📖 **For detailed documentation, see [Sirchmunk MCP README](src/sirchmunk_mcp/README.md)**.
|
|
316
|
+
|
|
204
317
|
---
|
|
205
318
|
|
|
206
319
|
## 🖥️ Web UI
|
|
@@ -274,10 +387,10 @@ python scripts/stop_web.py
|
|
|
274
387
|
|
|
275
388
|
### Data Storage
|
|
276
389
|
|
|
277
|
-
All persistent data is stored in the configured `
|
|
390
|
+
All persistent data is stored in the configured `SIRCHMUNK_WORK_PATH` (default: `~/.sirchmunk/`):
|
|
278
391
|
|
|
279
392
|
```
|
|
280
|
-
{
|
|
393
|
+
{SIRCHMUNK_WORK_PATH}/
|
|
281
394
|
├── .cache/
|
|
282
395
|
├── history/ # Chat session history (DuckDB)
|
|
283
396
|
│ └── chat_history.db
|
|
@@ -320,7 +433,7 @@ Any OpenAI-compatible API endpoint, including (but not limited too):
|
|
|
320
433
|
Simply specify the path in your search query:
|
|
321
434
|
|
|
322
435
|
```python
|
|
323
|
-
result = await
|
|
436
|
+
result = await searcher.search(
|
|
324
437
|
query="Your question",
|
|
325
438
|
search_paths=["/path/to/folder", "/path/to/file.pdf"]
|
|
326
439
|
)
|
|
@@ -335,7 +448,7 @@ No pre-processing or indexing required!
|
|
|
335
448
|
|
|
336
449
|
Knowledge clusters are persisted in Parquet format at:
|
|
337
450
|
```
|
|
338
|
-
{
|
|
451
|
+
{SIRCHMUNK_WORK_PATH}/.cache/knowledge/knowledge_clusters.parquet
|
|
339
452
|
```
|
|
340
453
|
|
|
341
454
|
You can query them using DuckDB or the `KnowledgeManager` API.
|
|
@@ -347,7 +460,7 @@ You can query them using DuckDB or the `KnowledgeManager` API.
|
|
|
347
460
|
|
|
348
461
|
1. **Web Dashboard**: Visit the Monitor page for real-time statistics
|
|
349
462
|
2. **API**: `GET /api/v1/monitor/llm` returns usage metrics
|
|
350
|
-
3. **Code**: Access `
|
|
463
|
+
3. **Code**: Access `searcher.llm_usages` after search completion
|
|
351
464
|
|
|
352
465
|
</details>
|
|
353
466
|
|