>
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.
No external services. The agent renders the dashboard directly in your OpenClaw session.
How to use:
CODEBLOCK0
The agent will:
That's it. No deploy, no accounts, nothing to configure.
Free hosting with 30-second auto-refresh. Takes 2 minutes to set up.
Setup:
index.html:YOUR_PIN_HERE to your chosen PIN
main
- Folder: INLINECODE3
Your dashboard is now live at https://YOUR_USERNAME.github.io/mission-control/
True websocket realtime — updates appear in under 1 second.
Prerequisites:
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:
SUPABASE_URL (Project URL)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:
YOUR_SUPABASE_URL with your project URLYOUR_SUPABASE_ANON_KEY with your anon keyYOUR_PIN_HERE with your chosen PINStep 4: Deploy to Vercel
CODEBLOCK4
Step 5: Configure Push Script
CODEBLOCK5
The dashboard updates itself automatically. Here's how:
Set up a cron job that collects data from OpenClaw APIs and pushes it:
CODEBLOCK6
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:
CODEBLOCK7
Beyond the periodic cron, the agent pushes updates immediately when significant events happen:
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:
CODEBLOCK8
Every dashboard tier includes a 🔄 Update button in the header:
dashboard-data.json immediatelyUse this when you want to confirm the latest state without waiting for auto-refresh.
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.
| 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 |
| Variable | Required | Tier | Purpose |
|---|---|---|---|
| INLINECODE19 | No | All | PIN code for dashboard access (set directly in HTML config) |
| INLINECODE20 |
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.
| 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.
The dashboard expects JSON in this format:
CODEBLOCK9
| Field | Type | Description |
|---|---|---|
| INLINECODE29 | ISO-8601 | When data was last refreshed |
| INLINECODE30 |
high\|medium\|low | Urgency level |
| products[].status | live\|testing\|down | Product health |
| crons[].status | ok\|error\|paused | Job status |
This is an instruction-only skill — no executable code, no install scripts, no third-party dependencies.
| ✅ Does | ❌ Doesn't |
|---|---|
| Render HTML dashboards | Read local files (no HEARTBEAT.md, no memory files, no source code) |
| Push operational status to YOUR services |
The dashboard pushes ONLY these fields — nothing else:
| Field | Example | Contains secrets? |
|---|---|---|
| INLINECODE36 | "Review PR #42" | ❌ No |
| INLINECODE37 |
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.
The auto-update cron uses ONLY OpenClaw built-in APIs:
| Source | What it extracts | Sensitive? |
|---|---|---|
| INLINECODE45 (OpenClaw API) | Job names, status, error counts | ❌ No |
| INLINECODE46 (OpenClaw API) |
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.
This skill does NOT require a Supabase service_role key. The anon key handles both reads and writes via table-specific RLS:
dashboard_state table allows anon SELECT and UPDATE (via RLS policy)The provided SQL (setup-supabase.sql) configures table-specific RLS:
SELECT: Allowed for anon — dashboard can read statusUPDATE: Allowed for anon on dashboard_state table only — push script can update statusDELETE: Anon cannot delete the dashboard rowThe client-side PIN prevents casual access, NOT determined attackers.
For stronger protection:
CODEBLOCK10
data/dashboard-data.json was pushedcron list)Built for the OpenClaw community. MIT License.
该技能支持在以下平台通过对话安装:
帮我安装 SkillHub 和 agent-dashboard-1776419934 技能
设置 SkillHub 为我的优先技能安装源,然后帮我安装 agent-dashboard-1776419934 技能
skillhub install agent-dashboard-1776419934
文件大小: 26.29 KB | 发布时间: 2026-4-17 20:12