openclaw-dashboard 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.
- openclaw_dashboard-0.2.0/LICENSE +21 -0
- openclaw_dashboard-0.2.0/PKG-INFO +305 -0
- openclaw_dashboard-0.2.0/README.md +261 -0
- openclaw_dashboard-0.2.0/dashboard.py +2517 -0
- openclaw_dashboard-0.2.0/openclaw_dashboard.egg-info/PKG-INFO +305 -0
- openclaw_dashboard-0.2.0/openclaw_dashboard.egg-info/SOURCES.txt +10 -0
- openclaw_dashboard-0.2.0/openclaw_dashboard.egg-info/dependency_links.txt +1 -0
- openclaw_dashboard-0.2.0/openclaw_dashboard.egg-info/entry_points.txt +2 -0
- openclaw_dashboard-0.2.0/openclaw_dashboard.egg-info/requires.txt +5 -0
- openclaw_dashboard-0.2.0/openclaw_dashboard.egg-info/top_level.txt +1 -0
- openclaw_dashboard-0.2.0/setup.cfg +4 -0
- openclaw_dashboard-0.2.0/setup.py +47 -0
|
@@ -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,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
|
+

|
|
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,261 @@
|
|
|
1
|
+
# π¦ OpenClaw Dashboard
|
|
2
|
+
|
|
3
|
+
**See your agent think.** The Grafana for your personal AI agent.
|
|
4
|
+
|
|
5
|
+
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.
|
|
6
|
+
|
|
7
|
+

