← 返回 Skills 市场
tahseen137

Agent Dashboard

作者 Tahseen-ur Rahman · GitHub ↗ · v1.0.4
cross-platform ⚠ suspicious
1044
总下载
0
收藏
5
当前安装
6
版本数
在 OpenClaw 中安装
/install agent-dashboard
功能描述
Real-time agent dashboard for OpenClaw. Monitor active tasks, cron job health, issues, and action items from anywhere. Three setup tiers: (1) Zero-config can...
使用说明 (SKILL.md)

Mission Control 🚀

A real-time dashboard showing what your OpenClaw agent is doing, cron job health, issues requiring attention, and recent activity. Check it from anywhere — your phone, your laptop, wherever.

Quick Start

Tier 1 — Canvas (Zero Setup) ⚡

No external services. The agent renders the dashboard directly in your OpenClaw session.

How to use:

Show me the mission control dashboard

The agent will:

  1. Gather current state (active tasks, crons, etc.)
  2. Generate a dashboard using the canvas tool
  3. Present it inline in your session

That's it. No deploy, no accounts, nothing to configure.


Tier 2 — GitHub Pages + Polling (Recommended) 🌐

Free hosting with 30-second auto-refresh. Takes 2 minutes to set up.

Setup:

  1. Create a repo:

    gh repo create mission-control --public --clone
    cd mission-control
    
  2. Copy the dashboard:

    mkdir -p data
    # Copy tier2-github.html to index.html
    # Copy assets/templates/dashboard-data.json to data/
    
  3. Edit index.html:

    • Change YOUR_PIN_HERE to your chosen PIN
  4. Enable GitHub Pages:

    • Go to repo Settings → Pages
    • Source: Deploy from branch main
    • Folder: / (root)
  5. Deploy:

    git add -A && git commit -m "Initial deploy" && git push
    

Your dashboard is now live at https://YOUR_USERNAME.github.io/mission-control/


Tier 3 — Supabase Realtime + Vercel (Premium) ⚡🔥

True websocket realtime — updates appear in under 1 second.

Prerequisites:

  • Supabase account (free tier works)
  • Vercel account (free tier works)

Step 1: Create Supabase Table

In your Supabase SQL Editor, run assets/templates/setup-supabase.sql.

Step 2: Get Your Keys

From Supabase Dashboard → Settings → API:

  • Copy SUPABASE_URL (Project URL)
  • Copy SUPABASE_ANON_KEY (anon public key)

That's it — no service_role key needed. The anon key handles both reads (dashboard) and writes (push script) via table-specific RLS.

Step 3: Edit the Dashboard

In tier3-realtime.html:

  1. Replace YOUR_SUPABASE_URL with your project URL
  2. Replace YOUR_SUPABASE_ANON_KEY with your anon key
  3. Replace YOUR_PIN_HERE with your chosen PIN

Step 4: Deploy to Vercel

mkdir mission-control && cd mission-control
# Copy tier3-realtime.html as index.html
vercel deploy --prod

Step 5: Configure Push Script

export SUPABASE_URL="https://YOUR_PROJECT.supabase.co"
export SUPABASE_ANON_KEY="eyJ..."  # Same anon key used by the dashboard

🔄 Keeping It Fresh — Auto-Update Mechanism

The dashboard updates itself automatically. Here's how:

1. Cron Auto-Update (Every 30 Minutes)

Set up a cron job that collects data from OpenClaw APIs and pushes it:

Create a cron job called "Dashboard Update" that runs every 30 minutes.
It should:
1. Run `cron list` to get all cron job statuses, error counts, last run times
2. Run `sessions_list` to find any active sub-agents and their current tasks
3. Build the dashboard JSON from this API data
4. Push to Supabase (or git push for Tier 2)

Data sources: Only OpenClaw built-in APIs (cron list, sessions_list). No local files are read. Action items and recent activity are added manually via the "Manual Update" command below.

Sample cron configuration:

name: Dashboard Update
schedule: "*/30 * * * *"  # Every 30 minutes
model: sonnet             # Fast model for quick updates
prompt: |
  Update the Mission Control dashboard:
  
  1. Run `cron list` to get job names, statuses, error counts, last run times
  2. Run `sessions_list` to find active sub-agents and their tasks
  3. Build JSON matching the dashboard schema from API data only
  4. Push to Supabase or GitHub
  
  Do not read local files. Only use cron list and sessions_list data.

2. Real-Time Event Pushes

Beyond the periodic cron, the agent pushes updates immediately when significant events happen:

  • ✅ Task starts or finishes
  • ❌ Errors or failures
  • 🚀 Deploys complete
  • 📧 Important notifications arrive

