Chapter 4 β€” Build Your Mission Control#

πŸ“Œ TL;DR#

  • Mission Control is a custom dashboard your agent team builds for you β€” no downloads, no repos, nothing to clone.
  • You describe what you want in plain English (the view, the vibe, the tabs). Jarvis proposes a plan. You approve. Mr. Stark builds.
  • The build is iterative: start with an MVP (3 tabs β€” Home, Tasks, Activity), verify it works, then extend to the full 9-tab layout.
  • To view it from your laptop, you run one SSH tunnel command and open http://localhost:3000.
  • By the end, you've proved the agent-first loop: describe β†’ propose β†’ approve β†’ build β†’ verify, all through Telegram.

πŸ‘‹ Overview#

Up to now, you've talked to agents in Telegram. That's great for conversation. For structured work β€” seeing what's in flight, what's scheduled, what's been written β€” you want a dashboard.

Here's the key principle: you won't clone a pre-built Mission Control. There's no repo to pull. Your dashboard is going to be built from nothing, right now, by your team, to your spec. That's the exercise of this chapter.

Two caveats up front:

  1. This is genuinely a build, not an install. Plan for 60-90 minutes for the MVP, and another 30-60 for the full 9-tab version. Most of that time you're waiting on Mr. Stark; you check in periodically.
  2. Your dashboard will look different from anyone else's. That's the point. Yours reflects your priorities, your naming, your sense of design. Focus on whether the behavior is right (you send a Telegram message, a row appears in Tasks 3 seconds later) β€” not whether it matches a reference screenshot.

⏱️ Time & Difficulty#

  • Time: 60-90 minutes for the MVP. 30-60 minutes more for the full layout. Spread across one or two sittings.
  • Difficulty: Beginner-intermediate. You won't type code, but you will read Mr. Stark's progress reports and send clarifying prompts when he asks.
  • One SSH command from your laptop at the end.

🎯 The Build Loop#

This chapter teaches a core workflow. Every new feature you'll ever ask for follows this agent-first build loop:

StepYou DoAgent Does
1. DescribeTell Jarvis what you want in plain English.Listens and parses your intent.
2. Proposeβ€”Drafts a concrete plan (stack, tabs, build order) and posts it back.
3. ApproveRead the plan, approve it, or tweak parts you don't like.Waits for your green light.
4. Buildβ€”Mr. Stark executes, reporting progress as he goes.
5. VerifyCheck the behavior matches what you asked for.Confirms and stands by for the next request.

Learn this loop once. It's how you ship.


πŸš€ Step 1 β€” Describe What You Want#

This is the ENTIRE user prompt you send. It contains what you want to see and how it should feel, not how to build it. The agents will figure out the technical details.

πŸ’¬ Try this
> Jarvis, I want to build Mission Control β€” a custom dashboard for watching our agent team work. I'm going to describe what I want; you figure out how to build it. Here's the spec:
>
> **What it is:**
> A web dashboard I can open in my laptop's browser to see what our team is doing in real time. Nothing to install on my laptop beyond a browser. It should run on the Pi and update live as you and the specialists do work.
>
> **The 9 tabs I want:**
> 1. Home β€” at-a-glance overview: today's in-progress work, upcoming scheduled jobs, pinned projects, recent activity.
> 2. Tasks β€” a Kanban board (Backlog / In Progress / Needs Review / Done) for everything the team is working on. Drag-and-drop to move cards.
> 3. Calendar β€” week/day/month view showing every scheduled job and task due date. Colorful, with emoji badges per agent or job type.
> 4. Projects β€” grid of all active and completed projects with progress bars. Click a project to see its tasks, linked docs, and activity.
> 5. Docs β€” browser and markdown renderer for everything the team writes (research briefs, emails, project docs). Group by folder.
> 6. Memory β€” timeline of daily memory files. Click a date to read that day's notes rendered as markdown.
> 7. Team β€” an org chart (me β†’ Jarvis β†’ specialists). Click an agent to see their recent activity and roles.
> 8. Activity β€” live event feed showing every action (task claimed, doc created, job finished) with timestamps and who did it.
> 9. Settings β€” theme (light/dark), refresh interval, export database button, basic prefs.
>
> **How it should feel:**
> - Clean, modern, dense-but-breathable. Think "well-designed developer tool", not corporate SaaS.
> - Dark mode by default, with a light-mode toggle.
> - Left sidebar for tab navigation (with emoji icons); main content pane on the right.
> - Live updates β€” I don't want to refresh. Events and status changes appear within a few seconds.
> - Mobile-friendly enough that I can glance at it on my phone when I'm away from the laptop.
> - Small "agent status" dot indicators (green = idle, yellow = working, red = error) visible on the Home tab and Team tab.
> - Emoji used thoughtfully β€” as category badges, not decoration.
>
> **Non-negotiables:**
> - Runs on the Pi, accessible only over my local network (no public internet exposure, ever).
> - All agents write events/data to it as they work β€” the dashboard is the single source of truth.
> - Can be stopped and started by me via a Telegram message to you.
>
> **Build it in two phases** so I can verify before we commit to the full thing:
> - **Phase 1 (MVP):** Get Home, Tasks, and Activity working end-to-end. Live updates, a seed of real data, and all three tabs interlinked. That's the proof of concept.
> - **Phase 2:** After I confirm Phase 1 works, add the remaining 6 tabs (Calendar, Projects, Docs, Memory, Team, Settings).
>
> Before Mr. Stark touches anything, send me back a plan: what you'll build, the rough stack you picked and why, how you'll split the MVP from Phase 2, and anything you need from me (like design choices to confirm). I'll approve the plan, then you hand it to him.

