# agent-council
Agent Council Complete toolkit for creating and managing autonomous AI agents with Discord integration for OpenClaw. What This Skill Does Agent Creation: Creates autonomous AI agents with self-contained workspaces Generates SOUL.md (personality & responsibilities) Generates HEARTBEAT.md (cron execution logic) Sets up memory system (hybrid architecture) Configures gateway automatically Binds agents to Discord channels (optional) Sets up daily memory cron jobs (optional) Discord Channel Management: Creates Discord channels via API Configures OpenClaw gateway allowlists Sets channel-specific system prompts Renames channels and updates references Optional workspace file search Installation
# Install from ClawHub
clawhub install agent-council
# Or manual install
cp -r . ~/.openclaw/skills/agent-council/
openclaw gateway config.patch --raw '{
"skills": {
"entries": {
"agent-council": {"enabled": true}
}
}
}'
Part 1: Agent Creation
Quick Start
scripts/create-agent.sh
--name "Watson"
--id "watson"
--emoji "๐ฌ"
--specialty "Research and analysis specialist"
--model "skillboss/pilot"
--workspace "$HOME/agents/watson"
--discord-channel "1234567890"
Workflow
Memory system:
Agent-specific memory:
--name "Watson"
--id "watson"
--emoji "๐ฌ"
--specialty "Deep research and competitive analysis"
--model "skillboss/pilot"
--workspace "$HOME/agents/watson"
--discord-channel "1234567890"
Image generation agent:
scripts/create-agent.sh
--name "Picasso"
--id "picasso"
--emoji "๐จ"
--specialty "Image generation and editing specialist"
--model "skillboss/pilot"
--workspace "$HOME/agents/picasso"
--discord-channel "9876543210"
Health tracking agent:
scripts/create-agent.sh
--name "Nurse Joy"
--id "nurse-joy"
--emoji "๐"
--specialty "Health tracking and wellness monitoring"
--model "skillboss/pilot"
--workspace "$HOME/agents/nurse-joy"
--discord-channel "5555555555"
Part 2: Discord Channel Management
Channel Creation
Quick Start
python3 scripts/setup-channel.py
--name research
--context "Deep research and competitive analysis"
Workflow
Run setup script:
python3 scripts/setup-channel.py
--name
--context "
[--category-id
--name research
--context "Deep research and competitive analysis"
--category-id "1234567890"
Use existing channel:
python3 scripts/setup-channel.py
--name personal-finance
--id 1466184336901537897
--context "Personal finance management"
Channel Renaming
Quick Start
python3 scripts/rename-channel.py
--id 1234567890
--old-name old-name
--new-name new-name
Workflow
Run rename script:
python3 scripts/rename-channel.py
--id
--old-name
--new-name
[--workspace
--id 1234567890
--old-name old-name
--new-name new-name
--workspace "$HOME/my-workspace"
This will:
Rename Discord channel via API
Update gateway config systemPrompt
Search and update workspace files
Report files changed for git commit
Complete Multi-Agent Setup
Full workflow from scratch:
# 1. Create Discord channel
python3 scripts/setup-channel.py
--name research
--context "Deep research and competitive analysis"
--category-id "1234567890"
# (Note the channel ID from output)
# 2. Apply gateway config for channel
openclaw gateway config.patch --raw '{"channels": {...}}'
# 3. Create agent bound to that channel
scripts/create-agent.sh
--name "Watson"
--id "watson"
--emoji "๐ฌ"
--specialty "Deep research and competitive analysis"
--model "skillboss/pilot"
--workspace "$HOME/agents/watson"
--discord-channel "1234567890"
# Done! Agent is created and bound to the channel
Configuration
Discord Category ID
Option 1: Command line
python3 scripts/setup-channel.py
--name channel-name
--context "Purpose"
--category-id "1234567890"
Option 2: Environment variable
export DISCORD_CATEGORY_ID="1234567890"
python3 scripts/setup-channel.py --name channel-name --context "Purpose" Finding Discord IDs Enable Developer Mode: Settings โ Advanced โ Developer Mode Copy IDs: Right-click channel โ Copy ID Right-click category โ Copy ID Scripts Reference create-agent.sh
Arguments:
--name (required) - Agent name --id (required) - Agent ID (lowercase, hyphenated) --emoji (required) - Agent emoji --specialty (required) - What the agent does --model (required) - LLM to use (provider/model-name) --workspace (required) - Where to create agent files --discord-channel (optional) - Discord channel ID to bind
Output:
Creates agent workspace Generates SOUL.md and HEARTBEAT.md Updates gateway config Optionally creates daily memory cron setup-channel.py
Arguments:
--name (required) - Channel name --context (required) - Channel purpose/context --id (optional) - Existing channel ID --category-id (optional) - Discord category ID
Output:
Creates Discord channel (if doesn't exist) Generates gateway config.patch command rename-channel.py
Arguments:
--id (required) - Channel ID --old-name (required) - Current channel name --new-name (required) - New channel name --workspace (optional) - Workspace directory to search
Output:
Renames Discord channel Updates gateway systemPrompt (if needed) Lists updated files (if workspace search enabled) Gateway Integration This skill integrates with OpenClaw's gateway configuration:
Agents:
{ "agents": { "list": [ { "id": "watson", "name": "Watson", "workspace": "/path/to/agents/watson", "model": { "primary": "skillboss/pilot" }, "identity": { "name": "Watson", "emoji": "๐ฌ" } } ] } }
Bindings:
{ "bindings": [ { "agentId": "watson", "match": { "channel": "discord", "peer": { "kind": "channel", "id": "1234567890" } } } ] }
Channels:
{ "channels": { "discord": { "guilds": { "YOUR_GUILD_ID": { "channels": { "1234567890": { "allow": true, "requireMention": false, "systemPrompt": "Deep research and competitive analysis" } } } } } } } Agent Coordination Your main agent coordinates with specialized agents using OpenClaw's built-in session management tools. List Active Agents See all active agents and their recent activity: sessions_list({
kinds: ["agent"],
limit: 10,
messageLimit: 3 // Show last 3 messages per agent
}) Send Messages to Agents Direct communication: sessions_send({
label: "watson", // Agent ID
message: "Research the competitive landscape for X"
}) Wait for response: sessions_send({
label: "watson",
message: "What did you find about X?",
timeoutSeconds: 300 // Wait up to 5 minutes
}) Spawn Sub-Agent Tasks For complex work, spawn a sub-agent in an isolated session: sessions_spawn({
agentId: "watson", // Optional: use specific agent
task: "Research competitive landscape for X and write a report",
model: "skillboss/pilot", // Optional: override model
runTimeoutSeconds: 3600, // 1 hour max
cleanup: "delete" // Delete session after completion
}) The sub-agent will: Execute the task in isolation Announce completion back to your session Self-delete (if cleanup: "delete") Check Agent History Review what an agent has been working on: sessions_history({
sessionKey: "watson-session-key",
limit: 50
}) Coordination Patterns
label: "watson",
message: "Research X and update memory/research-X.md"
}) // Watson works independently, updates files // Main agent checks later or Watson reports back 3. Spawn for complex tasks: // For longer-running, isolated work sessions_spawn({
agentId: "watson",
task: "Deep dive: analyze competitors A, B, C. Write report to reports/competitors.md",
runTimeoutSeconds: 7200,
cleanup: "keep" // Keep session for review
}) 4. Agent-to-agent communication: Agents can send messages to each other: // In Watson's context sessions_send({
label: "picasso",
message: "Create an infographic from data in reports/research.md"
}) Best Practices When to use Discord bindings: โ Domain-specific agents (research, health, images) โ User wants direct access to agent โ Agent should respond to channel activity When to use sessions_send: โ Programmatic coordination โ Main agent delegates to specialists โ Need response in same session When to use sessions_spawn: โ Long-running tasks (>5 minutes) โ Complex multi-step work โ Want isolation from main session โ Background processing
Example: Research Workflow
// Main agent receives request: "Research competitor X" // 1. Check if Watson is active const agents = sessions_list({ kinds: ["agent"] }) // 2. Delegate to Watson sessions_send({
label: "watson",
message: "Research competitor X: products, pricing, market position. Write findings to memory/research-X.md"
}) // 3. Watson works independently: // - Searches web // - Analyzes data // - Updates memory file // - Reports back when done // 4. Main agent retrieves results const results = Read("agents/watson/memory/research-X.md") // 5. Share with user "Research complete! Watson found: [summary]" Communication Flow Main Agent (You) โ Specialized Agents: User Request โ Main Agent (Claire) โ sessions_send("watson", "Research X") โ Watson Agent โ
User: "Research X" (main channel)
โ Main Agent delegates to Watson โ Watson researches and reports back โ Main Agent: "Done! Watson found..." โ
User: "Show me more details"
โ
Main Agent: "@watson post your full findings in #research"
โ
Watson posts detailed report in #research channel
Troubleshooting
Agent Creation Issues:
"Agent not appearing in Discord"
Verify channel ID is correct
Check gateway config bindings section
Restart gateway: openclaw gateway restart
"Model errors"
Verify model name format: provider/model-name
Check model is available in gateway config
Channel Management Issues:
"Failed to create channel"
Check bot has "Manage Channels" permission
Verify bot token in OpenClaw config
Ensure category ID is correct (if specified)
"Category not found"
Verify category ID is correct
Check bot has access to category
Try without category ID (creates uncategorized)
"Channel already exists"
Use --id
Advanced: Multi-Agent Coordination
For larger multi-agent systems: Coordination Patterns: Main agent delegates tasks to specialists Agents report progress and request help Shared knowledge base for common information Cross-agent communication via sessions_send Task Management: Integrate with task tracking systems Route work based on agent specialty Track assignments and completions
Documentation:
Maintain agent roster in main workspace Document delegation patterns Keep runbooks for common workflows Best Practices Organize channels in categories - Group related agent channels Use descriptive channel names - Clear purpose from the name Set specific system prompts - Give each channel clear context Document agent responsibilities - Keep SOUL.md updated Set up memory cron jobs - For agents with ongoing work Test agents individually - Before integrating into team Update gateway config safely - Always use config.patch, never manual edits Requirements Bot Permissions: Manage Channels - To create/rename channels View Channels - To read channel list Send Messages - To post in channels
System:
OpenClaw installed and configured
Node.js/npm via nvm
Python 3.6+ (standard library only) Discord bot token (for channel management) See Also OpenClaw documentation: https://docs.openclaw.ai Multi-agent patterns: https://docs.openclaw.ai/agents Discord bot setup: https://docs.openclaw.ai/channels/discord
Join 80,000+ one-person companies automating with AI