This means the dashboard reflects changes within seconds, not just every 30 minutes.

How to enable: When you start a major task, tell the agent:

After this deploy finishes, push an update to Mission Control.

3. Force Update Button

Every dashboard tier includes a 🔄 Update button in the header:

  • Tier 2: Re-fetches dashboard-data.json immediately
  • Tier 3: Re-fetches from Supabase immediately
  • Resets the "Updated X ago" timer
  • Shows loading spinner while fetching

Use this when you want to confirm the latest state without waiting for auto-refresh.

The Result

The combination of periodic cron + real-time pushes + manual refresh keeps your dashboard accurate at all times. You'll always see what your agent is actually doing.


Dashboard Features

🚨 Action Required

Urgent items that need your attention. Highlighted at the top with priority badges (high/medium/low).

⚡ Active Now

What the agent is currently working on, with model name and duration.

📊 Products

Your product cards with live/testing/down status badges.

⏰ Cron Jobs

Table showing all scheduled jobs with status, last run time, and error counts. Click to expand error details.

📋 Recent Activity

Timeline of recent events and accomplishments.

🔴 Live Indicator (Tier 3 only)

Green pulsing dot shows websocket is connected. Flash animation when data updates.


Requirements by Tier

Tier Tools Needed External Accounts Env Vars
Tier 1 None None None
Tier 2 git, gh CLI GitHub (free) DASHBOARD_PIN
Tier 3 curl Supabase (free), Vercel (free) See below

Environment Variables

Variable Required Tier Purpose
DASHBOARD_PIN No All PIN code for dashboard access (set directly in HTML config)
SUPABASE_URL Yes Tier 3 only Your Supabase project URL
SUPABASE_ANON_KEY Yes Tier 3 only Supabase anon key — used for both dashboard reads AND push script writes

Tier 1 needs zero env vars. Tier 2 needs only a GitHub repo. Tier 3 needs only SUPABASE_URL and SUPABASE_ANON_KEY — no service_role key required.

Permissions Used by OpenClaw

Tier Permissions Why
Tier 1 None Canvas is built into OpenClaw
Tier 2 exec To run git push to YOUR GitHub repo
Tier 3 exec To run curl to YOUR Supabase project

No other permissions are used. No read permission needed — this skill does not access local files.


Data Schema

The dashboard expects JSON in this format:

{
  "lastUpdated": "2024-01-15T12:00:00Z",
  "actionRequired": [
    {
      "title": "Review PR #42",
      "url": "https://github.com/you/repo/pull/42",
      "priority": "high"
    }
  ],
  "activeNow": [
    {
      "task": "Deploying new feature",
      "model": "opus",
      "startedAt": "2024-01-15T11:45:00Z"
    }
  ],
  "products": [
    {
      "name": "My App",
      "url": "https://myapp.example.com",
      "status": "live",
      "lastChecked": "2024-01-15T12:00:00Z"
    }
  ],
  "crons": [
    {
      "name": "Daily Report",
      "schedule": "9:00 AM daily",
      "lastRun": "2024-01-15T09:00:00Z",
      "status": "ok",
      "errors": 0,
      "lastError": null
    }
  ],
  "recentActivity": [
    {
      "time": "2024-01-15T11:30:00Z",
      "event": "✅ Deployed v2.1.0 to production"
    }
  ]
}

Field Reference

Field Type Description
lastUpdated ISO-8601 When data was last refreshed
actionRequired[].priority high|medium|low Urgency level
products[].status live|testing|down Product health
crons[].status ok|error|paused Job status

Security & Privacy

This is an instruction-only skill — no executable code, no install scripts, no third-party dependencies.

What This Skill Does and Doesn't Do

✅ Does ❌ Doesn't
Render HTML dashboards Read local files (no HEARTBEAT.md, no memory files, no source code)
Push operational status to YOUR services Send data to third-party services
Read OpenClaw APIs only (cron list, sessions_list) Store, log, or transmit credentials
Use YOUR Supabase/GitHub accounts Require service_role or admin keys

Exactly What Data Gets Pushed (Tier 2 & 3)

The dashboard pushes ONLY these fields — nothing else:

Field Example Contains secrets?
actionRequired[].title "Review PR #42" ❌ No
activeNow[].task "Deploying v2.0" ❌ No
products[].name "My App" ❌ No
products[].url "https://myapp.com" ❌ No (public URLs only)
products[].status "live" ❌ No
crons[].name "Daily Report" ❌ No
crons[].status "ok" / "error" ❌ No
crons[].lastError "timeout after 30s" ❌ No (error messages only)
recentActivity[].event "✅ Deployed v2.1" ❌ No

