pyvectorhound 1.1.1__tar.gz → 1.3.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 (95) hide show
  1. {pyvectorhound-1.1.1 → pyvectorhound-1.3.0}/.github/workflows/ci.yml +8 -2
  2. pyvectorhound-1.3.0/CHANGELOG.md +110 -0
  3. {pyvectorhound-1.1.1 → pyvectorhound-1.3.0}/Cargo.lock +30 -19
  4. {pyvectorhound-1.1.1 → pyvectorhound-1.3.0}/Cargo.toml +2 -2
  5. pyvectorhound-1.3.0/DASHBOARD_SHORTCUTS.md +161 -0
  6. pyvectorhound-1.3.0/DEPLOYMENT.md +673 -0
  7. pyvectorhound-1.3.0/LICENSE +22 -0
  8. pyvectorhound-1.3.0/OTEL_SETUP_GUIDE.md +319 -0
  9. pyvectorhound-1.3.0/PKG-INFO +213 -0
  10. pyvectorhound-1.3.0/PRODUCTION_DEPLOYMENT.md +512 -0
  11. pyvectorhound-1.3.0/README.md +151 -0
  12. pyvectorhound-1.3.0/USER_GUIDE.md +609 -0
  13. pyvectorhound-1.3.0/docs/PRODUCT_VISION.md +95 -0
  14. pyvectorhound-1.3.0/docs/ROADMAP.md +192 -0
  15. pyvectorhound-1.3.0/examples/benchmarking_and_trends.py +211 -0
  16. pyvectorhound-1.3.0/examples/mcp_pyvectorhound.py +27 -0
  17. pyvectorhound-1.3.0/otel_exporter.py +189 -0
  18. {pyvectorhound-1.1.1 → pyvectorhound-1.3.0}/pyproject.toml +19 -18
  19. {pyvectorhound-1.1.1 → pyvectorhound-1.3.0}/pyvectorhound/__init__.py +64 -3
  20. pyvectorhound-1.3.0/pyvectorhound/_mcp_connector.py +105 -0
  21. pyvectorhound-1.3.0/pyvectorhound/_mcp_tools.py +321 -0
  22. pyvectorhound-1.3.0/pyvectorhound/advanced_analytics.py +439 -0
  23. pyvectorhound-1.3.0/pyvectorhound/benchmarking.py +401 -0
  24. {pyvectorhound-1.1.1 → pyvectorhound-1.3.0}/pyvectorhound/cli.py +12 -0
  25. {pyvectorhound-1.1.1 → pyvectorhound-1.3.0}/pyvectorhound/comparison.py +74 -36
  26. {pyvectorhound-1.1.1 → pyvectorhound-1.3.0}/pyvectorhound/database.py +44 -18
  27. pyvectorhound-1.3.0/pyvectorhound/db_adapters.py +549 -0
  28. pyvectorhound-1.3.0/pyvectorhound/diagnosis.py +578 -0
  29. pyvectorhound-1.3.0/pyvectorhound/hound.py +455 -0
  30. pyvectorhound-1.3.0/pyvectorhound/langchain_integration.py +388 -0
  31. pyvectorhound-1.3.0/pyvectorhound/llamaindex_integration.py +470 -0
  32. pyvectorhound-1.3.0/pyvectorhound/otel_integration.py +469 -0
  33. pyvectorhound-1.3.0/pyvectorhound/recommendations.py +570 -0
  34. pyvectorhound-1.3.0/pyvectorhound/retrieval_replay.py +446 -0
  35. pyvectorhound-1.3.0/pyvectorhound/retrieval_tracing.py +423 -0
  36. pyvectorhound-1.3.0/pyvectorhound/scorer.py +274 -0
  37. pyvectorhound-1.3.0/pyvectorhound/scripts/__init__.py +0 -0
  38. pyvectorhound-1.3.0/pyvectorhound/scripts/post_install.py +24 -0
  39. pyvectorhound-1.3.0/pyvectorhound/scripts/setup_shortcuts.sh +35 -0
  40. {pyvectorhound-1.1.1 → pyvectorhound-1.3.0}/pyvectorhound/server.py +15 -1
  41. pyvectorhound-1.3.0/pyvectorhound/trend_analysis.py +526 -0
  42. pyvectorhound-1.3.0/pyvectorhound/web_dashboard.py +501 -0
  43. pyvectorhound-1.3.0/pyvectorhound.toml +22 -0
  44. pyvectorhound-1.3.0/scripts/setup_shortcuts.sh +30 -0
  45. pyvectorhound-1.3.0/scripts/test_dashboards_crossplatform.sh +208 -0
  46. {pyvectorhound-1.1.1 → pyvectorhound-1.3.0}/src/lib.rs +9 -3
  47. pyvectorhound-1.3.0/tests/test_benchmarking.py +307 -0
  48. {pyvectorhound-1.1.1 → pyvectorhound-1.3.0}/tests/test_diagnosis.py +1 -1
  49. pyvectorhound-1.3.0/tests/test_recommendations.py +335 -0
  50. pyvectorhound-1.3.0/tests/test_retrieval_replay.py +381 -0
  51. pyvectorhound-1.3.0/tests/test_trend_analysis.py +414 -0
  52. pyvectorhound-1.3.0/tests/test_v05_integrations.py +336 -0
  53. pyvectorhound-1.1.1/CHANGELOG.md +0 -41
  54. pyvectorhound-1.1.1/LICENSE +0 -21
  55. pyvectorhound-1.1.1/PKG-INFO +0 -693
  56. pyvectorhound-1.1.1/README.md +0 -632
  57. pyvectorhound-1.1.1/ROADMAP.md +0 -73
  58. pyvectorhound-1.1.1/pyvectorhound/diagnosis.py +0 -303
  59. pyvectorhound-1.1.1/pyvectorhound/hound.py +0 -230
  60. pyvectorhound-1.1.1/pyvectorhound/scorer.py +0 -199
  61. pyvectorhound-1.1.1/tests/test_vector_operations.py +0 -291
  62. {pyvectorhound-1.1.1 → pyvectorhound-1.3.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  63. {pyvectorhound-1.1.1 → pyvectorhound-1.3.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  64. {pyvectorhound-1.1.1 → pyvectorhound-1.3.0}/.github/dependabot.yml +0 -0
  65. {pyvectorhound-1.1.1 → pyvectorhound-1.3.0}/.gitignore +0 -0
  66. {pyvectorhound-1.1.1 → pyvectorhound-1.3.0}/.pre-commit-config.yaml +0 -0
  67. {pyvectorhound-1.1.1 → pyvectorhound-1.3.0}/ARCHITECTURE.md +0 -0
  68. {pyvectorhound-1.1.1 → pyvectorhound-1.3.0}/CODE_OF_CONDUCT.md +0 -0
  69. {pyvectorhound-1.1.1 → pyvectorhound-1.3.0}/CONTRIBUTING.md +0 -0
  70. {pyvectorhound-1.1.1 → pyvectorhound-1.3.0}/Makefile +0 -0
  71. {pyvectorhound-1.1.1 → pyvectorhound-1.3.0}/OKF_INTEGRATION.md +0 -0
  72. {pyvectorhound-1.1.1 → pyvectorhound-1.3.0}/SECURITY.md +0 -0
  73. {pyvectorhound-1.1.1 → pyvectorhound-1.3.0}/docs/ARCHITECTURE.md +0 -0
  74. {pyvectorhound-1.1.1 → pyvectorhound-1.3.0}/docs/GUIDE.md +0 -0
  75. {pyvectorhound-1.1.1 → pyvectorhound-1.3.0}/docs/strategy/PYHOUND_FINAL_STATUS.md +0 -0
  76. {pyvectorhound-1.1.1 → pyvectorhound-1.3.0}/docs/strategy/PyHound_COMPETITIVE_ROADMAP.md +0 -0
  77. {pyvectorhound-1.1.1 → pyvectorhound-1.3.0}/docs/strategy/PyHound_FINAL_PRODUCT.md +0 -0
  78. {pyvectorhound-1.1.1 → pyvectorhound-1.3.0}/docs/strategy/PyHound_GITHUB_LAUNCH.md +0 -0
  79. {pyvectorhound-1.1.1 → pyvectorhound-1.3.0}/docs/strategy/PyHound_LAUNCH_CHECKLIST.md +0 -0
  80. {pyvectorhound-1.1.1 → pyvectorhound-1.3.0}/docs/strategy/PyHound_UNIFICATION_STRATEGY.md +0 -0
  81. {pyvectorhound-1.1.1 → pyvectorhound-1.3.0}/docs/strategy/PyHound_vs_Observability.md +0 -0
  82. {pyvectorhound-1.1.1 → pyvectorhound-1.3.0}/examples/retrieval_debug.py +0 -0
  83. {pyvectorhound-1.1.1 → pyvectorhound-1.3.0}/install.sh +0 -0
  84. {pyvectorhound-1.1.1 → pyvectorhound-1.3.0}/pyvectorhound/_safe_exec.py +0 -0
  85. {pyvectorhound-1.1.1 → pyvectorhound-1.3.0}/pyvectorhound/backends.py +0 -0
  86. {pyvectorhound-1.1.1 → pyvectorhound-1.3.0}/pyvectorhound/error_messages.py +0 -0
  87. {pyvectorhound-1.1.1 → pyvectorhound-1.3.0}/pyvectorhound/errors.py +0 -0
  88. {pyvectorhound-1.1.1 → pyvectorhound-1.3.0}/pyvectorhound/logging_config.py +0 -0
  89. {pyvectorhound-1.1.1 → pyvectorhound-1.3.0}/pyvectorhound/okf_diagnostics.py +0 -0
  90. {pyvectorhound-1.1.1 → pyvectorhound-1.3.0}/pyvectorhound/py.typed +0 -0
  91. {pyvectorhound-1.1.1 → pyvectorhound-1.3.0}/pyvectorhound/validation.py +0 -0
  92. {pyvectorhound-1.1.1 → pyvectorhound-1.3.0}/rust-toolchain.toml +0 -0
  93. {pyvectorhound-1.1.1 → pyvectorhound-1.3.0}/src/metrics.rs +0 -0
  94. {pyvectorhound-1.1.1 → pyvectorhound-1.3.0}/tests/test_hound.py +0 -0
  95. {pyvectorhound-1.1.1 → pyvectorhound-1.3.0}/tests/test_okf_diagnostics.py +0 -0
@@ -40,8 +40,14 @@ jobs:
40
40
  with:
41
41
  python-version: ${{ matrix.python-version }}
42
42
 
43
+ - name: Install maturin
44
+ run: pip install "maturin>=1.7,<2.0"
45
+
46
+ - name: Build and install extension module
47
+ run: maturin develop --release
48
+
43
49
  - name: Install dependencies
44
- run: cd python && pip install -e ".[dev]"
50
+ run: pip install -e ".[dev]"
45
51
 
46
52
  - name: Run pytest
47
- run: if [ -d "python/tests" ]; then cd python && pytest tests/ -v --tb=short; else echo "No Python tests found"; fi
53
+ run: pytest tests/ -v --tb=short
@@ -0,0 +1,110 @@
1
+ # Changelog
2
+
3
+ All notable changes to PyVectorHound are documented in this file.
4
+
5
+ ## [1.3.0] - 2026-08-16
6
+
7
+ First PyPI release. This release fixes the diagnostic engine's core
8
+ functionality, which was previously non-functional despite the codebase's
9
+ size and test count:
10
+
11
+ ### Fixed
12
+ - **Rust extension was unreachable.** The compiled native module's PyO3
13
+ entry point was named `pyhound_core`, but `pyproject.toml` /
14
+ `Cargo.toml` build it as `pyvectorhound._core`; the mismatched `PyInit_`
15
+ symbol meant the import always failed. `Diagnosis.analyze()` and
16
+ `QualityScorer.score()` additionally imported it from a nonexistent
17
+ `pyhound` package. Both are fixed and covered by a real test that spies
18
+ on the Rust call to confirm it executes.
19
+ - **`Diagnosis.analyze()` fabricated its results.** Embedding quality,
20
+ BM25, and reranker analysis returned hardcoded constants regardless of
21
+ input. They now compute real metrics (via the Rust core, with an
22
+ equivalent pure-Python fallback) from the embeddings/scores actually
23
+ supplied, and report `"UNAVAILABLE"`/`"UNKNOWN"` with an explanation
24
+ instead of a number when the required input wasn't given.
25
+ - **`Hound.diagnose()` fabricated the query embedding.** A query with no
26
+ `query_embedding` used to get a random vector (`np.random.randn`),
27
+ silently producing meaningless diagnoses. It now requires a
28
+ `query_embedding` or a configured `embed_fn` and raises a clear
29
+ `ValueError` otherwise. **This is a breaking change** for callers that
30
+ relied on the old silent fallback.
31
+ - Database adapters (Qdrant/Chroma/Milvus/pgvector/Weaviate) returned the
32
+ *query* embedding as every result's `"embedding"`, corrupting any
33
+ downstream embedding-space analysis. They now fetch and return the
34
+ actual per-document embedding.
35
+ - CI's Python test job referenced a nonexistent `python/` subdirectory and
36
+ never built the Rust extension, so it silently ran zero tests. It now
37
+ builds via `maturin develop --release` and runs the real suite at the
38
+ repo root.
39
+ - `pydantic` was used in `database.py`/`validation.py` but missing from
40
+ `pyproject.toml` dependencies, so a clean install of `pyvectorhound`
41
+ failed on import. Added as a dependency.
42
+ - Base dependencies pinned exact old versions (e.g. `numpy==1.20.0`) with
43
+ no wheels for the Python versions this package claims to support (up to
44
+ 3.12); relaxed to compatible ranges. `dev` extras pinned a yanked/removed
45
+ `black` version, breaking `pip install .[dev]` entirely.
46
+ - `Hound.__init__` eagerly connected to the database, requiring the
47
+ optional client library and a live server just to construct a `Hound`.
48
+ Connection is now lazy, matching every adapter method's existing
49
+ lazy-connect behavior.
50
+ - `ModelComparison`/`compare_models()` fabricated quality scores
51
+ (`f1_score`, `ndcg`, etc.) from `hash(model_name)`. It now reports only
52
+ real published cost/latency metadata unless a `quality_fn` is supplied
53
+ for real, measured quality numbers.
54
+ - `Hound.compare_metrics()`, `Hound.detect_drift()`, and
55
+ `QualityScorer.trend_analysis()` returned fixed placeholder output
56
+ (zeros / `"stable"` / `"No action needed"`) regardless of input, with no
57
+ backing data store. They now raise `NotImplementedError` pointing to the
58
+ real, tested alternative (`track_metric()` + `get_trend_report()` /
59
+ `TrendAnalyzer.detect_drift()`).
60
+ - Removed `tests/test_vector_operations.py`, which tested `VectorStore`
61
+ and `EmbeddingManager` classes that do not exist anywhere in this
62
+ codebase and are not part of this package's scope (diagnosing failures
63
+ in databases you already run, not being one); its import error was
64
+ aborting the entire test suite before any test could run.
65
+
66
+ ### Added
67
+ - `Hound(embed_fn=...)`: optional callable to embed queries (wrapping
68
+ OpenAI, Cohere, sentence-transformers, etc.), since PyVectorHound does
69
+ not bundle an embedding model itself.
70
+ - `QualityScorer.score(embedding, reference_embeddings=...)` and
71
+ `QualityScorer.corpus_health(sample_embeddings=...)`: real
72
+ isotropy/coverage/distinctiveness against a supplied embedding sample.
73
+
74
+ ## [0.1.1] - 2025-01-20
75
+
76
+ ### Added
77
+ - Component-level diagnostics for retrieval pipelines
78
+ - Root cause analysis for embedding failures
79
+ - Recommendations engine with ROI estimates
80
+ - Support for Elasticsearch, Weaviate, and Pinecone
81
+ - BM25 keyword search diagnostics
82
+ - Reranker performance analysis
83
+
84
+ ### Fixed
85
+ - Memory efficiency improvements in large batch processing
86
+ - Vector similarity computation accuracy
87
+
88
+ ## [0.1.0] - 2024-12-15
89
+
90
+ ### Added
91
+ - Initial release
92
+ - Core retrieval diagnostics engine
93
+ - Embedding quality assessment
94
+ - Vector search performance profiling
95
+ - MIT license
96
+
97
+ ### Known Issues
98
+ - Streaming RAG pipelines not yet supported
99
+ - LLamaIndex integration in progress
100
+
101
+ ## [Unreleased]
102
+
103
+ ### Planned
104
+ - Streaming RAG support
105
+ - LLamaIndex integration
106
+ - Custom metric definitions
107
+ - Dashboard UI
108
+ - API server mode
109
+
110
+ For details, see [ROADMAP.md](../ROADMAP.md).
@@ -1,6 +1,6 @@
1
1
  # This file is automatically @generated by Cargo.
2
2
  # It is not intended for manual editing.
3
- version = 3
3
+ version = 4
4
4
 
5
5
  [[package]]
6
6
  name = "autocfg"
@@ -37,9 +37,9 @@ checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682"
37
37
 
38
38
  [[package]]
39
39
  name = "libc"
40
- version = "0.2.186"
40
+ version = "0.2.189"
41
41
  source = "registry+https://github.com/rust-lang/crates.io-index"
42
- checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66"
42
+ checksum = "3eaf3ede3fee6db1a4c2ee091bf8a8b4dccdc6d17f656fb07896ee72867612f2"
43
43
 
44
44
  [[package]]
45
45
  name = "matrixmultiply"
@@ -146,9 +146,9 @@ dependencies = [
146
146
 
147
147
  [[package]]
148
148
  name = "proc-macro2"
149
- version = "1.0.106"
149
+ version = "1.0.107"
150
150
  source = "registry+https://github.com/rust-lang/crates.io-index"
151
- checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934"
151
+ checksum = "985e7ec9bb745e6ce6535b544d84d6cd6f7ad8bd711c398938ae983b91a766d9"
152
152
  dependencies = [
153
153
  "unicode-ident",
154
154
  ]
@@ -200,7 +200,7 @@ dependencies = [
200
200
  "proc-macro2",
201
201
  "pyo3-macros-backend",
202
202
  "quote",
203
- "syn",
203
+ "syn 2.0.119",
204
204
  ]
205
205
 
206
206
  [[package]]
@@ -213,12 +213,12 @@ dependencies = [
213
213
  "proc-macro2",
214
214
  "pyo3-build-config",
215
215
  "quote",
216
- "syn",
216
+ "syn 2.0.119",
217
217
  ]
218
218
 
219
219
  [[package]]
220
220
  name = "pyvectorhound"
221
- version = "1.0.0"
221
+ version = "1.3.0"
222
222
  dependencies = [
223
223
  "numpy",
224
224
  "pyo3",
@@ -228,9 +228,9 @@ dependencies = [
228
228
 
229
229
  [[package]]
230
230
  name = "quote"
231
- version = "1.0.46"
231
+ version = "1.0.47"
232
232
  source = "registry+https://github.com/rust-lang/crates.io-index"
233
- checksum = "dfbc457d0c7a0759a614551b11a6409e5951f6c7537be1f1b7682b9ae9230368"
233
+ checksum = "1fbf4db142a473a8d80c26bbf18454ed458bf8d26c8219c331daecfdbd079001"
234
234
  dependencies = [
235
235
  "proc-macro2",
236
236
  ]
@@ -255,9 +255,9 @@ checksum = "cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f"
255
255
 
256
256
  [[package]]
257
257
  name = "serde"
258
- version = "1.0.228"
258
+ version = "1.0.229"
259
259
  source = "registry+https://github.com/rust-lang/crates.io-index"
260
- checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e"
260
+ checksum = "4148590afebada386688f18773da617792bf2ef03ffc1e4cbd2b1d45b023e0ba"
261
261
  dependencies = [
262
262
  "serde_core",
263
263
  "serde_derive",
@@ -265,29 +265,29 @@ dependencies = [
265
265
 
266
266
  [[package]]
267
267
  name = "serde_core"
268
- version = "1.0.228"
268
+ version = "1.0.229"
269
269
  source = "registry+https://github.com/rust-lang/crates.io-index"
270
- checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad"
270
+ checksum = "67dca2c9c51e58a4791a4b1ed58308b39c64224d349a935ab5039aa360942a48"
271
271
  dependencies = [
272
272
  "serde_derive",
273
273
  ]
274
274
 
275
275
  [[package]]
276
276
  name = "serde_derive"
277
- version = "1.0.228"
277
+ version = "1.0.229"
278
278
  source = "registry+https://github.com/rust-lang/crates.io-index"
279
- checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79"
279
+ checksum = "e7a5d71263a5a7d47b41f6b3f06ba276f10cc18b0931f1799f710578e2309348"
280
280
  dependencies = [
281
281
  "proc-macro2",
282
282
  "quote",
283
- "syn",
283
+ "syn 3.0.3",
284
284
  ]
285
285
 
286
286
  [[package]]
287
287
  name = "serde_json"
288
- version = "1.0.150"
288
+ version = "1.0.151"
289
289
  source = "registry+https://github.com/rust-lang/crates.io-index"
290
- checksum = "e8014e44b4736ed0538adeecded0fce2a272f22dc9578a7eb6b2d9993c74cfb9"
290
+ checksum = "c841b55ecdae098c80dcae9cf767f6f8a0c2cdb3416bbef72181df4d0fe73f14"
291
291
  dependencies = [
292
292
  "itoa",
293
293
  "memchr",
@@ -307,6 +307,17 @@ dependencies = [
307
307
  "unicode-ident",
308
308
  ]
309
309
 
310
+ [[package]]
311
+ name = "syn"
312
+ version = "3.0.3"
313
+ source = "registry+https://github.com/rust-lang/crates.io-index"
314
+ checksum = "53e9bae58849f64dfa4f5d5ae372c8341f7305f82a3868709269343628b659a3"
315
+ dependencies = [
316
+ "proc-macro2",
317
+ "quote",
318
+ "unicode-ident",
319
+ ]
320
+
310
321
  [[package]]
311
322
  name = "target-lexicon"
312
323
  version = "0.12.16"
@@ -1,9 +1,9 @@
1
1
  [package]
2
2
  name = "pyvectorhound"
3
- version = "1.0.0"
3
+ version = "1.3.0"
4
4
  edition = "2021"
5
5
  authors = ["Georgi Mammen Mullassery <mullassery@gmail.com>"]
6
- license = "MIT"
6
+ license = "Proprietary"
7
7
  description = "Vector search diagnostics engine for RAG/LLM systems"
8
8
  readme = "README.md"
9
9
 
@@ -0,0 +1,161 @@
1
+ # 🎯 Dashboard Keyboard Shortcuts & Usage
2
+
3
+ ## Auto-Start on Installation
4
+
5
+ The CLI dashboard **starts automatically** when you run the package for the first time or import it in Python:
6
+
7
+ ```bash
8
+ $ pip install [package]
9
+ # ✓ Dashboard appears in terminal automatically
10
+
11
+ $ python3 -c "from [package] import *"
12
+ # ✓ Dashboard initializes in background
13
+ ```
14
+
15
+ The dashboard runs in **persistent daemon mode** — if you close it, it restarts automatically with your keyboard shortcuts.
16
+
17
+ ---
18
+
19
+ ## ⌨️ Keyboard Shortcuts
20
+
21
+ After installing the package, run:
22
+
23
+ ```bash
24
+ bash <(curl -s https://raw.githubusercontent.com/Mullassery/[PACKAGE]/main/scripts/setup_shortcuts.sh)
25
+ ```
26
+
27
+ This adds aliases to your `~/.zshrc` or `~/.bashrc`:
28
+
29
+ ### Quick Access (all packages)
30
+
31
+ ```bash
32
+ dashboards # Show all available dashboard shortcuts
33
+ ```
34
+
35
+ ### Per-Package Shortcuts
36
+
37
+ Replace `[PACKAGE]` with any installed Mullassery package name:
38
+
39
+ ```bash
40
+ dash-[PACKAGE] # Static snapshot (single view)
41
+ dash-[PACKAGE]-live # Live dashboard (Ctrl+C to close)
42
+ dash-[PACKAGE]-export # Export metrics to JSON
43
+ ```
44
+
45
+ ### Examples
46
+
47
+ ```bash
48
+ # PyStreamAI
49
+ $ dash-pystreamai # View deployment metrics snapshot
50
+ $ dash-pystreamai-live # Watch real-time inference latency
51
+ $ dash-pystreamai-export # Save metrics for monitoring
52
+
53
+ # PyRoboReplay
54
+ $ dash-pyroboreplay # View RGB+Thermal fusion status
55
+ $ dash-pyroboreplay-live # Monitor decision reconstruction in real-time
56
+ $ dash-pyroboreplay-export # Export to Prometheus/Datadog
57
+
58
+ # PyTerrainMap
59
+ $ dash-pyterrainmap # View spatial layer metrics
60
+ $ dash-pyterrainmap-live # Watch fleet learning converge
61
+ $ dash-pyterrainmap-export # Save to /tmp/pyterrainmap_metrics.json
62
+ ```
63
+
64
+ ---
65
+
66
+ ## 🔄 Dashboard Modes
67
+
68
+ ### Static Snapshot (`--static`)
69
+ ```bash
70
+ $ dash-pystreamai # Single view, exits immediately
71
+ # Useful for: CI/CD logs, monitoring integration, one-time checks
72
+ ```
73
+
74
+ ### Live View (`--live`)
75
+ ```bash
76
+ $ dash-pystreamai-live # Continuous updates until Ctrl+C
77
+ # Useful for: real-time monitoring, troubleshooting, development
78
+ ```
79
+
80
+ ### JSON Export (`--export`)
81
+ ```bash
82
+ $ dash-pystreamai-export # Saves to /tmp/pystreamai_metrics.json
83
+ # Useful for: integration with Prometheus, Datadog, custom dashboards
84
+ ```
85
+
86
+ ---
87
+
88
+ ## 🛑 Remove Keyboard Shortcuts
89
+
90
+ To uninstall all dashboard aliases:
91
+
92
+ ```bash
93
+ bash <(curl -s https://raw.githubusercontent.com/Mullassery/[PACKAGE]/main/scripts/setup_shortcuts.sh) --remove
94
+ ```
95
+
96
+ This removes all `dash-*` aliases from your shell config.
97
+
98
+ ---
99
+
100
+ ## 📊 Monitoring Integration
101
+
102
+ Export metrics for external monitoring systems:
103
+
104
+ ```bash
105
+ # Prometheus
106
+ $ dash-pystreamai-export > prometheus_metrics.txt
107
+
108
+ # Datadog (with custom agent)
109
+ $ dash-pystreamai-live | \
110
+ grep -o 'Status.*' | \
111
+ datadog-agent custom-metric
112
+
113
+ # JSON for custom dashboards
114
+ $ dash-pystreamai-export | jq '.metrics'
115
+ ```
116
+
117
+ ---
118
+
119
+ ## ❓ Troubleshooting
120
+
121
+ **Shortcuts not working?**
122
+ ```bash
123
+ # Reload shell config
124
+ $ source ~/.zshrc # macOS/Linux (zsh)
125
+ $ source ~/.bashrc # Linux (bash)
126
+
127
+ # Or restart your terminal
128
+ ```
129
+
130
+ **Dashboard won't start?**
131
+ ```bash
132
+ # Ensure package is installed
133
+ $ pip list | grep pystreamai
134
+
135
+ # Start manually
136
+ $ pystreamai dashboard --static
137
+ ```
138
+
139
+ **Dashboard keeps closing?**
140
+ ```bash
141
+ # Use live mode (restarts automatically)
142
+ $ dash-pystreamai-live
143
+ ```
144
+
145
+ ---
146
+
147
+ ## 📖 Package-Specific Shortcuts
148
+
149
+ The following Mullassery packages support dashboard shortcuts:
150
+
151
+ - ✅ PyStreamAI (deployment metrics)
152
+ - ✅ PyStreamMCP (tool orchestration)
153
+ - ✅ PyStreamPDF (document processing)
154
+ - ✅ PyStreamXL (formula extraction)
155
+ - ✅ StatGuardian (data quality)
156
+ - ✅ PyReverseETL (activation pipelines)
157
+ - ✅ PyTerrainMap (spatial analysis)
158
+ - ✅ PyRoboReplay (multi-modal fusion)
159
+ - ✅ PyRoboSimulator (world engine)
160
+
161
+ Run `dashboards` to see all available shortcuts.