13 KiB
11 — HQ Improvements Plan: Lessons from Bhanu's Multi-Agent System
Status: PLAN — Ready for execution Author: Mario Lavoie Date: 2026-02-16 Source: Bhanu's Multi-Clawdbot Video + Antoine's feedback Scope: Improvements to Atomizer HQ orchestration — not feature dev or project optimization dashboards
Context
Bhanu (founder of SiteGPT) runs 14 OpenClaw agents doing marketing. Key things that work well in his setup and how they map to ours:
| Bhanu's Pattern | Our Equivalent | Status |
|---|---|---|
| Single entry point (Jarvis) | Manager orchestrates | ✅ Have it |
| Custom-built task dashboard | — | ❌ Need this |
| 15-min polling (agents check for new work) | Heartbeat system | 🔶 Need adaptation |
| Enforced deliverables per task | Handoff JSON schema | 🔶 Need enforcement |
| Squad chat (agents talk freely) | Discord channels | ✅ Have it better |
| Broadcast to all agents | delegate.sh / hooks | ✅ Have it |
| Escalation to Telegram on @mentions | Slack notifications | ✅ Have it |
| Vacation mode (Jarvis auto-approves) | — | 🔶 Nice to have |
Key insight from Antoine: We keep Discord as the backbone. Topic-based channels managed by Manager give us more visibility than Bhanu's single-dashboard approach. The dashboard supplements Discord — it doesn't replace it.
Improvement 1: HQ Orchestration Dashboard
What It Is
A lightweight web UI that shows the state of all active work across the Atomizer HQ cluster. Think: a Kanban board + agent status panel. Antoine opens it from any device and sees the full picture.
This is NOT:
- The existing Atomizer study/optimization dashboard (that stays separate)
- A feature development tracker (that lives in Discord + roadmap docs)
This IS:
- A collaboration/orchestration view for the agent cluster
- Real-time visibility into who's doing what
Views
1. Task Board (Kanban)
┌─────────────┬──────────────┬──────────────┬─────────────┐
│ BACKLOG │ IN PROGRESS │ REVIEW │ DONE │
├─────────────┼──────────────┼──────────────┼─────────────┤
│ Research │ 🔧 Tech Lead │ 📋 Secretary │ ✅ Homepage │
│ CTE data │ Material │ Report v2 │ redesign │
│ [webster] │ trade study │ needs CEO │ [friday] │
│ │ │ approval │ │
│ Write test │ ⚡ Optimizer │ │ ✅ CTE study │
│ protocol │ Pareto front │ │ [webster] │
│ [auditor] │ exploration │ │ │
└─────────────┴──────────────┴──────────────┴─────────────┘
Each card shows:
- Task title + short description
- Assigned agent (emoji + name)
- Time elapsed since assignment
- Status (from handoff JSON: complete/partial/blocked/failed)
- Deliverables attached (if any)
- Blockers (highlighted in red)
2. Agent Status Panel
┌──────────────────────────────────────────────┐
│ AGENTS │
│ 🎯 Manager ● online 3 tasks active │
│ 📋 Secretary ● online 1 task active │
│ 🔧 Tech Lead ● online 2 tasks active │
│ 🔍 Auditor ● online idle │
│ ⚡ Optimizer ● online 1 task active │
│ 🏗️ Study Builder ○ offline — │
│ 🖥️ NX Expert ○ offline — │
│ 🌐 Webster ● online 1 task active │
└──────────────────────────────────────────────┘
Health from /hooks/health endpoint per instance. Shows active task count, last activity timestamp.
3. Recent Activity Feed
Chronological log of handoffs, completions, escalations. Like a simplified Discord activity stream but structured:
[14:32] 🎯 Manager → 🌐 Webster: "Research CTE of Clearceram-Z HS"
[14:33] 🌐 Webster: accepted task
[14:45] 🌐 Webster: STATUS: complete, CONFIDENCE: high
[14:45] 🎯 Manager → 🔍 Auditor: "Validate Webster's CTE findings"
[14:46] 📋 Secretary → Antoine: "Review needed: Homepage redesign deliverable"
4. Escalations & Blockers (Top Bar)
Items waiting for Antoine's input — surfaced prominently so he doesn't need to dig.
Tech Stack
- Frontend: React + Vite + TailwindCSS (same as existing Atomizer dashboard)
- Backend: FastAPI endpoint that reads handoff files from
/home/papa/atomizer/handoffs/ - Data source: The handoff JSON from orchestration engine (doc 10) — already structured
- Refresh: WebSocket or 10-second polling
- Auth: Basic auth or none (local network only)
Implementation
| Step | Work | Effort |
|---|---|---|
| 1 | Define task state machine (backlog→active→review→done) | 1h |
| 2 | Add task creation/tracking to orchestrate.sh | 2h |
| 3 | FastAPI endpoints: GET /tasks, GET /agents/status, GET /activity | 3h |
| 4 | React Kanban board component | 4h |
| 5 | Agent status panel + activity feed | 3h |
| 6 | WebSocket live updates | 2h |
| Total | ~15h |
Improvement 2: Agent Polling for Collaborative Work
What Bhanu Does
Every 15 minutes, each agent checks the dashboard for new items and adds input if relevant. This creates organic cross-pollination — the SEO agent sees a UX task and adds keyword data without being asked.
Our Adaptation
Normal workflow: Agents poll every 15 minutes (existing heartbeat cadence). During a poll, agents check:
- Dashboard task board for tasks in their domain
- Discord channels they're subscribed to for new context
- Any handoffs waiting for their input
Sprint mode: During active sprints, polling increases to 5 minutes. Manager activates sprint mode for specific agents working on a deliverable. Sprint mode auto-expires after a configurable duration (default: 2 hours).
Usage Impact
| Mode | Agents Polled | Frequency | Calls/Hour | Model | Est. Cost/Hour |
|---|---|---|---|---|---|
| Normal | 8 | 15 min | 32 | Gemini Flash | ~$0.10 |
| Sprint (3 agents) | 3 | 5 min | 36 | Gemini Flash | ~$0.12 |
| Sprint (all 8) | 8 | 5 min | 96 | Gemini Flash | ~$0.30 |
Mitigation strategies:
- Use Gemini Flash for all polling (cheapest model)
- Keep polling context minimal (just task board state, not full history)
- Only sprint-poll involved agents, not the whole cluster
- Auto-expire sprint mode to prevent runaway costs
Implementation
| Step | Work | Effort |
|---|---|---|
| 1 | Add sprint-mode.json config (active agents, frequency, expiry) |
1h |
| 2 | Update agent HEARTBEAT.md templates to check task board | 1h |
| 3 | Manager command: "start sprint [agents] [duration]" | 2h |
| 4 | Dashboard toggle for sprint mode | 1h |
| Total | ~5h |
Improvement 3: Enforced Deliverables
What Bhanu Does
Every task requires a deliverable to be marked done. No deliverable = task stays open. This prevents agents from saying "I worked on it" without producing anything.
Our Adaptation
This is gold and we partially have it (handoff JSON has artifacts field). We need to make it mandatory and visible.
Rules:
- Every task MUST have a
deliverable_typedefined at creation:document— markdown/PDF reportcode— script, config, or code changeanalysis— structured findings with datarecommendation— decision brief with optionsreview— audit/validation report
- Task cannot move to "done" without an artifact path in the handoff JSON
- Dashboard shows deliverable status: 📎 attached / ⚠️ missing
- Manager enforces this — rejects handoffs without deliverables
Changes to Handoff Schema
{
"schemaVersion": "1.1",
"runId": "...",
"agent": "webster",
"status": "complete",
"result": "...",
"deliverable": {
"type": "analysis",
"title": "Clearceram-Z HS CTE Comparison",
"path": "/home/papa/atomizer/deliverables/2026-02-16-cte-comparison.md",
"summary": "CCZ HS matches Zerodur Class 0 CTE spec at 0 ± 0.02 ppm/K (20-300K)"
},
"confidence": "high",
"timestamp": "2026-02-16T03:00:00Z"
}
Implementation
| Step | Work | Effort |
|---|---|---|
| 1 | Update handoff schema (v1.1) with mandatory deliverable block | 1h |
| 2 | Update agent SOUL.md instructions re: deliverables | 1h |
| 3 | Add validation in orchestrate.sh (reject if no deliverable) | 1h |
| 4 | Dashboard: show deliverable status on task cards | 1h |
| Total | ~4h |
Improvement 4: Discord as the Backbone (Not the Dashboard)
Why We're Different from Bhanu
Bhanu channels everything through one agent (Jarvis) and uses a custom dashboard as the shared workspace. We have something better: Discord with topic-based channels.
Advantages of our approach:
- Visibility — Antoine sees all agent work in real-time across channels
- Context — each channel is a focused workspace, not a noisy firehose
- Showcase — looks like a real engineering team (video-worthy, client-facing potential)
- Direct access — Antoine can jump into any channel and talk to any agent
- History — Discord retains full conversation history per topic
- Manager still orchestrates — creates channels, assigns work, enforces deliverables
What the Dashboard Adds on Top
The dashboard doesn't replace Discord — it's the bird's eye view:
- Discord = the workspace (where work happens)
- Dashboard = the control panel (where you see the big picture)
Agents work in Discord channels. The dashboard aggregates their status.
Manager's Channel Management Role
Manager should actively manage Discord channels:
- Create project channels when new work starts (
#proj-starspec-wfe) - Archive channels when work completes
- Pin key deliverables in channels
- Post daily summaries in
#all-atomizer-hq - Route new tasks to appropriate channels
Implementation
| Step | Work | Effort |
|---|---|---|
| 1 | Update Manager SOUL.md with channel management duties | 1h |
| 2 | Channel naming convention doc | 0.5h |
| 3 | Manager creates channels via Discord API on task creation | 2h |
| Total | ~3.5h |
Improvement 5: Vacation / Autonomous Mode
What Bhanu Does
Tells Jarvis "don't wait on me, you be the final call" — Jarvis auto-approves everything for days. Comes back to find 97 items completed.
Our Adaptation
A "trust level" setting for Manager:
| Level | Behavior |
|---|---|
| Normal | Escalate decisions, wait for Antoine on approvals |
| Autonomous | Manager auto-approves routine work, only escalates high-risk items |
| Full auto | Manager approves everything, Antoine reviews async when back |
Activated via: message Manager in Discord or Slack: "Going offline for 3 days, autonomous mode"
Implementation
| Step | Work | Effort |
|---|---|---|
| 1 | Add trust-level config to Manager's workspace | 1h |
| 2 | Update Manager SOUL.md with approval logic per level | 1h |
| 3 | Dashboard indicator showing current mode | 0.5h |
| Total | ~2.5h |
Execution Priority
| # | Improvement | Effort | Impact | Priority |
|---|---|---|---|---|
| 3 | Enforced Deliverables | 4h | 🔴 High — changes agent behavior now | Do first |
| 1 | HQ Orchestration Dashboard | 15h | 🔴 High — visibility into everything | Do second |
| 2 | Agent Polling / Sprint Mode | 5h | 🟡 Medium — enables collaboration | Do third |
| 4 | Discord Channel Management | 3.5h | 🟡 Medium — better organization | Do fourth |
| 5 | Vacation / Autonomous Mode | 2.5h | 🟢 Nice to have | Do last |
Total estimated effort: ~30 hours
What We're NOT Doing (Intentionally)
- Single-agent entry point — We keep Discord multi-channel. More visibility > more control.
- Custom project management app — Dashboard is lightweight. Discord is the workspace.
- Feature development dashboard — Tracked in Discord + roadmap docs.
- Project optimization dashboard — The existing Atomizer dashboard handles study monitoring.
- Squad chat — We already have this via Discord channels, and it's better.
Dependencies
- Orchestration engine (doc 10) — Handoff JSON schema is the data backbone for the dashboard
- orchestrate.sh — Must be working for task tracking
- Agent cluster — All 8 instances need to be stable
Prepared by Mario — 2026-02-16