Files
Atomizer/docs/hq/09-CLUSTER-PIVOT-HISTORY.md
Antoine cf82de4f06 docs: add HQ multi-agent framework documentation from PKM
- Project plan, agent roster, architecture, roadmap
- Decision log, full system plan, Discord setup/migration guides
- System implementation status (as-built)
- Cluster pivot history
- Orchestration engine plan (Phases 1-4)
- Webster and Auditor reviews
2026-02-15 21:44:07 +00:00

281 lines
10 KiB
Markdown

> **⚠️ HISTORICAL DOCUMENT** — This was the pivot strategy written during the bridge→cluster transition on 2026-02-14. The pivot has been executed. See [[P-Atomizer-Overhaul-Framework-Agentic/08-SYSTEM-IMPLEMENTATION-STATUS|08 — System Implementation Status]] for the current as-built state.
> Note: This doc proposed Docker Compose, but we went with native systemd instead (no OpenClaw Docker image available).
# 🔧 Strategic Pivot: From Discord-Bridge to Multi-Instance Cluster
**Project:** Atomizer Overhaul Framework (Agentic)
**Date:** 2026-02-14
**Status:** Architecture Redesign
**Owner:** Mario (Architect)
---
## 1. The Problem Statement: "The Middleware Trap"
The current implementation uses a **Node.js Discord Bridge** to bypass a native OpenClaw bug (the "carbon race condition" when multiple tokens are handled by one process). While functional as a temporary fix, it introduces critical systemic weaknesses:
1. **Fragile Interrogation:** The bridge "polls" JSONL session files on disk. This is prone to race conditions, I/O lag, and breaks if the OpenClaw schema updates.
2. **Feature Stripping:** By acting as a middleman, the bridge kills **LLM Streaming**, **Discord Attachments**, **Reactions**, and **Thread Support**.
3. **Single Point of Failure:** If the "Manager" bot (the listener) or the bridge script fails, the entire 8-bot ecosystem goes offline.
4. **Sequential Processing:** The bridge handles messages one-by-one, preventing true parallel agentic collaboration.
---
## 2. The Solution: Multi-Instance Micro-Service Architecture
Instead of one gateway pretending to be 8 bots, we deploy **8 independent OpenClaw instances**. This treats each agent as a dedicated micro-service.
### Key Advantages:
- **Bypasses the Bug:** Each process handles exactly **one** Discord token. The race condition bug is mathematically impossible in this configuration.
- **Native Performance:** Restores real-time streaming, rich media handling, and native Discord UI features.
- **Fault Isolation:** If the "Webster" agent crashes, the "Tech-Lead" remains operational.
- **Hardware Efficiency:** Allows individual resource limits (RAM/CPU) per agent based on their LLM requirements.
---
## 3. The New Infrastructure (T420 Setup)
### A. Directory Structure
Each agent keeps its own local state (SQLite, logs) to avoid database locking, but shares the project workspaces.
Plaintext
```
~/atomizer/
├── docker-compose.yml # The new Orchestrator
├── .env # All 8 Discord Tokens
├── instances/ # Private Agent State (SQLite, local logs)
│ ├── manager/
│ ├── tech-lead/
│ └── ... (8 total)
└── workspaces/ # THE SHARED BRAIN (Project files)
├── manager/ # SOUL.md, MEMORY.md
├── technical-lead/
└── shared_context/ # PROJECT_STATUS.md (Global State)
```
### B. The Orchestrator (`docker-compose.yml`)
This replaces the systemd bridge and the single gateway service.
YAML
```
services:
# Base template for all agents
x-agent-base: &agent-base
image: openclaw/openclaw:latest
restart: unless-stopped
volumes:
- ./workspaces:/app/workspaces
- ./skills:/app/skills
manager:
<<: *agent-base
container_name: atom-manager
environment:
- DISCORD_TOKEN=${MANAGER_TOKEN}
- AGENT_CONFIG_PATH=/app/instances/manager/config.json
volumes:
- ./instances/manager:/root/.openclaw
tech-lead:
<<: *agent-base
container_name: atom-tech-lead
environment:
- DISCORD_TOKEN=${TECH_LEAD_TOKEN}
volumes:
- ./instances/tech-lead:/root/.openclaw
# ... (Repeat for all 8 agents)
```
---
## 4. The "Shared Brain" Logic (Collaboration Protocol)
To ensure agents don't work in silos, we implement a **File-Based Handshake** protocol via their System Prompts:
1. **Read Before Speak:** "Before responding to any Discord message, read `workspaces/shared_context/PROJECT_STATUS.md` to check the current locks and active tasks."
2. **The Inbox Pattern:** To trigger another bot, an agent writes a file to `workspaces/[target-agent]/INBOX/task.json`.
3. **The Watcher:** Each agent uses the `fs-watcher` skill to monitor their `INBOX` folder, allowing them to "wake up" when another bot requests help.
---
## 5. Transition Roadmap
|**Phase**|**Action**|**Result**|
|---|---|---|
|**1. Decommission**|Stop `discord-bridge.js` and `openclaw-gateway-atomizer`.|Clean slate on T420.|
|**2. Containerize**|Move agent configs into the Docker structure.|Isolated, stable environments.|
|**3. Volume Mapping**|Link `~/atomizer/workspaces` to all 8 containers.|Shared project context established.|
|**4. Prompt Update**|Inject the "Inbox" and "Status-First" rules into SOUL.md.|Agents become aware of the team.|
|**5. Validation**|Test @mentioning Tech-Lead in a thread.|Native streaming & thread support verified.|
---
## 6. Final Assessment
The move to **Micro-Instance OpenClaw** shifts the project from a "hacky middleware" state to a professional, scalable AI operation. It aligns with the 2026 industry standard of **Distributed Agentic Systems**, ensuring that the Atomizer Framework is not just functional, but future-proof.
---
**Would you like me to generate the specific `PROJECT_STATUS.md` schema and the "Inbox" watcher script to finalize this transition?**
---
This document outlines the **"Cluster"** approach—moving from one broken process to eight stable ones.
---
# 📄 Atomizer-Architecture-Pivot.md
Markdown
````
# 🔧 STRATEGIC PIVOT: ATOMIZER MULTI-INSTANCE CLUSTER
> **Date:** 2026-02-14
> **Project:** Atomizer Overhaul Framework (Agentic)
> **Status:** Architecture Redesign (Replacing Discord-Bridge.js)
---
## 1. THE PROBLEM: "The Middleware Trap"
The current "Bridge" architecture is a bottleneck. By using a single Node.js script to poll session files:
* **Latency:** No real-time streaming; users wait for full file writes.
* **Fragility:** The bridge breaks if the OpenClaw `.jsonl` schema changes.
* **Single Point of Failure:** If the Manager bot or Bridge process hangs, all 8 bots die.
* **Feature Loss:** No Discord attachments, no native reactions, and broken thread support.
## 2. THE SOLUTION: Micro-Instance Agent Cluster
Instead of one gateway pretending to be 8 bots, we run **8 independent OpenClaw processes**.
### Why this works:
1. **Bypasses the Bug:** The `@buape/carbon` crash only happens when one process handles multiple tokens. One token per process = **100% Stability.**
2. **Native Power:** Restores streaming, threads, and rich media.
3. **Shared Brain:** All instances mount the same physical workspace folder. They "see" each other's files in real-time.
---
## 3. TECHNICAL IMPLEMENTATION
### A. Directory Structure (T420)
```text
~/atomizer/
├── docker-compose.yml # The Orchestrator
├── .env # Store all 8 DISCORD_TOKENs here
├── instances/ # Private Agent State (SQLite, local logs)
│ ├── manager/
│ ├── tech-lead/
│ └── secretary/ ...
└── workspaces/ # THE SHARED PROJECT FOLDERS
├── manager/ # SOUL.md, MEMORY.md
├── technical-lead/
└── shared_context/ # PROJECT_STATUS.md (Global State)
````
### B. The Orchestrator (`docker-compose.yml`)
Copy this into `~/atomizer/docker-compose.yml`. This allows you to manage all bots with one command: `docker-compose up -d`.
YAML
```
services:
# Template for all Atomizer Agents
x-agent-base: &agent-base
image: openclaw/openclaw:latest
restart: unless-stopped
volumes:
- ./workspaces:/app/workspaces
- ./skills:/app/skills
manager:
<<: *agent-base
container_name: atom-manager
environment:
- DISCORD_TOKEN=${MANAGER_TOKEN}
volumes:
- ./instances/manager:/root/.openclaw
tech-lead:
<<: *agent-base
container_name: atom-tech-lead
environment:
- DISCORD_TOKEN=${TECH_LEAD_TOKEN}
volumes:
- ./instances/tech-lead:/root/.openclaw
# ... Repeat for: secretary, auditor, optimizer, study-builder, nx-expert, webster
# Use unique container_names and token environment variables for each.
```
---
## 4. THE COLLABORATION PROTOCOL (System Prompt)
Inject this logic into the **SOUL.md** or System Prompt of every agent to ensure they act as a team, not 8 strangers.
> ### 🤖 CLUSTER OPERATING RULES
>
> 1. **Context Awareness:** You are part of the Atomizer Cluster. Your shared project data lives in `/app/workspaces/`.
>
> 2. **State Check:** Before every response, read `/app/workspaces/shared_context/PROJECT_STATUS.md`.
>
> 3. **Inter-Agent Triggering:** To request help from another agent, write a task file to `/app/workspaces/[agent-id]/INBOX/task.json`.
>
> 4. **Discord Etiquette:** Only respond if @mentioned or if you are the designated owner of a Discord Thread. Use threads to isolate complex engineering tasks.
>
---
## 5. TRANSITION STEPS
1. **Kill the Bridge:** `pm2 stop discord-bridge` or `systemctl stop discord-bridge`.
2. **Setup Docker:** Install Docker on the T420 if not present.
3. **Map Volumes:** Ensure `~/atomizer/workspaces` contains your existing agent data.
4. **Deploy:** Run `docker-compose up -d`.
5. **Test:** Mention `@Atomizer Tech Lead` in Discord. You should see it typing and streaming immediately.
---
## 6. FINAL VERDICT
This move converts the system from a "simulated" multi-bot setup to a **Native Agentic Ecosystem**. It is more robust, faster, and allows the LLMs to actually use the Discord features (like threads) to manage project complexity.
```
---
### How to use this:
1. Copy the code block above.
2. Save it as `Atomizer-Architecture-Pivot.md` on your T420.
3. You now have a single "Source of Truth" to guide your build.
**Would you like me to write the `PROJECT_STATUS.md` template so your bots know how to read/write to the shared state?**
```