Files
Atomizer/hq/config/openclaw-discord.json
Antoine 3289a76e19 feat: add Atomizer HQ multi-agent cluster infrastructure
- 8-agent OpenClaw cluster (Manager, Tech-Lead, Secretary, Auditor,
  Optimizer, Study-Builder, NX-Expert, Webster)
- Orchestration engine: orchestrate.py (sync delegation + handoffs)
- Workflow engine: YAML-defined multi-step pipelines
- Agent workspaces: SOUL.md, AGENTS.md, MEMORY.md per agent
- Shared skills: delegate, orchestrate, atomizer-protocols
- Capability registry (AGENTS_REGISTRY.json)
- Cluster management: cluster.sh, systemd template
- All secrets replaced with env var references
2026-02-15 21:18:18 +00:00

202 lines
8.7 KiB
JSON

{
// Atomizer Engineering Co. — OpenClaw Discord Config
// 8 agents, each with own Discord bot account
// Guild: 1471858733452890132 (Atomizer-HQ)
// Created: 2026-02-13
gateway: {
port: 18789
},
agents: {
defaults: {
userTimezone: "America/Toronto",
skipBootstrap: true,
bootstrapMaxChars: 25000
},
list: [
{
id: "manager",
default: true,
name: "Manager",
workspace: "/home/papa/atomizer/workspaces/manager",
identity: { name: "Atomizer Manager", emoji: "🎯" },
model: "anthropic/claude-opus-4-6",
groupChat: { mentionPatterns: ["@manager", "@Manager", "🎯"] },
subagents: { allowAgents: ["*"] }
},
{
id: "tech-lead",
name: "Technical Lead",
workspace: "/home/papa/atomizer/workspaces/technical-lead",
identity: { name: "Atomizer Tech Lead", emoji: "🔧" },
model: "anthropic/claude-opus-4-6",
groupChat: { mentionPatterns: ["@tech-lead", "@technical-lead", "🔧"] },
subagents: { allowAgents: ["*"] }
},
{
id: "secretary",
name: "Secretary",
workspace: "/home/papa/atomizer/workspaces/secretary",
identity: { name: "Atomizer Secretary", emoji: "📋" },
model: "anthropic/claude-haiku-4",
groupChat: { mentionPatterns: ["@secretary", "@Secretary", "📋"] },
subagents: { allowAgents: ["*"] }
},
{
id: "auditor",
name: "Auditor",
workspace: "/home/papa/atomizer/workspaces/auditor",
identity: { name: "Atomizer Auditor", emoji: "🔍" },
model: "anthropic/claude-opus-4-6",
groupChat: { mentionPatterns: ["@auditor", "@Auditor", "🔍"] },
subagents: { allowAgents: ["*"] }
},
{
id: "optimizer",
name: "Optimizer",
workspace: "/home/papa/atomizer/workspaces/optimizer",
identity: { name: "Atomizer Optimizer", emoji: "⚡" },
model: "anthropic/claude-sonnet-4-5",
groupChat: { mentionPatterns: ["@optimizer", "@Optimizer", "⚡"] },
subagents: { allowAgents: ["*"] }
},
{
id: "study-builder",
name: "Study Builder",
workspace: "/home/papa/atomizer/workspaces/study-builder",
identity: { name: "Atomizer Study Builder", emoji: "🏗️" },
model: "anthropic/claude-sonnet-4-5",
groupChat: { mentionPatterns: ["@study-builder", "@Study Builder", "🏗️"] },
subagents: { allowAgents: ["*"] }
},
{
id: "nx-expert",
name: "NX Expert",
workspace: "/home/papa/atomizer/workspaces/nx-expert",
identity: { name: "Atomizer NX Expert", emoji: "🖥️" },
model: "anthropic/claude-sonnet-4-5",
groupChat: { mentionPatterns: ["@nx-expert", "@NX Expert", "🖥️"] },
subagents: { allowAgents: ["*"] }
},
{
id: "webster",
name: "Webster",
workspace: "/home/papa/atomizer/workspaces/webster",
identity: { name: "Atomizer Webster", emoji: "🔬" },
model: "google/gemini-2.5-pro",
groupChat: { mentionPatterns: ["@webster", "@Webster", "🔬"] },
subagents: { allowAgents: ["*"] }
}
]
},
// Routing: each channel binds to an agent + accountId (so the right bot responds)
bindings: [
// COMMAND → Manager (via manager account)
{ agentId: "manager", match: { channel: "discord", accountId: "manager", peer: { kind: "channel", id: "1471880217915162694" } } }, // #ceo-office
{ agentId: "manager", match: { channel: "discord", accountId: "manager", peer: { kind: "channel", id: "1471880220398325854" } } }, // #announcements
{ agentId: "manager", match: { channel: "discord", accountId: "manager", peer: { kind: "channel", id: "1471880222977818785" } } }, // #daily-standup
// ENGINEERING → Tech Lead / NX Expert
{ agentId: "tech-lead", match: { channel: "discord", accountId: "tech-lead", peer: { kind: "channel", id: "1471880225175638242" } } }, // #technical
{ agentId: "tech-lead", match: { channel: "discord", accountId: "tech-lead", peer: { kind: "channel", id: "1471880228203790542" } } }, // #code-review
{ agentId: "tech-lead", match: { channel: "discord", accountId: "tech-lead", peer: { kind: "channel", id: "1471880232263745628" } } }, // #fea-analysis
{ agentId: "nx-expert", match: { channel: "discord", accountId: "nx-expert", peer: { kind: "channel", id: "1471880236302991422" } } }, // #nx-cad
// OPERATIONS → Secretary
{ agentId: "secretary", match: { channel: "discord", accountId: "secretary", peer: { kind: "channel", id: "1471880238953664535" } } }, // #task-board
{ agentId: "secretary", match: { channel: "discord", accountId: "secretary", peer: { kind: "channel", id: "1471880242011570309" } } }, // #meeting-notes
{ agentId: "secretary", match: { channel: "discord", accountId: "secretary", peer: { kind: "channel", id: "1471880244750454824" } } }, // #reports
// RESEARCH → Webster
{ agentId: "webster", match: { channel: "discord", accountId: "webster", peer: { kind: "channel", id: "1471880247581343764" } } }, // #literature
{ agentId: "webster", match: { channel: "discord", accountId: "webster", peer: { kind: "channel", id: "1471880250668617971" } } }, // #materials-data
// PROJECTS → Manager
{ agentId: "manager", match: { channel: "discord", accountId: "manager", peer: { kind: "channel", id: "1471880253445247036" } } }, // #active-projects
// KNOWLEDGE → Secretary
{ agentId: "secretary", match: { channel: "discord", accountId: "secretary", peer: { kind: "channel", id: "1471880256129597573" } } }, // #knowledge-base
{ agentId: "secretary", match: { channel: "discord", accountId: "secretary", peer: { kind: "channel", id: "1471880259333914787" } } }, // #lessons-learned
// SYSTEM → Manager / Secretary
{ agentId: "manager", match: { channel: "discord", accountId: "manager", peer: { kind: "channel", id: "1471880262295093403" } } }, // #agent-logs
{ agentId: "manager", match: { channel: "discord", accountId: "manager", peer: { kind: "channel", id: "1471880265688289320" } } }, // #inter-agent
{ agentId: "secretary", match: { channel: "discord", accountId: "secretary", peer: { kind: "channel", id: "1471880268469108748" } } }, // #it-ops
// Account-level defaults (any message via this bot → this agent)
{ agentId: "manager", match: { channel: "discord", accountId: "manager" } },
{ agentId: "tech-lead", match: { channel: "discord", accountId: "tech-lead" } },
{ agentId: "secretary", match: { channel: "discord", accountId: "secretary" } },
{ agentId: "auditor", match: { channel: "discord", accountId: "auditor" } },
{ agentId: "optimizer", match: { channel: "discord", accountId: "optimizer" } },
{ agentId: "study-builder", match: { channel: "discord", accountId: "study-builder" } },
{ agentId: "nx-expert", match: { channel: "discord", accountId: "nx-expert" } },
{ agentId: "webster", match: { channel: "discord", accountId: "webster" } },
// Catch-all fallback → Manager
{ agentId: "manager", match: { channel: "discord" } }
],
channels: {
discord: {
enabled: true,
accounts: {
manager: { token: "${DISCORD_TOKEN_MANAGER}" },
"tech-lead": { token: "${DISCORD_TOKEN_TECH_LEAD}" },
secretary: { token: "${DISCORD_TOKEN_SECRETARY}" },
auditor: { token: "${DISCORD_TOKEN_AUDITOR}" },
optimizer: { token: "${DISCORD_TOKEN_OPTIMIZER}" },
"study-builder": { token: "${DISCORD_TOKEN_STUDY_BUILDER}" },
"nx-expert": { token: "${DISCORD_TOKEN_NX_EXPERT}" },
webster: { token: "${DISCORD_TOKEN_WEBSTER}" }
},
groupPolicy: "allowlist",
guilds: {
"1471858733452890132": {
requireMention: false,
users: ["719982779793932419"]
}
},
dm: {
enabled: true,
policy: "allowlist",
allowFrom: ["719982779793932419"]
},
allowBots: true,
reactionNotifications: "all",
historyLimit: 50,
actions: {
reactions: true,
messages: true,
pins: true,
memberInfo: true,
emojiList: true,
threads: true
}
}
},
tools: {
agentToAgent: {
enabled: true,
allow: ["manager", "tech-lead", "secretary", "auditor", "optimizer", "study-builder", "nx-expert", "webster"]
}
},
messages: {
responsePrefix: "",
ackReaction: "",
queue: { mode: "collect", debounceMs: 2000, cap: 20 },
inbound: { debounceMs: 3000 }
},
session: { compaction: { enabled: true } },
logging: {
level: "info",
file: "/tmp/openclaw/atomizer.log"
}
}