Never pushed: passwords, API keys, tokens, file contents, database credentials, user data, or PII. The agent builds the JSON from operational status only — task names, timestamps, and status codes.

What Data the Agent Reads

The auto-update cron uses ONLY OpenClaw built-in APIs:

Source What it extracts Sensitive?
cron list (OpenClaw API) Job names, status, error counts ❌ No
sessions_list (OpenClaw API) Active task labels, models ❌ No

No local files are read. The cron does not access HEARTBEAT.md, memory files, source code, or any other files on disk. Action items and recent activity are added manually by the user via the "Manual Update" command.

No Service Role Key Required

This skill does NOT require a Supabase service_role key. The anon key handles both reads and writes via table-specific RLS:

  • The dashboard_state table allows anon SELECT and UPDATE (via RLS policy)
  • The anon key can ONLY read/write this single table — it cannot access any other tables
  • Worst case if someone gets your anon key: they can overwrite dashboard status data (not sensitive)
  • The anon key is the same one already embedded in your client-side Supabase app

Row Level Security (Tier 3)

The provided SQL (setup-supabase.sql) configures table-specific RLS:

  • SELECT: Allowed for anon — dashboard can read status
  • UPDATE: Allowed for anon on dashboard_state table only — push script can update status
  • Other tables: Unaffected — the anon key's existing RLS policies on all other tables remain unchanged
  • No DELETE: Anon cannot delete the dashboard row

PIN Protection — Limitations

The client-side PIN prevents casual access, NOT determined attackers.

For stronger protection:

  • Tier 2: Make your GitHub Pages repo private (GitHub Pro)
  • Tier 3: Use Vercel's password protection (Pro plan) or add Supabase Auth
  • All tiers: The dashboard only contains operational status — no secrets to steal even if accessed

Files Included

agent-dashboard/
├── SKILL.md                      # This file
├── assets/
│   ├── tier1-canvas.html         # Lightweight canvas version
│   ├── tier2-github.html         # GitHub Pages + polling
│   ├── tier3-realtime.html       # Supabase Realtime version
│   └── push-dashboard.sh         # Push script for Tier 3
├── assets/templates/
│   ├── dashboard-data.json       # Sample data structure
│   └── setup-supabase.sql        # Supabase table setup
└── references/
    └── customization.md          # Theme and layout customization

Troubleshooting

Dashboard shows "Disconnected" (Tier 3)

  • Check Supabase project is running
  • Verify anon key is correct
  • Ensure realtime is enabled on the table

Data not updating (Tier 2)

  • Check GitHub Pages is enabled
  • Verify data/dashboard-data.json was pushed
  • Hard refresh the page (Ctrl+Shift+R)
  • Click the Force Update button to confirm data is stale

PIN not working

  • PINs are case-sensitive
  • Check you're using the same PIN in HTML config

Cron status not accurate

  • Ensure your Dashboard Update cron is running (cron list)
  • Check for errors in the cron output
  • Manually run the update: "Update my Mission Control dashboard now"

Credits

Built for the OpenClaw community. MIT License.

