
🔐 OpenClaw AIエージェント向けの安全でリアルタイムな監視ダッシュボード。認証、TOTP MFA、コスト追跡、ライブフィード、メモリブラウザなど。
OpenClaw エージェント向けの美しく、安全で、リアルタイムな監視ダッシュボード。セッションの追跡、API 使用状況の監視、コストの表示、メモリファイルの管理、システムの健全性の把握をすべて一か所で行えます。

| 概要 | セッション | コスト |
|---|---|---|
![]() | ![]() | ![]() |
| レート制限 | ライブフィード | ログ |
|---|---|---|
![]() | ![]() | ![]() |
git clone https://github.com/tugcantopaloglu/openclaw-dashboard.git cd openclaw-dashboard
export WORKSPACE_DIR=/path/to/your/openclaw/workspace
node server.js
Visit `http://localhost:7000` in your browser. On first visit, you'll see a **registration screen** where you create your username and password. After registration, log in with your credentials.
## 📦 インストール
### 前提条件
- **Node.js** v18 以上(`node --version` で確認)
- **OpenClaw** がインストールされ、実行中であること
- **Systemd**(任意、Linux でのサービスインストール用)
#### 任意の依存関係
| ツール | 用途 | インストール方法 |
|------|-------------|---------|
| `jq` | Docker管理ページ | `sudo apt install jq` |
| `tmux` | Claude CLI 使用状況スクレイパー | `sudo apt install tmux` |
| `python3` | Claude CLI 使用状況パーサー | 通常プリインストール済み |
| `docker` | Docker管理ページ | [docs.docker.com](https://docs.docker.com/engine/install/) |
### 手動インストール
1. **リポジトリをクローン** ```bash
git clone https://github.com/tugcantopaloglu/openclaw-dashboard.git
cd openclaw-dashboard
サーバーは次のように出力します: ``` 🚀 Dashboard running on http://localhost:7000 🔑 Recovery token: abc123def456...
**復旧トークンを保存してください** — パスワードを忘れた場合に必要になります。
4. **ダッシュボードにアクセス**
`http://localhost:7000` を開いてアカウントを登録します。
### Systemd Service (install.sh)
ダッシュボードを自動起動とクラッシュリカバリ付きのシステムサービスとして実行するには:```bash
sudo ./install.sh
これは以下を行います:
/etc/systemd/system/agent-dashboard.service を作成します/etc/systemd/system/agent-dashboard.service.d/override.conf にオーバーライド設定を作成しますログを表示:```bash journalctl -u agent-dashboard -f
### Docker```bash
# Build
docker build -t openclaw-dashboard .
# Run
docker run -d \
--name openclaw-dashboard \
-p 3001:3001 \
-e WORKSPACE_DIR=/app/workspace \
-e DASHBOARD_ALLOW_HTTP=true \
-v ~/.openclaw:/home/node/.openclaw:ro \
-v ~/.openclaw/workspace:/app/workspace \
openclaw-dashboard
Docker管理ページにアクセスするには、Dockerソケットを渡してください:```bash
docker run -d
--name openclaw-dashboard
-p 3001:3001
-e WORKSPACE_DIR=/app/workspace
-e DASHBOARD_ALLOW_HTTP=true
-v ~/.openclaw:/home/node/.openclaw:ro
-v ~/.openclaw/workspace:/app/workspace
-v /var/run/docker.sock:/var/run/docker.sock:ro
--group-add $(stat -c '%g' /var/run/docker.sock)
openclaw-dashboard
### 環境変数
| 変数 | 説明 | デフォルト |
|----------|-------------|---------|
| `DASHBOARD_PORT` | サーバーポート | `7000` |
| `DASHBOARD_TOKEN` | パスワードリセット用の回復トークン | 起動時に自動生成 |
| `WORKSPACE_DIR` | OpenClawワークスペースのパス | `$OPENCLAW_WORKSPACE` またはカレントディレクトリ |
| `OPENCLAW_DIR` | OpenClaw設定ディレクトリ | `~/.openclaw` |
| `OPENCLAW_AGENT` | 監視するエージェントID | `main` |
| `DASHBOARD_ALLOW_HTTP` | 非ローカルIPからのHTTPを許可 | `false` |
**例:**```bash
# Custom port
DASHBOARD_PORT=8080 node server.js
# Custom recovery token
DASHBOARD_TOKEN=my_secret_token_12345 node server.js
# Different workspace
WORKSPACE_DIR=/mnt/data/openclaw node server.js
ダッシュボードは、ユーザー名とパスワード認証 と安全なサーバーサイドセッションを使用します。
http://localhost:7000)localStorage を使用)sessionStorage を使用)ブルートフォース攻撃を防止するため:
時間ベースのワンタイムパスワード(TOTP)でセキュリティをさらに強化します。
有効化後、ログインのたびに以下が必要です:
認証アプリにアクセスできなくなった場合(スマホ紛失、アプリ削除など):
重要: ワークスペースが別の場所にある場合は、パス /root/clawd/data/credentials.json を調整してください。
パスワードを忘れた場合:
回復トークン(DASHBOARD_TOKEN)はサーバー起動時に出力されます。以下の場所で確認できます:
journalctl -u agent-dashboard | grep "Recovery token"
出力:```
🔑 Recovery token: 3e6b91f352418b486a9aa9d82fbbc1b1
cat /etc/systemd/system/agent-dashboard.service.d/override.conf
探す:```ini
Environment=DASHBOARD_TOKEN=3e6b91f352418b486a9aa9d82fbbc1b1
手動で設定した場合:```bash echo $DASHBOARD_TOKEN
### パスワードの変更
ログイン中にパスワードを変更するには:
1. **セキュリティ**ページに移動
2. **現在のパスワード**を入力
3. **新しいパスワード**を入力
4. **"パスワードを変更"**をクリック
5. 他のすべてのセッションは無効になります(他の場所で再度ログインする必要があります)
### アカウントの完全リセット(核オプション)
すべてがロックされていてログインできない場合:
1. **サーバーにSSH接続**
2. **認証情報ファイルを削除**: ```bash
rm /root/clawd/data/credentials.json
警告: これにより、ユーザー名、パスワード、MFA設定が削除されます。メモリファイルと監査ログは影響を受けません。
ダッシュボードはセキュリティのベストプラクティスに基づいて構築されています:
data/audit.log に記録*) は許可されない.bak ファイルを作成ダッシュボードはローカルまたはTailscaleアクセス用に設計されています:
http://localhost:7000http://100.x.x.x:7000DASHBOARD_ALLOW_HTTP=true を設定)デフォルトでは、ダッシュボードは非ローカルIPからのHTTPアクセスをブロックします。例外:
その他のネットワークでは、ダッシュボードはHTTPSまたは (リバースプロキシからの) X-Forwarded-Proto: https ヘッダーを必要とします。
すべてのIPからのHTTPを許可するには (推奨されません):```bash DASHBOARD_ALLOW_HTTP=true node server.js
### パブリックインターネットに公開しないでください
**このダッシュボードはパブリックインターネット公開に向けて堅牢化されていません。** 認証とレート制限はありますが、プライベートネットワーク向けに設計されています。やむを得ず公開する場合は:
- リバースプロキシ(nginx、Caddy)をHTTPSで使用する
- IP許可リストを追加する
- 代わりにVPN(Tailscale、WireGuard)を検討する
## 🛠️ トラブルシューティング
### 「試行失敗が多すぎます」
**問題:** 「試行失敗が多すぎます。しばらくしてからもう一度お試しください。」というメッセージが表示されます。
**解決策:**
- ソフトロックアウトが解除されるまで**15分**待つ
- レート制限を解除するためにサービスを再起動する: ```bash
systemctl restart agent-dashboard
問題: パスワードを変更したがログインできない。
解決策: 「パスワードをお忘れですか?」のフローでリカバリトークンを使用し、新しいパスワードを設定してください。
問題: 6桁のTOTPコードが拒否される。
解決策:
問題: ブラウザに空白のページまたは接続エラーが表示される。
解決策:
返すべき: ```json {"authenticated": false, "requiresRegistration": false}
### "HTTPSが必要"エラー
**問題:** ブラウザに「HTTPSが必要です。localhost、Tailscale経由でアクセスするか、HTTPSを有効にしてください。」と表示されます。
**解決策:**
- **localhost**経由でアクセス:`http://localhost:7000`
- **Tailscale**経由でアクセス:`http://100.x.x.x:7000`
- 環境変数に`DASHBOARD_ALLOW_HTTP=true`を設定する(推奨しません): ```bash
# Add to /etc/systemd/system/agent-dashboard.service.d/override.conf
Environment=DASHBOARD_ALLOW_HTTP=true
# Reload and restart
systemctl daemon-reload
systemctl restart agent-dashboard
Problem: Dashboard shows a blank page after pulling new code.
Solutions:
Ctrl+Shift+R (Windows/Linux) or Cmd+Shift+R (macOS)The dashboard exposes a REST API for programmatic access. All endpoints require authentication via Authorization: Bearer <sessionToken> header.
GET /api/auth/status — Check authentication statusPOST /api/auth/login — Log in with username/password (+ TOTP if MFA enabled)POST /api/auth/register — Register a new account (only if no credentials exist)POST /api/auth/reset-password — Reset password with recovery tokenAll other endpoints require authentication:
GET /api/config — Dashboard configurationGET /api/sessions — List all agent sessionsGET /api/usage — 5-hour rolling window usage dataGET /api/costs — Spending data by day, model, and sessionGET /api/system — System health metricsGET /api/memory-files — List memory filesGET /api/memory-file?path=<path> — Read a memory fileGET /api/key-files — List workspace files (skills, configs)GET /api/key-file?path=<name> — Read a workspace filePOST /api/key-file — Write to a workspace file (with backup)GET /api/crons — List cron jobsPOST /api/cron/<id>/toggle — Enable/disable a cron jobFor detailed request/response examples, see the previous version of this README or explore the API in the browser's Network tab.
The dashboard stores data in your workspace directory:
Credentials file structure:```json { "username": "admin", "passwordHash": "pbkdf2_sha512$100000$...", "salt": "...", "mfaSecret": "BASE32SECRET..." // Only if MFA enabled }
## 🔗 OpenClaw 統合
ダッシュボードは自動的に以下を検出します:
- **セッション**: `$OPENCLAW_DIR/agents/$AGENT_ID/sessions/` から
- **Cron ジョブ**: `$OPENCLAW_DIR/cron/jobs.json` から
- **メモリファイル**: `$WORKSPACE_DIR/MEMORY.md`, `HEARTBEAT.md`, および `memory/*.md` から
- **Git リポジトリ**: `$WORKSPACE_DIR/projects/*/` から
- **ヘルスデータ**: `$WORKSPACE_DIR/data/health-history.json` に保存
### 必須ファイル
以下のファイルが存在すると、ダッシュボードは最適に動作します:
- `$WORKSPACE_DIR/MEMORY.md` - エージェントの長期記憶
- `$WORKSPACE_DIR/HEARTBEAT.md` - ハートビートタスク一覧
- `$WORKSPACE_DIR/memory/YYYY-MM-DD.md` - 日次メモ
- `$WORKSPACE_DIR/scripts/scrape-claude-usage.sh` - Claude 使用状況スクレイパー
- `$WORKSPACE_DIR/scripts/parse-claude-usage.py` - Claude 使用状況パーサー
- `$WORKSPACE_DIR/scripts/scrape-gemini-usage.sh` - Gemini 使用状況スクレイパー
- `$WORKSPACE_DIR/scripts/parse-gemini-usage.py` - Gemini 使用状況パーサー
## ⌨️ キーボードショートカット
| キー | アクション |
|-----|--------|
| `1` | 概要に切り替え |
| `2` | セッションに切り替え |
| `3` | コストに切り替え |
| `4` | レート制限に切り替え |
| `5` | メモリに切り替え |
| `6` | ファイルに切り替え |
| `7` | ライブフィードに切り替え |
| `8` | ログに切り替え |
| `9` | セキュリティに切り替え |
| `Space` | フィードの一時停止/再開(ライブフィードページの場合) |
| `/` | 検索ボックスにフォーカス |
| `Esc` | モーダルとオーバーレイを閉じる |
| `?` | キーボードショートカットヘルプを表示 |
## 🤝 貢献
貢献を歓迎します!以下のガイドラインに従ってください:
1. **Fork** リポジトリをフォーク
2. **Create** 機能ブランチを作成 (`git checkout -b feature/amazing-feature`)
3. **Commit** 変更をコミット (`git commit -m 'Add amazing feature'`)
4. **Push** ブランチにプッシュ (`git push origin feature/amazing-feature`)
5. **Open** プルリクエストを開く
### 開発環境セットアップ```bash
git clone https://github.com/tugcantopaloglu/openclaw-dashboard.git
cd openclaw-dashboard
export WORKSPACE_DIR=/path/to/test/workspace
node server.js
ダッシュボードにはビルドステップはありません — server.js または index.html を編集してリロードしてください。
MITライセンス - 詳細は LICENSE ファイルをご覧ください。
✨ で Tuğcan Topaloğlu が作成
jq(Docker ページ)、tmux + python3(Claude CLI 使用状況スクレイパー)、docker(Docker 管理)POST /api/cron/<id>/run — Manually trigger a cron jobGET /api/logs?service=<service>&lines=<N> — Fetch system logsPOST /api/action/<action> — Run quick actions (restart-openclaw, restart-dashboard, etc.)POST /api/claude-usage-scrape — Trigger Claude usage scrapeGET /api/claude-usage — Get last scraped Claude usagePOST /api/gemini-usage-scrape — Trigger Gemini usage scrapeGET /api/gemini-usage — Get last scraped Gemini usageGET /api/live — Server-Sent Events stream of real-time messagesGET /api/notifications?limit=<N> — Audit log events for notification centerPOST /api/reauth — Re-authenticate for sensitive pages (Security, Config)GET /api/openclaw-config — Read OpenClaw configuration filePUT /api/openclaw-config — Save config with auto-backup and gateway restartGET /api/sys-security — System security info (UFW, ports, fail2ban, SSH logs)GET /api/docker — List Docker containers, images, and system usagePOST /api/docker/action — Docker actions (start/stop/restart container, prune)GET /api/services — List systemd servicesPOST /api/services/action — Service actions (start/stop/restart, whitelisted only)| File | Purpose |
|---|
data/credentials.json | Username + hashed password + MFA secret |
data/audit.log | Security audit trail (auto-rotates at 10MB) |
data/health-history.json | CPU/RAM/Temp/Disk history for sparklines |
data/claude-usage.json | Last scraped Claude usage data |
data/gemini-usage.json | Last scraped Gemini usage data |