πŸ“‹ Step 2 β€” Review Jarvis's Plan#

Jarvis will translate your description into a concrete engineering plan. Read it to understand the approach before giving the go-ahead.

Heads up: the example below is representative, not exact. Your Jarvis will make different calls on stack, colors, and scope depending on what you wrote and what he judges reasonable. Focus on whether the plan captures your intent, not whether it matches this template word for word.

βœ… What you should see
Jarvis replies with a plan post that looks roughly like this:

---
🦾 **Plan β€” Mission Control MVP β†’ Full**

**Stack I'll have Mr. Stark use:**
- A Node.js web app (Next.js) for speed and so every page can use live updates easily.
- A small local database (SQLite via Prisma) so data persists across restarts β€” no external services needed.
- Server-Sent Events for the "updates appear in a few seconds" requirement.
- Tailwind CSS for the clean, dense UI.
- Bound to 127.0.0.1 + port 3000 on the Pi; you'll reach it via an SSH tunnel from your laptop.
- Runs under tmux so it survives if you close your terminal.

**MVP scope (Phase 1, ~45-60 min):**
- Database schema: agents, tasks, projects, docs, activity events.
- Seeds agent rows for the 4 of us (me, Mr. Stark, Sherlock, Shakespeare).
- Home tab (stats + activity feed), Tasks tab (Kanban), Activity tab (live event stream).
- Left sidebar with emoji icons. Dark mode default.

**Phase 2 scope (after you approve MVP):**
- Calendar, Projects, Docs, Memory, Team, Settings tabs.
- Light-mode toggle, refresh-interval setting, DB export.

**Mobile friendliness:** Tailwind-based, responsive. Will work at phone widths without a dedicated app.

**Things I'd like you to confirm before Mr. Stark starts:**
- Accent color β€” I'm going with a muted violet (#7c3aed) unless you want something else.
- Date format β€” I'll default to your US/Central format (e.g., "Apr 21, 7:45 PM"). OK?
- Empty states β€” if a tab has no data yet, I'll show a friendly placeholder ("No tasks yet β€” ask me to add one"). OK?

Reply "go" and I'll hand it to Mr. Stark. Or tell me what to change.
---

Read the plan. If you're happy, reply "go" (or "approved"). Tweak anything you don't like β€” reduce scope, change a color, skip a tab.

βœ… Step 3 β€” Approve and Let Mr. Stark Build#

Once you approve, Mr. Stark takes over. You'll see periodic, plain-English progress updates in Telegram.

βœ… What you should see
1. Jarvis: "Approved. Handing to Mr. Stark. Phase 1 ETA ~45-60 min. I'll post progress."
2. Mr. Stark sends periodic Telegram updates β€” plain English, not code:
   β€’ "Scaffolded the web app. Added the shared database with tables for agents, tasks, projects, docs, and events."
   β€’ "Seeded the four agent rows (Jarvis, Mr. Stark, Sherlock, Shakespeare)."
   β€’ "Built the live event endpoint. Home tab rendering with real data."
   β€’ "Tasks tab working β€” drag-and-drop tested."
   β€’ "Activity tab live, updates showing within ~3 seconds of a new event."
   β€’ "Dev server running on port 3000 (Pi only). Ready for you."
