openclaw-dashboard 0.2.0__py3-none-any.whl

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.
@@ -0,0 +1,305 @@
1
+ Metadata-Version: 2.4
2
+ Name: openclaw-dashboard
3
+ Version: 0.2.0
4
+ Summary: Real-time observability dashboard for OpenClaw AI agents
5
+ Home-page: https://github.com/vivekchand/openclaw-dashboard
6
+ Author: Vivek Chand
7
+ Author-email: vivek@openclaw.dev
8
+ License: MIT
9
+ Project-URL: Bug Reports, https://github.com/vivekchand/openclaw-dashboard/issues
10
+ Project-URL: Source, https://github.com/vivekchand/openclaw-dashboard
11
+ Keywords: openclaw moltbot dashboard observability ai agent monitoring
12
+ Classifier: Development Status :: 4 - Beta
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: License :: OSI Approved :: MIT License
15
+ Classifier: Programming Language :: Python :: 3
16
+ Classifier: Programming Language :: Python :: 3.8
17
+ Classifier: Programming Language :: Python :: 3.9
18
+ Classifier: Programming Language :: Python :: 3.10
19
+ Classifier: Programming Language :: Python :: 3.11
20
+ Classifier: Programming Language :: Python :: 3.12
21
+ Classifier: Topic :: Software Development :: Quality Assurance
22
+ Classifier: Topic :: System :: Monitoring
23
+ Requires-Python: >=3.8
24
+ Description-Content-Type: text/markdown
25
+ License-File: LICENSE
26
+ Requires-Dist: flask>=2.0
27
+ Provides-Extra: otel
28
+ Requires-Dist: opentelemetry-proto>=1.20.0; extra == "otel"
29
+ Requires-Dist: protobuf>=4.21.0; extra == "otel"
30
+ Dynamic: author
31
+ Dynamic: author-email
32
+ Dynamic: classifier
33
+ Dynamic: description
34
+ Dynamic: description-content-type
35
+ Dynamic: home-page
36
+ Dynamic: keywords
37
+ Dynamic: license
38
+ Dynamic: license-file
39
+ Dynamic: project-url
40
+ Dynamic: provides-extra
41
+ Dynamic: requires-dist
42
+ Dynamic: requires-python
43
+ Dynamic: summary
44
+
45
+ # 🦞 OpenClaw Dashboard
46
+
47
+ **See your agent think.** The Grafana for your personal AI agent.
48
+
49
+ Real-time observability dashboard for [OpenClaw](https://github.com/nicobailon/openclaw)/[Moltbot](https://github.com/nicobailon/moltbot) AI agents. One file. Zero config. Just run it.
50
+
51
+ ![Overview](screenshots/overview.jpg)
52
+
53
+ ---
54
+
55
+ ## ⚑ Quick Start
56
+
57
+ ```bash
58
+ pip install openclaw-dashboard
59
+ openclaw-dashboard
60
+ ```
61
+
62
+ Or run directly:
63
+
64
+ ```bash
65
+ pip install flask
66
+ python3 dashboard.py
67
+ ```
68
+
69
+ Opens at **http://localhost:8900** β€” auto-detects your OpenClaw workspace.
70
+
71
+ ---
72
+
73
+ ## πŸ“Έ Screenshots
74
+
75
+ <table>
76
+ <tr>
77
+ <td align="center"><strong>Overview</strong><br><img src="screenshots/overview.jpg" width="380"/></td>
78
+ <td align="center"><strong>Flow Visualization</strong><br><img src="screenshots/flow.jpg" width="380"/></td>
79
+ </tr>
80
+ <tr>
81
+ <td align="center"><strong>Sessions</strong><br><img src="screenshots/sessions.jpg" width="380"/></td>
82
+ <td align="center"><strong>Cron Jobs</strong><br><img src="screenshots/crons.jpg" width="380"/></td>
83
+ </tr>
84
+ <tr>
85
+ <td align="center"><strong>Live Logs</strong><br><img src="screenshots/logs.jpg" width="380"/></td>
86
+ <td align="center"><strong>Memory Files</strong><br><img src="screenshots/memory.jpg" width="380"/></td>
87
+ </tr>
88
+ </table>
89
+
90
+ ---
91
+
92
+ ## ✨ Features
93
+
94
+ | Tab | What it shows |
95
+ |-----|--------------|
96
+ | **Overview** | Model, sessions, crons, tokens, memory, **❀️ health checks** (auto-refresh via SSE), **πŸ”₯ activity heatmap** (GitHub-style), recent logs |
97
+ | **πŸ“Š Usage** | **Token/cost tracking** β€” bar chart of tokens per day (14 days), today/week/month totals, cost breakdown. **With OTLP**: real token counts, actual cost, avg run duration, messages processed, model breakdown |
98
+ | **Sessions** | All active agent sessions with model, channel, token usage, last activity |
99
+ | **Crons** | Scheduled jobs with status, schedule, last run, next run, duration |
100
+ | **Logs** | Parsed JSON logs with color-coded levels, configurable line count, **real-time SSE streaming** |
101
+ | **Memory** | Clickable file browser for SOUL.md, MEMORY.md, AGENTS.md, daily memory files |
102
+ | **πŸ“œ Transcripts** | **Session transcript viewer** β€” browse .jsonl files, click to see chat-bubble conversation view with color-coded roles, expand/collapse |
103
+ | **Flow** | **Real-time animated SVG** showing data flow: You β†’ Channels β†’ Gateway β†’ Brain β†’ Tools β†’ Infrastructure |
104
+
105
+ ### Flow Visualization
106
+
107
+ The Flow tab is the star β€” a live animated architecture diagram that lights up in real-time as your agent processes messages:
108
+
109
+ - 🟣 **Purple particles** β€” your message entering through a channel
110
+ - πŸ”΅ **Blue particles** β€” request flowing to the brain
111
+ - 🟑 **Yellow particles** β€” tool calls (exec, browser, search, cron, tts, memory)
112
+ - 🟒 **Green particles** β€” response flowing back to you
113
+ - πŸ”΄ **Red flash** β€” errors
114
+ - πŸ”΅ **Cyan pulses** β€” infrastructure layer activity (network, storage, runtime)
115
+
116
+ ### New in v0.2: OTLP Receiver + Full Observability
117
+
118
+ - **πŸ“‘ OTLP Receiver** β€” Dashboard becomes a lightweight OTel collector. Point OpenClaw at it, get real metrics. No Grafana/Prometheus needed.
119
+ - **πŸ”₯ Activity Heatmap** β€” GitHub-style 7Γ—24 grid showing when your agent is busiest. Pure CSS, no libraries.
120
+ - **❀️ Health Checks** β€” Gateway, disk, memory, uptime, OTLP status at a glance. Auto-refreshes every 30s via SSE.
121
+ - **πŸ“Š Real Token/Cost Tracking** β€” With OTLP: real token counts, actual cost, model breakdown, avg run duration.
122
+ - **πŸ“œ Transcript Viewer** β€” Read your agent's conversations in a beautiful chat-bubble UI. Color-coded roles, expand/collapse for long messages.
123
+
124
+ ---
125
+
126
+ ## πŸ€” What Makes This Different?
127
+
128
+ | | OpenClaw Dashboard | Langfuse | AgentOps |
129
+ |---|---|---|---|
130
+ | **Install** | `pip install openclaw-dashboard` | Docker + Postgres | SDK + cloud account |
131
+ | **Config** | Zero. Auto-detects everything. | Database URLs, API keys | API keys, SDK init |
132
+ | **Focus** | Personal AI agent | Enterprise LLM apps | Enterprise agent monitoring |
133
+ | **Memory-first** | βœ… Browse SOUL.md, MEMORY.md, daily notes | ❌ | ❌ |
134
+ | **Single file** | βœ… One Python file, one dependency | ❌ Multi-service | ❌ Cloud service |
135
+ | **Transcripts** | βœ… Chat-bubble viewer built-in | βœ… (needs SDK) | βœ… (needs SDK) |
136
+ | **Cost tracking** | βœ… Zero config (OTLP or log parsing) | βœ… (needs SDK) | βœ… (needs SDK) |
137
+ | **Built-in OTel collector** | βœ… OTLP/HTTP receiver | ❌ | ❌ |
138
+
139
+ **TL;DR:** Langfuse and AgentOps are great for teams building LLM products. OpenClaw Dashboard is for the person running a personal AI agent on their own machine β€” zero instrumentation, zero config, memory-first. It's the **Grafana for your personal AI agent**.
140
+
141
+ ---
142
+
143
+ ## πŸ“‘ Real-time Metrics (OpenTelemetry)
144
+
145
+ The dashboard can act as a **lightweight OpenTelemetry collector** β€” no need for Grafana, Prometheus, or a separate OTel Collector. Just point OpenClaw at the dashboard.
146
+
147
+ ### Setup
148
+
149
+ **1. Install OTLP support:**
150
+
151
+ ```bash
152
+ pip install openclaw-dashboard[otel]
153
+ ```
154
+
155
+ **2. Configure OpenClaw** β€” add one line to your config:
156
+
157
+ ```yaml
158
+ diagnostics:
159
+ otel:
160
+ endpoint: http://localhost:8900
161
+ ```
162
+
163
+ That's it! The dashboard now receives real-time metrics directly from OpenClaw.
164
+
165
+ ### What you get
166
+
167
+ | Metric | Source | What it shows |
168
+ |--------|--------|---------------|
169
+ | **Token counts** per day | `openclaw.tokens` | Real input/output/total token usage (bar chart) |
170
+ | **Cost** per day | `openclaw.cost.usd` | Actual cost from your provider |
171
+ | **Avg run duration** | `openclaw.run.duration_ms` | How long model completions take |
172
+ | **Messages processed** | `openclaw.message.processed` | Message throughput |
173
+ | **Model breakdown** | attributes | Which models are being used and how much |
174
+ | **OTLP Connected** indicator | health check | Green when data is flowing |
175
+
176
+ ### OTLP Endpoints
177
+
178
+ - `POST /v1/metrics` β€” receives OTLP/HTTP protobuf metric data
179
+ - `POST /v1/traces` β€” receives OTLP/HTTP protobuf trace data
180
+
181
+ ### Without OTLP
182
+
183
+ Everything still works! The dashboard falls back to parsing session JSONL files for token estimates. OTLP just gives you **real** numbers instead of estimates.
184
+
185
+ ### Persistence
186
+
187
+ Metrics are stored in-memory (capped at ~10K entries per category, 14-day retention) and auto-persisted to `{workspace}/.openclaw-dashboard-metrics.json` every 60 seconds. Override the path with `--metrics-file` or `OPENCLAW_METRICS_FILE`.
188
+
189
+ ---
190
+
191
+ ## βš™οΈ Configuration
192
+
193
+ ### CLI Arguments
194
+
195
+ ```bash
196
+ openclaw-dashboard --port 9000 # Custom port (default: 8900)
197
+ openclaw-dashboard --host 127.0.0.1 # Bind to localhost only
198
+ openclaw-dashboard --workspace ~/mybot # Custom workspace path
199
+ openclaw-dashboard --log-dir /var/log # Custom log directory
200
+ openclaw-dashboard --sessions-dir ~/data # Custom sessions directory
201
+ openclaw-dashboard --metrics-file ~/m.json # Custom metrics persistence path
202
+ openclaw-dashboard --name "Alice" # Your name in Flow visualization
203
+ ```
204
+
205
+ ### Environment Variables
206
+
207
+ | Variable | Description | Default |
208
+ |----------|-------------|---------|
209
+ | `OPENCLAW_HOME` | Agent workspace directory | Auto-detected |
210
+ | `OPENCLAW_WORKSPACE` | Alternative to OPENCLAW_HOME | Auto-detected |
211
+ | `OPENCLAW_SESSIONS_DIR` | Sessions directory (.jsonl transcripts) | Auto-detected |
212
+ | `OPENCLAW_LOG_DIR` | Log directory | `/tmp/moltbot` |
213
+ | `OPENCLAW_METRICS_FILE` | Metrics persistence file path | `{workspace}/.openclaw-dashboard-metrics.json` |
214
+ | `OPENCLAW_USER` | Your name in Flow tab | `You` |
215
+
216
+ ### Auto-Detection
217
+
218
+ If no paths are configured, the dashboard automatically searches for:
219
+
220
+ 1. **Workspace**: Checks `~/.clawdbot/agents/main/config.json` β†’ `~/.clawdbot/workspace` β†’ `~/clawd` β†’ `~/openclaw` β†’ current directory. Looks for `SOUL.md`, `AGENTS.md`, `MEMORY.md`, or `memory/` directory.
221
+ 2. **Logs**: Checks `/tmp/moltbot` β†’ `/tmp/openclaw` β†’ `~/.clawdbot/logs`
222
+ 3. **Sessions**: Reads from `~/.clawdbot/agents/main/sessions/`
223
+ 4. **Crons**: Reads from `~/.clawdbot/cron/jobs.json`
224
+
225
+ ---
226
+
227
+ ## πŸ—οΈ How It Works
228
+
229
+ The dashboard is a single-file Flask app that reads directly from your OpenClaw/Moltbot data directories:
230
+
231
+ ```
232
+ Your Agent (Moltbot) OpenClaw Dashboard
233
+ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
234
+ β”‚ Writes logs to │─────────▢│ Reads & parses β”‚
235
+ β”‚ /tmp/moltbot/ β”‚ β”‚ JSON log lines β”‚
236
+ β”‚ β”‚ β”‚ β”‚
237
+ β”‚ Stores sessions │─────────▢│ Lists sessions β”‚
238
+ β”‚ in ~/.clawdbot/ β”‚ β”‚ with metadata β”‚
239
+ β”‚ β”‚ β”‚ β”‚
240
+ β”‚ Saves crons to │─────────▢│ Shows schedules β”‚
241
+ β”‚ cron/jobs.json β”‚ β”‚ and status β”‚
242
+ β”‚ β”‚ β”‚ β”‚
243
+ β”‚ Agent workspace │─────────▢│ Browses memory β”‚
244
+ β”‚ SOUL.md, etc. β”‚ β”‚ files inline β”‚
245
+ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
246
+ ```
247
+
248
+ **Real-time streaming** uses `tail -f` piped through Server-Sent Events (SSE) β€” no WebSockets, no dependencies, just works.
249
+
250
+ ---
251
+
252
+ ## πŸ“¦ Installation Options
253
+
254
+ ### pip (recommended)
255
+
256
+ ```bash
257
+ pip install openclaw-dashboard
258
+ openclaw-dashboard
259
+ ```
260
+
261
+ ### From source
262
+
263
+ ```bash
264
+ git clone https://github.com/vivekchand/openclaw-dashboard.git
265
+ cd openclaw-dashboard
266
+ pip install -r requirements.txt
267
+ python3 dashboard.py
268
+ ```
269
+
270
+ ### One-liner
271
+
272
+ ```bash
273
+ curl -sSL https://raw.githubusercontent.com/vivekchand/openclaw-dashboard/main/install.sh | bash
274
+ ```
275
+
276
+ ---
277
+
278
+ ## πŸ”§ Requirements
279
+
280
+ - **Python 3.8+**
281
+ - **Flask** (only required dependency)
282
+ - **opentelemetry-proto + protobuf** (optional, for OTLP receiver β€” `pip install openclaw-dashboard[otel]`)
283
+ - **OpenClaw/Moltbot** running on the same machine (reads its logs and state files)
284
+ - Linux/macOS (uses `tail`, `df`, `free`, `/proc/loadavg`)
285
+
286
+ ---
287
+
288
+ ## πŸ“„ License
289
+
290
+ MIT β€” do whatever you want with it.
291
+
292
+ ---
293
+
294
+ ## πŸ™ Credits
295
+
296
+ - Built by [Vivek Chand](https://linkedin.com/in/vivekchand46) as part of the OpenClaw ecosystem
297
+ - Powered by [OpenClaw](https://github.com/nicobailon/openclaw) and [Moltbot](https://github.com/nicobailon/moltbot)
298
+ - The Flow visualization was inspired by watching an AI agent actually think
299
+
300
+ ---
301
+
302
+ <p align="center">
303
+ <strong>🦞 See your agent think</strong><br>
304
+ <sub>Star this repo if you find it useful!</sub>
305
+ </p>
@@ -0,0 +1,7 @@
1
+ dashboard.py,sha256=7IPP7zAOvROZgFucwK824SmWz3ofp4d37NbE6R5M2WU,118059
2
+ openclaw_dashboard-0.2.0.dist-info/licenses/LICENSE,sha256=zdQBHvfCz4k8T_ib6mtyWYbQXGtD-g8Ih3t20sax_xE,1068
3
+ openclaw_dashboard-0.2.0.dist-info/METADATA,sha256=HSHloGDqeQA1s1o7-PiNZdDHFtPzOkwu7u5FvDeYBvA,12129
4
+ openclaw_dashboard-0.2.0.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
5
+ openclaw_dashboard-0.2.0.dist-info/entry_points.txt,sha256=KOl_T1Y4jpcei3v6mUBNAZjvQ_taCKcuTcK5-RIYJVo,54
6
+ openclaw_dashboard-0.2.0.dist-info/top_level.txt,sha256=nUjTqzgVogKOY9x6wFtA4q49KTJadlMNYm7wGoqlPMg,10
7
+ openclaw_dashboard-0.2.0.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (80.10.2)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ openclaw-dashboard = dashboard:main
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Vivek Chand
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1 @@
1
+ dashboard