agent-council
by @abeltennyson
Complete toolkit for creating autonomous AI agents and managing Discord channels for OpenClaw. Use when setting up multi-agent systems, creating new agents,...
Research agent:
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"
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"
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:
Copy IDs:
When to use Discord bindings:
When to use sessions_send:
When to use sessions_spawn:
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
β
Uses web_search
Uses web_fetch
Updates memory files
β
Responds to main session
β
Main Agent synthesizes and replies
Discord-Bound Agents:
User posts in #research channel
β
Watson Agent (bound to channel)
β
Sees message directly
Responds in channel
No main agent involvement
Hybrid Approach:
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
clawhub install abel-agent-council