|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## β‘ Quick Start
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
pip install openclaw-dashboard
|
|
15
|
+
openclaw-dashboard
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
Or run directly:
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
pip install flask
|
|
22
|
+
python3 dashboard.py
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
Opens at **http://localhost:8900** β auto-detects your OpenClaw workspace.
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## πΈ Screenshots
|
|
30
|
+
|
|
31
|
+
<table>
|
|
32
|
+
<tr>
|
|
33
|
+
<td align="center"><strong>Overview</strong><br><img src="screenshots/overview.jpg" width="380"/></td>
|
|
34
|
+
<td align="center"><strong>Flow Visualization</strong><br><img src="screenshots/flow.jpg" width="380"/></td>
|
|
35
|
+
</tr>
|
|
36
|
+
<tr>
|
|
37
|
+
<td align="center"><strong>Sessions</strong><br><img src="screenshots/sessions.jpg" width="380"/></td>
|
|
38
|
+
<td align="center"><strong>Cron Jobs</strong><br><img src="screenshots/crons.jpg" width="380"/></td>
|
|
39
|
+
</tr>
|
|
40
|
+
<tr>
|
|
41
|
+
<td align="center"><strong>Live Logs</strong><br><img src="screenshots/logs.jpg" width="380"/></td>
|
|
42
|
+
<td align="center"><strong>Memory Files</strong><br><img src="screenshots/memory.jpg" width="380"/></td>
|
|
43
|
+
</tr>
|
|
44
|
+
</table>
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## β¨ Features
|
|
49
|
+
|
|
50
|
+
| Tab | What it shows |
|
|
51
|
+
|-----|--------------|
|
|
52
|
+
| **Overview** | Model, sessions, crons, tokens, memory, **β€οΈ health checks** (auto-refresh via SSE), **π₯ activity heatmap** (GitHub-style), recent logs |
|
|
53
|
+
| **π 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 |
|
|
54
|
+
| **Sessions** | All active agent sessions with model, channel, token usage, last activity |
|
|
55
|
+
| **Crons** | Scheduled jobs with status, schedule, last run, next run, duration |
|
|
56
|
+
| **Logs** | Parsed JSON logs with color-coded levels, configurable line count, **real-time SSE streaming** |
|
|
57
|
+
| **Memory** | Clickable file browser for SOUL.md, MEMORY.md, AGENTS.md, daily memory files |
|
|
58
|
+
| **π Transcripts** | **Session transcript viewer** β browse .jsonl files, click to see chat-bubble conversation view with color-coded roles, expand/collapse |
|
|
59
|
+
| **Flow** | **Real-time animated SVG** showing data flow: You β Channels β Gateway β Brain β Tools β Infrastructure |
|
|
60
|
+
|
|
61
|
+
### Flow Visualization
|
|
62
|
+
|
|
63
|
+
The Flow tab is the star β a live animated architecture diagram that lights up in real-time as your agent processes messages:
|
|
64
|
+
|
|
65
|
+
- π£ **Purple particles** β your message entering through a channel
|
|
66
|
+
- π΅ **Blue particles** β request flowing to the brain
|
|
67
|
+
- π‘ **Yellow particles** β tool calls (exec, browser, search, cron, tts, memory)
|
|
68
|
+
- π’ **Green particles** β response flowing back to you
|
|
69
|
+
- π΄ **Red flash** β errors
|
|
70
|
+
- π΅ **Cyan pulses** β infrastructure layer activity (network, storage, runtime)
|
|
71
|
+
|
|
72
|
+
### New in v0.2: OTLP Receiver + Full Observability
|
|
73
|
+
|
|
74
|
+
- **π‘ OTLP Receiver** β Dashboard becomes a lightweight OTel collector. Point OpenClaw at it, get real metrics. No Grafana/Prometheus needed.
|
|
75
|
+
- **π₯ Activity Heatmap** β GitHub-style 7Γ24 grid showing when your agent is busiest. Pure CSS, no libraries.
|
|
76
|
+
- **β€οΈ Health Checks** β Gateway, disk, memory, uptime, OTLP status at a glance. Auto-refreshes every 30s via SSE.
|
|
77
|
+
- **π Real Token/Cost Tracking** β With OTLP: real token counts, actual cost, model breakdown, avg run duration.
|
|
78
|
+
- **π Transcript Viewer** β Read your agent's conversations in a beautiful chat-bubble UI. Color-coded roles, expand/collapse for long messages.
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
## π€ What Makes This Different?
|
|
83
|
+
|
|
84
|
+
| | OpenClaw Dashboard | Langfuse | AgentOps |
|
|
85
|
+
|---|---|---|---|
|
|
86
|
+
| **Install** | `pip install openclaw-dashboard` | Docker + Postgres | SDK + cloud account |
|
|
87
|
+
| **Config** | Zero. Auto-detects everything. | Database URLs, API keys | API keys, SDK init |
|
|
88
|
+
| **Focus** | Personal AI agent | Enterprise LLM apps | Enterprise agent monitoring |
|
|
89
|
+
| **Memory-first** | β
Browse SOUL.md, MEMORY.md, daily notes | β | β |
|
|
90
|
+
| **Single file** | β
One Python file, one dependency | β Multi-service | β Cloud service |
|
|
91
|
+
| **Transcripts** | β
Chat-bubble viewer built-in | β
(needs SDK) | β
(needs SDK) |
|
|
92
|
+
| **Cost tracking** | β
Zero config (OTLP or log parsing) | β
(needs SDK) | β
(needs SDK) |
|
|
93
|
+
| **Built-in OTel collector** | β
OTLP/HTTP receiver | β | β |
|
|
94
|
+
|
|
95
|
+
**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**.
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
## π‘ Real-time Metrics (OpenTelemetry)
|
|
100
|
+
|
|
101
|
+
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.
|
|
102
|
+
|
|
103
|
+
### Setup
|
|
104
|
+
|
|
105
|
+
**1. Install OTLP support:**
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
pip install openclaw-dashboard[otel]
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
**2. Configure OpenClaw** β add one line to your config:
|
|
112
|
+
|
|
113
|
+
```yaml
|
|
114
|
+
diagnostics:
|
|
115
|
+
otel:
|
|
116
|
+
endpoint: http://localhost:8900
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
That's it! The dashboard now receives real-time metrics directly from OpenClaw.
|
|
120
|
+
|
|
121
|
+
### What you get
|
|
122
|
+
|
|
123
|
+
| Metric | Source | What it shows |
|
|
124
|
+
|--------|--------|---------------|
|
|
125
|
+
| **Token counts** per day | `openclaw.tokens` | Real input/output/total token usage (bar chart) |
|
|
126
|
+
| **Cost** per day | `openclaw.cost.usd` | Actual cost from your provider |
|
|
127
|
+
| **Avg run duration** | `openclaw.run.duration_ms` | How long model completions take |
|
|
128
|
+
| **Messages processed** | `openclaw.message.processed` | Message throughput |
|
|
129
|
+
| **Model breakdown** | attributes | Which models are being used and how much |
|
|
130
|
+
| **OTLP Connected** indicator | health check | Green when data is flowing |
|
|
131
|
+
|
|
132
|
+
### OTLP Endpoints
|
|
133
|
+
|
|
134
|
+
- `POST /v1/metrics` β receives OTLP/HTTP protobuf metric data
|
|
135
|
+
- `POST /v1/traces` β receives OTLP/HTTP protobuf trace data
|
|
136
|
+
|
|
137
|
+
### Without OTLP
|
|
138
|
+
|
|
139
|
+
Everything still works! The dashboard falls back to parsing session JSONL files for token estimates. OTLP just gives you **real** numbers instead of estimates.
|
|
140
|
+
|
|
141
|
+
### Persistence
|
|
142
|
+
|
|
143
|
+
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`.
|
|
144
|
+
|
|
145
|
+
---
|
|
146
|
+
|
|
147
|
+
## βοΈ Configuration
|
|
148
|
+
|
|
149
|
+
### CLI Arguments
|
|
150
|
+
|
|
151
|
+
```bash
|
|
152
|
+
openclaw-dashboard --port 9000 # Custom port (default: 8900)
|
|
153
|
+
openclaw-dashboard --host 127.0.0.1 # Bind to localhost only
|
|
154
|
+
openclaw-dashboard --workspace ~/mybot # Custom workspace path
|
|
155
|
+
openclaw-dashboard --log-dir /var/log # Custom log directory
|
|
156
|
+
openclaw-dashboard --sessions-dir ~/data # Custom sessions directory
|
|
157
|
+
openclaw-dashboard --metrics-file ~/m.json # Custom metrics persistence path
|
|
158
|
+
openclaw-dashboard --name "Alice" # Your name in Flow visualization
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
### Environment Variables
|
|
162
|
+
|
|
163
|
+
| Variable | Description | Default |
|
|
164
|
+
|----------|-------------|---------|
|
|
165
|
+
| `OPENCLAW_HOME` | Agent workspace directory | Auto-detected |
|
|
166
|
+
| `OPENCLAW_WORKSPACE` | Alternative to OPENCLAW_HOME | Auto-detected |
|
|
167
|
+
| `OPENCLAW_SESSIONS_DIR` | Sessions directory (.jsonl transcripts) | Auto-detected |
|
|
168
|
+
| `OPENCLAW_LOG_DIR` | Log directory | `/tmp/moltbot` |
|
|
169
|
+
| `OPENCLAW_METRICS_FILE` | Metrics persistence file path | `{workspace}/.openclaw-dashboard-metrics.json` |
|
|
170
|
+
| `OPENCLAW_USER` | Your name in Flow tab | `You` |
|
|
171
|
+
|
|
172
|
+
### Auto-Detection
|
|
173
|
+
|
|
174
|
+
If no paths are configured, the dashboard automatically searches for:
|
|
175
|
+
|
|
176
|
+
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.
|
|
177
|
+
2. **Logs**: Checks `/tmp/moltbot` β `/tmp/openclaw` β `~/.clawdbot/logs`
|
|
178
|
+
3. **Sessions**: Reads from `~/.clawdbot/agents/main/sessions/`
|
|
179
|
+
4. **Crons**: Reads from `~/.clawdbot/cron/jobs.json`
|
|
180
|
+
|
|
181
|
+
---
|
|
182
|
+
|
|
183
|
+
## ποΈ How It Works
|
|
184
|
+
|
|
185
|
+
The dashboard is a single-file Flask app that reads directly from your OpenClaw/Moltbot data directories:
|
|
186
|
+
|
|
187
|
+
```
|
|
188
|
+
Your Agent (Moltbot) OpenClaw Dashboard
|
|
189
|
+
βββββββββββββββββββ βββββββββββββββββββ
|
|
190
|
+
β Writes logs to βββββββββββΆβ Reads & parses β
|
|
191
|
+
β /tmp/moltbot/ β β JSON log lines β
|
|
192
|
+
β β β β
|
|
193
|
+
β Stores sessions βββββββββββΆβ Lists sessions β
|
|
194
|
+
β in ~/.clawdbot/ β β with metadata β
|
|
195
|
+
β β β β
|
|
196
|
+
β Saves crons to βββββββββββΆβ Shows schedules β
|
|
197
|
+
β cron/jobs.json β β and status β
|
|
198
|
+
β β β β
|
|
199
|
+
β Agent workspace βββββββββββΆβ Browses memory β
|
|
200
|
+
β SOUL.md, etc. β β files inline β
|
|
201
|
+
βββββββββββββββββββ βββββββββββββββββββ
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
**Real-time streaming** uses `tail -f` piped through Server-Sent Events (SSE) β no WebSockets, no dependencies, just works.
|
|
205
|
+
|
|
206
|
+
---
|
|
207
|
+
|
|
208
|
+
## π¦ Installation Options
|
|
209
|
+
|
|
210
|
+
### pip (recommended)
|
|
211
|
+
|
|
212
|
+
```bash
|
|
213
|
+
pip install openclaw-dashboard
|
|
214
|
+
openclaw-dashboard
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
### From source
|
|
218
|
+
|
|
219
|
+
```bash
|
|
220
|
+
git clone https://github.com/vivekchand/openclaw-dashboard.git
|
|
221
|
+
cd openclaw-dashboard
|
|
222
|
+
pip install -r requirements.txt
|
|
223
|
+
python3 dashboard.py
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
### One-liner
|
|
227
|
+
|
|
228
|
+
```bash
|
|
229
|
+
curl -sSL https://raw.githubusercontent.com/vivekchand/openclaw-dashboard/main/install.sh | bash
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
---
|
|
233
|
+
|
|
234
|
+
## π§ Requirements
|
|
235
|
+
|
|
236
|
+
- **Python 3.8+**
|
|
237
|
+
- **Flask** (only required dependency)
|
|
238
|
+
- **opentelemetry-proto + protobuf** (optional, for OTLP receiver β `pip install openclaw-dashboard[otel]`)
|
|
239
|
+
- **OpenClaw/Moltbot** running on the same machine (reads its logs and state files)
|
|
240
|
+
- Linux/macOS (uses `tail`, `df`, `free`, `/proc/loadavg`)
|
|
241
|
+
|
|
242
|
+
---
|
|
243
|
+
|
|
244
|
+
## π License
|
|
245
|
+
|
|
246
|
+
MIT β do whatever you want with it.
|
|
247
|
+
|
|
248
|
+
---
|
|
249
|
+
|
|
250
|
+
## π Credits
|
|
251
|
+
|
|
252
|
+
- Built by [Vivek Chand](https://linkedin.com/in/vivekchand46) as part of the OpenClaw ecosystem
|
|
253
|
+
- Powered by [OpenClaw](https://github.com/nicobailon/openclaw) and [Moltbot](https://github.com/nicobailon/moltbot)
|
|
254
|
+
- The Flow visualization was inspired by watching an AI agent actually think
|
|
255
|
+
|
|
256
|
+
---
|
|
257
|
+
|
|
258
|
+
<p align="center">
|
|
259
|
+
<strong>π¦ See your agent think</strong><br>
|
|
260
|
+
<sub>Star this repo if you find it useful!</sub>
|
|
261
|
+
</p>
|