💗 llove
A cute, terminal-first Artifact for inspecting LLMesh data — with llove.
.--.
/ \ llove
( ^ ^ ) "Made with llove"
\(--)/ ── Watch your LLMesh with llove
/ \
──────
ll♥ve
llove は Claude HTML Artifacts のターミナル版 を目指したダッシュボード CLI です。
LLMesh の SensorEvent / SPC / RAG / Audit / Trace を 1 つの TUI(ターミナル UI)で美しく流し、
そのまま 1 ファイル HTML にエクスポート して Slack / Issue / プレゼンに貼れます。
pip install llmesh-llove # PyPI 配布名 (llmesh-mcp と統一)
llove demo # 30 秒で動くフル機能デモ
なぜ llove か
LLM 時代の運用・研究の現場では、「いま何が起きているかを 1 画面で見せる」 がいつも難所になります。 LLMesh は産業 IoT・SCADA・RAG・Audit・Trace を統一しましたが、可視化 はまだ JSON / ログ依存。
llove はその穴を埋めます:
- 30 秒で動く:
pip install llove && llove demo - LLMesh と直結:
llove view --source llmesh+modbus://... - HTML で共有:
llove export --html dashboard.html(Claude Artifacts 流の単一 HTML) - オフラインでも動く: 合成データだけで完結、ネットワーク不要
- 依存ゼロでも見える: 本体は Textual + Rich のみ、LLMesh は オプショナル
5 秒で見えるイメージ
┌─ llove demo ──────────────────────────────────────────────────────────┐
│ ┌─ SensorEvent stream ─────────┐ ┌─ SPC chart (CUSUM h=5.0) ────────┐ │
│ │ 03:22:08 bearing_temp 68.4 │ │ ╭────────────╮ │ │
│ │ 03:22:09 bearing_temp 69.1 │ │ ──╯ ╰──── h │ │
│ │ 03:22:10 bearing_temp 70.7 │ │ │ │
│ │ 03:22:11 bearing_temp 74.3 │ │ │ │
│ │ 03:22:12 bearing_temp 78.9 │ │ ▁▂▃▄▆█ ▶ ALARM 03:22:11Z │ │
│ └──────────────────────────────┘ └──────────────────────────────────┘ │
│ ┌─ Audit log ──────────────────────────────────────────────────────┐ │
│ │ 03:22:11 firewall.allow layer=L2 user=ops │ │
│ │ 03:22:11 cusum.alarm sensor=bearing_temp_07 cusum=+9.4 │ │
│ │ 03:22:11 llm.explain tokens=237 latency=412ms │ │
│ └──────────────────────────────────────────────────────────────────┘ │
│ q: quit r: refresh h: help space: live/replay e: export-html │
└────────────────────────────────────────────────────────────────────────┘
Quick Start
1. インストール
pip install llove # 本体(オフラインで動く)
pip install "llove[llmesh]" # LLMesh と接続
pip install "llove[plots,llmesh]"# textual-plotext のグラフ + LLMesh
2. 30 秒デモ
llove demo # 合成データでフル機能のデモ
llove demo --tutorial # 各ビューを順に解説しながら触る
llove --lang ja demo --scenario scada # UI を日本語で(v0.2.0+)
多言語化 (i18n)
UI は --lang en / --lang ja で切り替えられます(環境変数 LLOVE_LANG=ja、システムロケール自動検出にも対応)。新しい言語を足すには llove/i18n/locales/<lang>.toml を 1 つ追加するだけ。詳細は docs/i18n.md。
3. 自分のデータを見る
llove tail logs/audit.jsonl --view audit_log
llove view --source llmesh+modbus://10.0.0.10:502
llove view --source sqlite:///data.db --table sensors
4. HTML として共有
llove export --source mock://demo --html dashboard.html
# → dashboard.html を Slack / Issue / Twitter に貼る
基本コマンド
llove demo # フル機能デモ(合成データ)
llove demo --list # シナリオ一覧
llove demo --scenario firewall # 個別シナリオを起動
llove view --source <URI> # ライブ表示
llove tail <file> # ファイル末尾を流す
llove export <source> --html <path> # 1 ファイル HTML
llove --help # コマンド一覧
LLMesh 機能カバレッジシナリオ
llove demo --scenario <name> で、LLMesh の各機能を オフライン合成データで 体験できます。
| name | 何を見せる | カバーする LLMesh 機能 |
|---|---|---|
firewall |
12 prompt が L0/L1/L1.5/L2 で BLOCK / SUMMARIZE / ALLOW される様子 | PromptFirewall 4 層 |
scada |
センサー drift → CUSUM alarm → LLM の Markdown 説明 | ExplainedCUSUM + LLMExplainer |
multimodal |
数値センサー × 画像 caption の AND 結合 SPC | UnifiedSPC + VLMFeatureExtractor |
rag |
同じクエリを 3 ストア(Numpy / SQLite / LSH ANN)で比較 | RAG 3 段ストア |
backends |
同じプロンプトを Ollama / OpenAI / Anthropic に投げた風の比較 | LLM backend ABC |
audit |
5 エントリ追加 → 改ざん → verify_chain() が検知 |
AuditTrail HMAC chain |
reliability |
パケット損失下で ACK / RETRANSMIT / TTL 失効を実演 | MessageAssembler + ChunkSender |
自分のシナリオを追加するのは超簡単です — docs/contributing-scenarios.md と llove/demo/scenarios/_template.py を参照(5 分でできます)。
URI スキーム例
| URI | 意味 |
|---|---|
mock://demo |
合成データ |
jsonl:///path/to/file.jsonl |
JSON Lines ファイル |
sqlite:///data.db?table=events |
SQLite テーブル |
llmesh+modbus://10.0.0.10:502 |
LLMesh + Modbus アダプタ |
llmesh+opcua://opc.tcp://... |
LLMesh + OPC-UA |
開発環境
devcontainer / docker-compose で 1 発
# devcontainer (VS Code) — クローン後 "Reopen in Container"
# または手動で:
docker compose up -d
docker compose exec dev bash
pip install -e ".[dev,all]"
llove demo
ローカルセットアップ
git clone git@github.com:furuse-kazufumi/llove.git
cd llove
python -m venv .venv && source .venv/bin/activate
pip install -e ".[dev,all]"
pytest
llove demo
アーキテクチャ概観
┌────────────────────────────────────────────────────────┐
│ Data Sources (DataSource ABC) │
│ mock / jsonl / sqlite / llmesh / phoenix / custom │
└───────────────┬────────────────────────────────────────┘
│
▼
┌────────────────────────────────────────────────────────┐
│ Views (View ABC) │
│ sensor_stream / spc_chart / audit_log / │
│ rag_hits / trace_timeline │
└───────────────┬────────────────────────────────────────┘
│
┌───────┴────────┐
▼ ▼
┌────────┐ ┌──────────────┐
│ Textual│ │ HTML Export │
│ (TUI) │ │ (single .html)│
└────────┘ └──────────────┘
詳細は REQUIREMENTS.md と ROADMAP.md。
Docs
REQUIREMENTS.md— 要件定義 + TRIZ 観点での矛盾解消ROADMAP.md— v0.1 〜 v1.0 のフェーズ計画docs/snapshots/— 各バージョンで動く絵(GitHub プレビュー)
ライセンス
MIT © 2026 Kazufumi Furuse
Made with llove — お気軽に Issue / PR / アイデアをどうぞ.
Release files for llmesh-llove 0.2.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| llmesh_llove-0.2.2.tar.gz | 153.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| llmesh_llove-0.2.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 216.0 kB
Release files / llmesh_llove-0.2.2.tar.gz
| Download URL | llmesh_llove-0.2.2.tar.gz |
|---|---|
| Size | 153.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d1638691a6e313ed9d8a9358ca90938662f3eee18d1592743d80dc6ea93ce752
|
|
BLAKE2b-256 checksum How to use checksums |
6c4cc2e7d9b32b089c300ad5eec91ad57f30e8fab66b912d29e05e36aa0c4e7b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.3
|
Release files / llmesh_llove-0.2.2-py3-none-any.whl
| Download URL | llmesh_llove-0.2.2-py3-none-any.whl |
|---|---|
| Size | 62.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
573a18dfa2eb4f1aca1a8dceb9c21972f7f09dfc5861f044f64e6fe2cb37b49f
|
|
BLAKE2b-256 checksum How to use checksums |
985fb1ccb55002b04f9e25554afacbb5411bc62a40d6223480c4730acef36a17
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.3
|