3. Jarvis closes Phase 1: "βœ… Phase 1 is up. Open the SSH tunnel below, then tell me if it looks right. Once you confirm, we'll roll Phase 2."

Note: If Mr. Stark hits a design decision mid-build, Jarvis answers with the reasonable default from the approved plan. You are only interrupted for things that weren't in the plan.

πŸ”— Step 4 β€” Open Mission Control from Your Laptop#

The dashboard runs on your Pi. To access it from your laptop, open an SSH tunnel. This securely forwards the Pi's port 3000 to your laptop.

ssh -N -L 3000:localhost:3000 yourusername@your-pi-ip
  • Replace yourusername and your-pi-ip with your actual Pi credentials.
  • The -N flag means "no remote command," keeping the connection clean for just tunneling.
  • Leave this terminal window open. Minimize it.

Now, open your laptop's browser and go to: http://localhost:3000

πŸ” Step 5 β€” Verify the MVP#

Don't just look β€” test. Send a prompt that should cause an immediate, visible change in the dashboard.

πŸ’¬ Try this
> Jarvis, is Mission Control running? Also, add a test task: "Verify Mission Control MVP". Assign it to me.
βœ… What you should see
1. Jarvis confirms the server is up in tmux, serving on 127.0.0.1:3000.
2. Jarvis confirms the task was created.
3. In your browser, within 3 seconds: the new task appears in the Tasks tab Backlog column, AND an event appears in the Activity tab feed ("task.created by Jarvis").

If that smoke test works, the MVP is proven. You've validated the live update pipeline and the agent-to-dashboard connection.

πŸš€ Step 6 β€” Greenlight Phase 2#

Now, instruct the team to complete the full dashboard.

πŸ’¬ Try this
> Jarvis, Phase 1 looks great. Let's do Phase 2 β€” add Calendar, Projects, Docs, Memory, Team, and Settings.
βœ… What you should see
Same rhythm: Mr. Stark posts progress per tab as he lands it. He'll pause for input on anything that needs a design decision (for example: "What should the Memory tab's default view be β€” most recent file, or today's file?"). Answer him and he moves on. Phase 2 usually lands in 30-60 min.

πŸ—ΊοΈ Your 9-Tab Tour#

Once Phase 2 is complete, your Mission Control will have these nine core tabs:

TabEmojiPurposeWhat to Look For
Home🏠At-a-glance overview and pinned items.Today's stats, upcoming jobs, recent activity snippet.
TasksπŸ“‹Kanban board for team workflow.Drag-and-drop columns (Backlog, In Progress, etc.). Cards update live.
CalendarπŸ“…Visual schedule of jobs and deadlines.Week/day/month views. Color-coded events with emoji badges.
ProjectsπŸ“Track multi-step initiatives.Grid with progress bars. Click into tasks, docs, and activity.
DocsπŸ“„Browse and read everything the team writes.Files from ~/.openclaw/workspace/. Rendered markdown, grouped by folder.
Memory🧠Timeline of your daily notes.Click a date to read that day's memory file, rendered cleanly.
TeamπŸ‘₯Interactive org chart and agent status.Hierarchy (You β†’ Jarvis β†’ Specialists). Status dots (green/yellow/red).
ActivityπŸ””Live feed of every system event.Chronological stream. Updates appear within seconds of an action.
Settingsβš™οΈBasic preferences and controls.Light/dark toggle, refresh interval, database export button.

πŸ’¬ Prompts to Exercise Mission Control#

Try these interactions to see the dashboard respond in real time.

1. Create a task and watch it flow.

πŸ’¬ Try this
> Jarvis, please add a task: "Draft Q2 planning doc". Put it in Backlog and assign it to Shakespeare.
βœ… What you should see
Task appears in the Backlog column. An "task.created" event appears in the Activity feed.

2. Watch an agent work.

πŸ’¬ Try this
> Shakespeare, please draft a short LinkedIn post about agentic workflows. Keep it to 3 sentences.
βœ… What you should see
In the Activity tab: "task.claimed by Shakespeare", then "doc.created". The Docs tab will show the new file. The task moves to "In Progress," then "Done."