安全使用建议
This skill appears to implement a plausible dashboard, but there are some mismatches you should address before installing: - The registry metadata declares no required env vars or binaries, but Tier 3 requires SUPABASE_URL and SUPABASE_ANON_KEY and Tier 2/3 expect gh and vercel CLIs; verify and supply only the minimal values you trust. - SUPABASE_ANON_KEY is used (and promoted as safe), which is reasonable for a public client, but the provided SQL policy allows anon updates to the dashboard table; anyone with the anon key (or who can access your public client) could overwrite the dashboard row. If you deploy to a public Supabase project, consider tightening RLS to limit updates (e.g., WITH CHECK id = 'main' and/or additional checks) or serve pushes from a trusted server-side key with stricter scope. - If you want to avoid sending data off-host, use Tier 1 (canvas) only; Tier 2/3 explicitly push data externally. The SKILL.md wording can be confusing on this point. - Confirm you trust the source (no homepage provided) before providing credentials or deploying public pages. Ask the publisher to update registry metadata to list required env vars and CLIs so you can make an informed decision. If you plan to use Tier 3, review the SQL and push script and consider: (1) creating RLS rules that constrain updates very narrowly, (2) using a scoped server-side endpoint that validates payloads, or (3) keeping the project private and limiting who can read the anon key. If you are unsure, prefer Tier 1 (zero-config) or review the code offline first.
功能分析
Type: OpenClaw Skill Name: agent-dashboard Version: 1.0.4 The skill is classified as suspicious due to the inherent risks associated with granting the OpenClaw agent `exec` permissions for `git` and `curl` (as detailed in SKILL.md). While the skill explicitly instructs the agent not to read local files or exfiltrate sensitive data, and the `assets/push-dashboard.sh` script is designed to push only operational status to user-configured endpoints, the `exec` capability itself represents a significant prompt-injection attack surface. A sophisticated attacker could potentially craft a prompt to override the skill's safeguards and leverage these permissions for unauthorized actions like reading sensitive local files (e.g., `~/.ssh/id_rsa`) and exfiltrating them via `curl` to an arbitrary external endpoint. This represents a vulnerability rather than clear malicious intent within the skill's design.
能力评估
Purpose & Capability
The skill claims no required env vars or binaries in registry metadata, but SKILL.md and assets require SUPABASE_URL and SUPABASE_ANON_KEY for Tier 3 and CLI tools (gh, vercel) for Tier 2/3 deployment. Requiring a Supabase anon key and deploy CLIs is coherent with a realtime dashboard, but the registry metadata omits those requirements (incoherent).
Instruction Scope
Runtime instructions restrict data collection to OpenClaw APIs (cron list, sessions_list) which fits the stated purpose. However the skill also instructs pushing state to an external Supabase project (Tier 3) and to publish files to GitHub Pages/Vercel (Tier 2/3). The README claims 'All data stays on your machine' for Tier 1 but Tier 2/3 explicitly send dashboard JSON to external hosts — this distinction is not emphasized in metadata and could be misleading to non-technical users.
Install Mechanism
There is no install spec (instruction-only) and one small helper script is included. No remote downloads or archive extraction occur during install. This is low-risk from an installation mechanism perspective.
Credentials
The skill requires SUPABASE_URL and SUPABASE_ANON_KEY in its instructions and in assets/push-dashboard.sh but the registry lists no required env vars or primary credential — that's an important omission. Asking for the Supabase anon key is proportionate for a realtime dashboard, but the SQL policies provided grant anon read and anon update privileges on the dashboard_state table with broad USING/WITH CHECK (true), which means the anon key can overwrite the dashboard row. The skill also assumes users will run gh/vercel CLI commands but doesn't declare those binaries as required.
Persistence & Privilege
The skill is not forced-always and does not request system-wide modifications. However it instructs creation of a recurring cron job and the agent can be asked to push updates (real-time pushes) autonomously — combine that with external endpoints and credentials (Tier 3) and the agent can send operational state off-host when invoked. This is expected behavior for a dashboard but worth considering.
如何使用
  1. 确保已安装 OpenClaw(本地或 Docker 部署)
  2. 在对话框中输入安装命令:/install agent-dashboard
  3. 安装完成后,直接呼叫该 Skill 的名称或使用 /agent-dashboard 触发
  4. 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
版本历史
v1.0.4
v1.0.4: Remove all local file reads — cron uses only OpenClaw APIs (cron list, sessions_list). No HEARTBEAT.md or memory file access.
v1.0.3
v1.0.3: Remove service_role key requirement — anon key only. Document exact data fields pushed. Stronger security docs.
v1.0.2
v1.0.2: Fix security scanner flags — declare all requirements by tier, strengthen service_role key docs, clarify PIN limitations, strict RLS documented, remove revenue
v1.1.0
Remove revenue section, add Force Update button, add Keeping It Fresh auto-update documentation
v1.0.1
v1.0.1: Remove revenue section, add detailed auto-update cron docs, Force Update button docs
v1.0.0
Initial release: Real-time agent dashboard with 3 deployment tiers (Canvas, GitHub Pages, Supabase Realtime)
元数据
Slug agent-dashboard
版本 1.0.4
许可证
累计安装 5
当前安装数 5
历史版本数 6
常见问题

Agent Dashboard 是什么?

Real-time agent dashboard for OpenClaw. Monitor active tasks, cron job health, issues, and action items from anywhere. Three setup tiers: (1) Zero-config can... 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 1044 次。

如何安装 Agent Dashboard?

在 OpenClaw 或 Claude Code 对话框中运行命令「/install agent-dashboard」即可一键安装,无需额外配置。

Agent Dashboard 是免费的吗?

是的,Agent Dashboard 完全免费(开源免费),可自由下载、安装和使用。

Agent Dashboard 支持哪些平台?

Agent Dashboard 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。

谁开发了 Agent Dashboard?

由 Tahseen-ur Rahman(@tahseen137)开发并维护,当前版本 v1.0.4。

💬 留言讨论