How to add, update, and deploy projects to this dashboard.
From any terminal, run the updater script. It edits projects.json automatically.
python3 "/Volumes/Data/Zenith Mind OS/Broken Paul/launchpad/push-project.py" \
--name "My Project" \
--category client \
--description "Short description here" \
--url "https://myproject.pages.dev" \
--progress 60 \
--tags ai client cloudflare
Update an existing project's URL and progress
python3 push-project.py --name "VIEW Coach" --url "http://localhost:5173" --progress 80
Add a Claude session
python3 push-project.py \
--name "VIEW Coach" \
--session "e4d71c11-d134-444f-a9e0-01bac310072a" \
--session-label "RAG + voice build" \
--session-cmd "claude --resume e4d71c11-d134-444f-a9e0-01bac310072a"
List all projects
python3 push-project.py --list
Remove a project
python3 push-project.py --name "Old Project" --remove
| Flag | Description | Example |
|---|---|---|
| --name | Project name (used as lookup key) | "VIEW Coach" |
| --id | Custom slug ID (auto-generated from name if omitted) | "view-coach" |
| --category | client · product · personal · infra | client |
| --description | Short one-line description | "AI coaching app" |
| --url | Live URL (leave empty for local-only) | "https://..." |
| --local | Flag as local app (no public URL) | (no value) |
| --launch-cmd | Terminal command to launch locally | "cd /path && python3 app.py" |
| --folder | Working folder path | "/Volumes/Data/..." |
| --status | active · paused · complete | active |
| --progress | 0–100 | 75 |
| --session | Full Claude session UUID | "e4d71c11-d134-..." |
| --session-label | Human label for session | "Auth build" |
| --session-cmd | Full resume command | "claude --resume ..." |
| --tags | Space-separated tags | ai client cloudflare |
| --deploy | Deploy to Cloudflare Pages after saving | (no value) |
| --remove | Remove this project | (no value) |
| --list | List all projects | (no value) |
After updating projects.json, tell Claude: "deploy mission control" — it uses the sp-cloudflare-site skill automatically.
Alternatively, add --deploy to any push-project.py command:
python3 push-project.py --name "VIEW Coach" --progress 85 --deploy
The site deploys to: https://paul-mission-control.pages.dev
The data file lives at:
/Volumes/Data/Zenith Mind OS/Broken Paul/launchpad/projects.json
Each project has this structure:
{
"id": "view-coach", // auto-slugified from name
"name": "VIEW Coach",
"category": "personal", // client | product | personal | infra
"status": "active", // active | paused | complete
"progress": 75, // 0–100
"description": "...",
"url": "http://localhost:5173",
"local": true, // optional — hides "no URL" warning
"launch_cmd": "cd /path && python3 app.py",
"folder": "/Volumes/Data/...",
"sessions": [
{
"id": "e4d71c11", // short display prefix
"label": "RAG + voice build",
"date": "2026-05-21",
"cmd": "claude --resume e4d71c11-d134-444f-a9e0-01bac310072a"
}
],
"tags": ["ai", "coaching"]
}
Hub pages (like Jay Arenas and AI Workshop) are standalone HTML files in the launchpad folder. To add a new hub:
jay-arena.html as a template<div class="sub-card">index.html in the #hubs-grid sectionTo add a URL to a sub-card, find the card in the HTML and replace the <div class="placeholder-url"> with an <a> button:
<a href="https://your-url.pages.dev" target="_blank" class="btn btn-gold btn-sm">
Open
</a>
When you start a Claude Code session, the session ID is shown at the start. To resume it:
claude --resume e4d71c11-d134-444f-a9e0-01bac310072a
The copy button on each card copies the full resume command to your clipboard.
To find a session ID from a past conversation:
python3 ~/.claude/bin/find-session.py "view coach"
python3 ~/.claude/bin/find-session.py "topic" --since 7d