3. Schedule a reminder.

πŸ’¬ Try this
> Jarvis, remind me in 2 minutes to "Check Mission Control Calendar."
βœ… What you should see
A scheduled job appears in the Calendar tab. In 2 minutes, a reminder appears in Telegram AND an "job.completed" event appears in the Activity tab.

4. Create and complete a project.

πŸ’¬ Try this
> Jarvis, let's start a project called "Dashboard Onboarding". Add the two tasks we just did as related items.
βœ… What you should see
A new card appears in the Projects tab. The two tasks are linked under it. Progress bar updates as tasks are completed.

5. Write to memory.

πŸ’¬ Try this
> Jarvis, add to memory: "Successfully built and tested Mission Control. The live updates are working perfectly."
βœ… What you should see
An "memory.updated" event in Activity. The new note appears in today's entry in the Memory tab.

πŸ” How the Dashboard Stays in Sync#

The dashboard and all your agents share the same local database on the Pi. When an agent performs an actionβ€”creates a task, writes a doc, completes a jobβ€”it writes an event to this database.

The dashboard uses a live update pipeline that listens for new events. When one arrives, it pushes a notification to every open browser tab within a few seconds. This is why you see changes without refreshing the page.

πŸ›‘οΈ Security Note#

Mission Control has no built-in login or password. It binds only to 127.0.0.1 (localhost) on the Pi.

  • This is by design. Your access is secured by your SSH tunnel, which requires your Pi credentials.
  • Do not expose port 3000 to the internet. It is meant for your local network only.
  • For secure remote access outside your home network, look into Tailscale or a Cloudflare Tunnel β€” both are solid options worth exploring once you're comfortable with the basics.

πŸ“ Save These for Later#

  • Mission Control URL: http://localhost:3000 (when your SSH tunnel is active)
  • To stop it: > Jarvis, stop Mission Control.
  • To restart it: > Jarvis, restart Mission Control.
  • To extend it: Describe what you want in Telegram. Every new feature follows the same describe β†’ propose β†’ approve β†’ build β†’ verify loop.

βœ… What You Just Accomplished#

  1. Described a dashboard in plain English β€” no tech spec required.
  2. Reviewed and approved Jarvis's proposed technical plan.
  3. Watched Mr. Stark build the MVP and verified it worked with a live test.
  4. Greenlit Phase 2 and received a full, custom 9-tab dashboard.
  5. Used zero shell commands on the Pi; only one SSH tunnel command from your laptop.
  6. Most importantly, you ran the agent-first build loop end-to-end β€” describe, propose, approve, build, verify. This is how every future feature ships.

πŸ†˜ Troubleshooting#

SymptomAgent-First FixShell Fallback
Jarvis hasn't proposed a plan within ~5 minutes.> Jarvis, are you still working on that plan? Send what you have.β€”
I don't understand Jarvis's plan (e.g., "Prisma", "SSE").> Jarvis, explain this part of your plan in plain English: <paste>.β€”
Mr. Stark stopped posting progress mid-build.> Jarvis, is Mr. Stark still working? Show me the last step and what's next.Check his log: tail -f /tmp/stark-mission-control.log
Browser shows "Connection refused" on localhost:3000.> Jarvis, is Mission Control running? If not, start it.SSH to Pi; tmux attach -t mc to see errors.
SSH tunnel error: channel 3: open failed.The server isn't running. Ask Jarvis to start it.On the Pi: curl -s http://127.0.0.1:3000 should return HTML.
Port 3000 is in use on your laptop.β€”Use a different laptop port: ssh -N -L 3100:localhost:3000 ... then browse to localhost:3100.
Build diverged from what you described.> Jarvis, the <tab> isn't doing <X>. Have Mr. Stark fix it.β€” Expect 2-4 refinement rounds. That's normal.
Dashboard not running after a Pi reboot.> Jarvis, start Mission Control again.Expected β€” tmux doesn't survive reboot. See Appendix: Mission Control Persistence for the manual recipe and an optional auto-check entry.

➑️ What's Next#

Chapter 5: Daily Automations & Cron. Now that Mission Control is live, we'll wire it up with scheduled jobs β€” morning briefings, reminders, daily wrap-up β€” all by telling Jarvis when you want things to happen. The dashboard's Calendar and Activity tabs will be your window into these running processes.