agent-councilComplete toolkit for creating autonomous AI agents and managing Discord channels for OpenClaw. Use when setting up multi-agent systems, creating new agents, or managing Discord channel organization.
Install via ClawdBot CLI:
clawdbot install itsahedge/agent-councilComplete toolkit for creating and managing autonomous AI agents with Discord integration for OpenClaw.
Agent Creation:
Discord Channel Management:
# 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}
}
}
}'
scripts/create-agent.sh \
--name "Watson" \
--id "watson" \
--emoji "š¬" \
--specialty "Research and analysis specialist" \
--model "anthropic/claude-opus-4-5" \
--workspace "$HOME/agents/watson" \
--discord-channel "1234567890"
Ask the user:
scripts/create-agent.sh \
--name "Agent Name" \
--id "agent-id" \
--emoji "š¤" \
--specialty "What this agent does" \
--model "provider/model-name" \
--workspace "/path/to/workspace" \
--discord-channel "1234567890" # Optional
The script automatically:
After creation:
Self-contained structure:
agents/
āāā watson/
ā āāā SOUL.md # Personality and responsibilities
ā āāā HEARTBEAT.md # Cron execution logic
ā āāā memory/ # Agent-specific memory
ā ā āāā 2026-02-01.md # Daily memory logs
ā ā āāā 2026-02-02.md
ā āāā .openclaw/
ā āāā skills/ # Agent-specific skills (optional)
Memory system:
/memory/YYYY-MM-DD.md Cron jobs:
If your agent needs scheduled tasks:
--session Research agent:
scripts/create-agent.sh \
--name "Watson" \
--id "watson" \
--emoji "š¬" \
--specialty "Deep research and competitive analysis" \
--model "anthropic/claude-opus-4-5" \
--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 "google/gemini-3-flash-preview" \
--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 "anthropic/claude-opus-4-5" \
--workspace "$HOME/agents/nurse-joy" \
--discord-channel "5555555555"
python3 scripts/setup-channel.py \
--name research \
--context "Deep research and competitive analysis"
python3 scripts/setup-channel.py \
--name <channel-name> \
--context "<channel-purpose>" \
[--category-id <discord-category-id>]
openclaw gateway config.patch --raw '{"channels": {...}}'
With category:
python3 scripts/setup-channel.py \
--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"
python3 scripts/rename-channel.py \
--id 1234567890 \
--old-name old-name \
--new-name new-name
python3 scripts/rename-channel.py \
--id <channel-id> \
--old-name <old-name> \
--new-name <new-name> \
[--workspace <workspace-dir>]
--workspace used)python3 scripts/rename-channel.py \
--id 1234567890 \
--old-name old-name \
--new-name new-name \
--workspace "$HOME/my-workspace"
This will:
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 "anthropic/claude-opus-4-5" \
--workspace "$HOME/agents/watson" \
--discord-channel "1234567890"
# Done! Agent is created and bound to the channel
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"
Enable Developer Mode:
Copy IDs:
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 bindOutput:
Arguments:
--name (required) - Channel name--context (required) - Channel purpose/context--id (optional) - Existing channel ID--category-id (optional) - Discord category IDOutput:
Arguments:
--id (required) - Channel ID--old-name (required) - Current channel name--new-name (required) - New channel name--workspace (optional) - Workspace directory to searchOutput:
This skill integrates with OpenClaw's gateway configuration:
Agents:
{
"agents": {
"list": [
{
"id": "watson",
"name": "Watson",
"workspace": "/path/to/agents/watson",
"model": {
"primary": "anthropic/claude-opus-4-5"
},
"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"
}
}
}
}
}
}
}
Your main agent coordinates with specialized agents using OpenClaw's built-in session management tools.
See all active agents and their recent activity:
sessions_list({
kinds: ["agent"],
limit: 10,
messageLimit: 3 // Show last 3 messages per agent
})
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
})
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: "anthropic/claude-opus-4-5", // Optional: override model
runTimeoutSeconds: 3600, // 1 hour max
cleanup: "delete" // Delete session after completion
})
The sub-agent will:
cleanup: "delete")Review what an agent has been working on:
sessions_history({
sessionKey: "watson-session-key",
limit: 50
})
1. Direct delegation (Discord-bound agents):
2. Programmatic delegation (main agent ā sub-agent):
// Main agent delegates task
sessions_send({
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"
})
When to use Discord bindings:
When to use sessions_send:
When to use sessions_spawn:
// 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]"
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
Agent Creation Issues:
"Agent not appearing in Discord"
openclaw gateway restart"Model errors"
provider/model-nameChannel Management Issues:
"Failed to create channel"
"Category not found"
"Channel already exists"
--id to configure existing channelFor larger multi-agent systems:
Coordination Patterns:
sessions_sendTask Management:
Documentation:
Bot Permissions:
Manage Channels - To create/rename channelsView Channels - To read channel listSend Messages - To post in channelsSystem:
Generated Feb 28, 2026
A financial services firm deploys multiple AI agents like Watson for deep market research and competitive analysis. Each agent monitors specific sectors, generates daily reports in dedicated Discord channels, and collaborates by sharing insights through a shared workspace, enabling real-time decision-making.
A marketing agency uses agents such as Picasso for image generation and Watson for copywriting to automate content creation. Agents are bound to Discord channels for client-specific projects, allowing seamless coordination, feedback loops, and scheduled content delivery via cron jobs.
A healthcare startup implements agents like Nurse Joy to track user health data, provide daily wellness tips, and alert caregivers via Discord. Agents use memory logs for personalized recommendations and integrate with wearable devices through cron-based data updates.
An e-commerce company sets up agents to handle customer inquiries, order tracking, and feedback collection. Each agent specializes in a product category, manages Discord channels for support tickets, and uses memory systems to maintain context across interactions.
An online education provider deploys agents for personalized tutoring in subjects like math or coding. Agents create Discord channels for student groups, schedule lessons via HEARTBEAT.md cron jobs, and track progress through daily memory logs in individual workspaces.
Offer a cloud-based platform where businesses subscribe to deploy and manage AI agents via OpenClaw. Revenue comes from tiered plans based on the number of agents, Discord channel integrations, and advanced features like custom memory architectures.
Provide professional services to design, implement, and optimize agent systems for specific client needs. This includes creating tailored SOUL.md and HEARTBEAT.md files, integrating with existing Discord servers, and offering ongoing maintenance and support.
Sell ready-to-use agent templates (e.g., for research, content creation, or health tracking) on a marketplace. Users can purchase and customize these templates, with additional revenue from premium features like advanced cron job setups or exclusive Discord channel configurations.
š¬ Integration Tip
Start by creating a single agent with a basic Discord channel to test the workflow, then scale up by adding more agents and cron jobs as needed, ensuring each agent's workspace is properly backed up.
Captures learnings, errors, and corrections to enable continuous improvement. Use when: (1) A command or operation fails unexpectedly, (2) User corrects Clau...
Helps users discover and install agent skills when they ask questions like "how do I do X", "find a skill for X", "is there a skill that can...", or express interest in extending capabilities. This skill should be used when the user is looking for functionality that might exist as an installable skill.
Search and analyze your own session logs (older/parent conversations) using jq.
Typed knowledge graph for structured agent memory and composable skills. Use when creating/querying entities (Person, Project, Task, Event, Document), linking related objects, enforcing constraints, planning multi-step actions as graph transformations, or when skills need to share state. Trigger on "remember", "what do I know about", "link X to Y", "show dependencies", entity CRUD, or cross-skill data access.
Ultimate AI agent memory system for Cursor, Claude, ChatGPT & Copilot. WAL protocol + vector search + git-notes + cloud backup. Never lose context again. Vibe-coding ready.
Headless browser automation CLI optimized for AI agents with accessibility tree snapshots and ref-based element selection