Dashboard System - Deployment Guide
Status: ✅ Ready for Cloudflare Pages Deployment
Last Updated: 2026-01-28
---
📦 Deployment Checklist
Pre-Deployment
- [x] Master event stream file created (
~/clawd/system/dashboard-events.json)- [x] All 9 dashboard cache files created
- [x] Cron job script created (
~/clawd/crons/dashboard-event-transformer.sh)- [x] Polling injection script created (
~/clawd/system/dashboard-polling-injection.js)- [x] All 9 dashboards updated with polling code
- [x] Helper functions created (
~/clawd/system/dashboard-helpers.js)- [x] Documentation created (
~/clawd/system/DASHBOARD-SYSTEM-GUIDE.md)- [x] System files copied to DashboardIndex for deployment
- [x] Relative paths updated for Pages deployment
Deployment Steps
#### Step 1: Verify Deployment Files in DashboardIndex
bash
ls -la ~/clawd/DashboardIndex/ | grep system
Expected output:
drwxr-xr-x 11 staff 352 Jan 28 12:53 system-caches/
-rw-r--r-- 1 staff 438 Jan 28 12:53 system-events.json
-rw-r--r-- 1 staff 3085 Jan 28 12:53 system-polling-injection.js
-rw-r--r-- 1 staff 17K Jan 28 12:53 DASHBOARD-SYSTEM-GUIDE.md
#### Step 2: Deploy to Cloudflare Pages
bash
cd ~/clawd/DashboardIndex
Deploy all changes
wrangler pages deploy . --project-name=dashboard-index --commit-dirty=true
Expected output:
✓ Uploaded 150 files
✓ Compiled successfully
✓ Deployed to https://dashboard-index.pages.dev
#### Step 3: Verify Deployment
Open browser to each dashboard URL:
- https://dashboard-index.pages.dev/CommandCenter/index.html
- https://dashboard-index.pages.dev/MindMiner/index.html
- https://dashboard-index.pages.dev/NovaLaunch/index.html
- https://dashboard-index.pages.dev/SchellIP/index.html
- https://dashboard-index.pages.dev/SchellSpinal/index.html
- https://dashboard-index.pages.dev/OverlookHubbardLake/index.html
- https://dashboard-index.pages.dev/Kickstarter/index.html
- https://dashboard-index.pages.dev/1000x/index.html
- https://dashboard-index.pages.dev/costs/index.html
For each:
1. Open browser console (F12)
2. Look for message:
[Dashboard Poll] Initialized polling for {dashboard-id}3. Check for polling activity messages every 60 seconds
#### Step 4: Configure Cron Job (Main Agent)
The cron job must be registered separately by the main agent. It needs to run every 30-60 seconds.
Add to system crontab:
bash
Every 30 seconds
/0.5 * /Users/jeffschell/clawd/crons/dashboard-event-transformer.sh >> /Users/jeffschell/clawd/logs/dashboard-transformer.log 2>&1
Or register as daemon:
bash
Create launchd plist for continuous execution
cat > ~/Library/LaunchAgents/com.schell.dashboard-transformer.plist << 'PLIST'
Label
com.schell.dashboard-transformer
ProgramArguments
/Users/jeffschell/clawd/crons/dashboard-event-transformer.sh
StartInterval
30
StandardOutPath
/Users/jeffschell/clawd/logs/dashboard-transformer.log
StandardErrorPath
/Users/jeffschell/clawd/logs/dashboard-transformer.error.log
Load the daemon
launchctl load ~/Library/LaunchAgents/com.schell.dashboard-transformer.plist
#### Step 5: Test End-to-End
bash
From command line, append a test event
node << 'EOF'
const helpers = require('/Users/jeffschell/clawd/system/dashboard-helpers.js');
(async () => {
const eventId = await helpers.appendDashboardUpdate({
dashboard: 'admin',
section: 'test',
action: 'add',
content: { message: 'Test event at ' + new Date().toISOString() },
priority: 'low'
});
console.log('✓ Event appended:', eventId);
console.log('Waiting 60 seconds for cron job to process...');
console.log('Then check dashboard console for update message');
})();
EOF
Monitor transformer logs
tail -f ~/clawd/logs/dashboard-transformer.log
Check if cache was updated
cat ~/clawd/system/dashboard-caches/admin-cache.json | jq '.items | length'
Expected flow:
1. ✅ Event appended (message appears immediately)
2. ✅ Cron job processes (log shows event transformation)
3. ✅ Cache updated (item count increases)
4. ✅ Dashboard polls (browser shows new item within 60-120s)
#### Step 6: Monitor Ongoing
Keep these logs open while testing:
bash
Terminal 1: Watch transformer logs
tail -f ~/clawd/logs/dashboard-transformer.log
Terminal 2: Watch cache updates
watch -n 5 'ls -la ~/clawd/system/dashboard-caches/.json | awk "{print \$6, \$7, \$8, \$9, \$10}" && echo "---" && du -h ~/clawd/system/dashboard-caches/.json | sort -h'
Terminal 3: Watch event stream
watch -n 5 'jq ".metadata | {totalEvents, lastProcessed}" ~/clawd/system/dashboard-events.json'
---
🚀 Post-Deployment
Success Indicators
✅ Dashboard is accessible: https://dashboard-index.pages.dev/CommandCenter/
✅ Polling is active: Browser console shows
[Dashboard Poll] messages✅ Cron job is running: Check logs:
tail ~/clawd/logs/dashboard-transformer.log✅ Cache is updating:
ls -la ~/clawd/system/dashboard-caches/✅ Events are flowing:
jq '.metadata.totalEvents' ~/clawd/system/dashboard-events.jsonIf Something Breaks
Dashboard not updating?
1. Check console errors: F12 → Console tab
2. Verify polling script loaded:
console.log(DASHBOARD_POLLING)3. Check cache file path: Fetch in console to test access
4. Restart browser polling: Ctrl+Shift+R (hard refresh)
Cron job not running?
1. Check if registered:
crontab -l | grep dashboard2. Check system logs:
log stream --predicate 'process == "cron"'3. Manually run:
~/clawd/crons/dashboard-event-transformer.sh4. Check errors:
cat ~/clawd/logs/dashboard-transformer.log | tail -20Cache files missing after deploy?
1. Verify files were deployed: Visit
https://dashboard-index.pages.dev/system-caches/mindminer-cache.json in browser2. If 404, re-run deployment:
wrangler pages deploy . --project-name=dashboard-index --commit-dirty=true3. Check build logs in Cloudflare dashboard
---
📊 Deployment Architecture
After deployment, the system works like this:
┌─────────────────────────────────────────────────────┐
│ Local System (~/clawd/) │
├─────────────────────────────────────────────────────┤
│ │
│ Agent/Orchestrator │
│ └─ appendDashboardUpdate() │
│ └─ ~/clawd/system/dashboard-events.json │
│ │
│ Cron Job (every 30-60 sec) │
│ └─ ~/clawd/crons/dashboard-event-transformer.sh │
│ └─ Read events │
│ └─ Write to caches │
│ └─ ~/clawd/system/dashboard-caches/ │
│ │
└─────────────────────────────────────────────────────┘
│ (files)
│
↓
┌─────────────────────────────────────────────────────┐
│ Cloudflare Pages (https://dashboard-index.pages.dev) │
├─────────────────────────────────────────────────────┤
│ │
│ Dashboard HTML Files │
│ ├─ CommandCenter/index.html │
│ ├─ MindMiner/index.html │
│ └─ ... (other dashboards) │
│ │
│ System Files │
│ ├─ system-events.json │
│ ├─ system-polling-injection.js │
│ └─ system-caches/ │
│ ├─ mindminer-cache.json │
│ ├─ nova-launch-cache.json │
│ └─ ... (other caches) │
│ │
│ Browser Polling (every 60 sec) │
│ └─ Fetch cache files │
│ └─ Update DOM if version changed │
│ └─ Display to user │
│ │
└─────────────────────────────────────────────────────┘
Key Points:
- Local system appends events every time an agent needs an update
- Cron job runs every 30-60 seconds (local only, no Pages overhead)
- Cached files get copied to Pages (via git/deployment)
- Dashboards on Pages poll the cached files every 60 seconds
- Updates appear in <120 seconds from event append to user view
---
🔄 File Synchronization Strategy
How cache files get to Cloudflare Pages:
Option A: Manual Sync via Git (Current)
bash
cd ~/clawd
git add system-caches/
git commit -m "Dashboard system: cache updates"
git push origin main
Pages redeploys automatically (if connected)
Option B: Automatic Sync via Wrangler
bash
In deployment script:
wrangler pages deploy ~/clawd/DashboardIndex --project-name=dashboard-index --commit-dirty=true
Option C: Scheduled Job
bash
Cron job that syncs every 5 minutes:
/5 cd ~/clawd && git add system-events.json system-caches/.json && git commit -m "auto: dashboard cache sync" && git push origin main 2>/dev/null || true
Recommended: Option A (manual) for production stability + Option B (wrangler) for rapid updates
---
📋 Maintenance
Daily
- Monitor logs:
tail -f ~/clawd/logs/dashboard-transformer.log- Check cache sizes:
du -h ~/clawd/system/dashboard-caches/Weekly
- Verify cron job still running:
ps aux | grep dashboard-event-transformer- Check event stream health:
jq '.metadata' ~/clawd/system/dashboard-events.json- Test manual event append: Use helper functions
Monthly
- Clean up old events:
clearOldEvents('30d')- Archive transformer logs
- Update documentation if procedures change
---
✅ Deployment Complete
When all steps above are complete, the Unified Dashboard System is fully operational and ready for production use.
Next: Integrate all agents to use
appendDashboardUpdate() instead of direct DOM updates.