SimpleClaw supports multiple independent AI agents , each with its own workspace, configuration, and conversation context. This allows you to run specialized agents for different tasks or audiences.
Agent Basics
Each agent has:
Unique ID - Lowercase alphanumeric identifier (e.g., main, support, research)
Workspace Directory - Isolated file system for context files (SOUL.md, TOOLS.md, etc.)
Model Configuration - Primary model and fallback models
Session Store - Separate conversation history per agent
Skill Filters - Enable/disable specific capabilities
# ~/.simpleclaw/config.yaml
agents :
list :
- id : main
default : true
model :
primary : claude-3-7-sonnet-20250219
fallbacks :
- gpt-4o
workspace : ~/.simpleclaw/workspace
- id : support
model : gpt-4o-mini
workspace : ~/.simpleclaw/workspace-support
skills :
exclude :
- web-search
- bash
Workspace Structure
Each agent has a dedicated workspace directory containing:
Directory Layout
Workspace Resolution
~/.simpleclaw/workspace/ # Main agent workspace
├── SOUL.md # Agent personality and behavior
├── AGENTS.md # Instructions for this agent
├── TOOLS.md # Tool usage guidance
├── USER.md # User context and preferences
├── MEMORY.md # Long-term memory notes
├── IDENTITY.md # Identity and authentication context
├── HEARTBEAT.md # Periodic check-in instructions
└── .simpleclaw/
└── workspace-state.json # Internal state tracking
Agent Configuration
Model Settings
Agents can use different models with automatic fallback:
agents :
list :
- id : researcher
model :
primary : claude-3-7-sonnet-20250219
fallbacks :
- o1
- gpt-4o
Simplified model configuration:
agents :
list :
- id : assistant
model : gpt-4o-mini # Single string for primary only
Model fallback automatically triggers on rate limits, authentication errors, or model unavailability.
Control which capabilities are available to each agent:
agents :
list :
- id : restricted
skills :
include :
- memory # Only allow memory operations
- message # and messaging
exclude :
- bash # No shell access
- web-search # No web searching
Available skills:
bash - Shell command execution
web-search - Web search via providers
web-fetch - Fetch and parse web pages
memory - Vector memory storage and retrieval
message - Cross-channel messaging
sessions - Multi-session management
image - Image generation
tts - Text-to-speech
Sandbox Configuration
Isolate agent execution environments:
agents :
list :
- id : sandboxed
sandbox :
enabled : true
provider : docker
image : simpleclaw/sandbox:latest
resources :
memory : 2g
cpus : 2
Default Agent
The default agent handles messages when no specific agent is bound:
agents :
list :
- id : main
default : true # This agent is the default
- id : specialist
# Not default
If no agent has default: true, the first agent in the list becomes the default.
Only one agent should be marked as default. If multiple agents have default: true, SimpleClaw uses the first one.
Agent Roles
Agents can be designated as orchestrators or workers:
agents :
list :
- id : orchestrator
role : orchestrator
model : claude-3-7-sonnet-20250219
subagents :
enabled : true
- id : worker
role : worker
model : gpt-4o-mini
Orchestrator - Can spawn and coordinate subagents for complex tasks
Worker - Executes specific tasks, typically spawned by orchestrators
Subagents
Orchestrator agents can spawn specialized subagents:
agents :
list :
- id : main
subagents :
enabled : true
maxDepth : 3 # Maximum nesting level
maxConcurrent : 5 # Max parallel subagents
Subagents inherit configuration from parent but run in isolated sessions:
// Subagent session keys include depth
// agent:main:subagent:researcher:1
// agent:main:subagent:researcher:subagent:analyzer:2
Agent Identity
Customize how the agent identifies itself:
agents :
list :
- id : support
identity :
name : "Support Assistant"
role : "Customer Support Specialist"
behavior : "Professional, helpful, and concise"
This information is injected into the agent’s system prompt via IDENTITY.md.
Human Delay Simulation
Make agent responses feel more natural with typing delays:
agents :
list :
- id : main
humanDelay :
enabled : true
minWpm : 60 # Minimum typing speed
maxWpm : 120 # Maximum typing speed
variance : 0.2 # Randomness factor
Group Chat Behavior
Configure how agents behave in group conversations:
agents :
list :
- id : main
groupChat :
autoReply : selective # Reply when mentioned or relevant
minConfidence : 0.7 # Confidence threshold for unsolicited replies
maxBurst : 3 # Max consecutive messages
Options for autoReply:
always - Reply to every group message
selective - Reply when mentioned or high relevance
mention-only - Only reply when directly mentioned
never - Never auto-reply in groups
Memory Configuration
Customize memory search behavior per agent:
agents :
list :
- id : main
memorySearch :
enabled : true
provider : openai
minRelevance : 0.6
maxResults : 10
Heartbeat Configuration
Agents can perform periodic check-ins:
agents :
list :
- id : main
heartbeat :
enabled : true
interval : 1h
channels :
- discord
- telegram
ackMaxChars : 280 # Max length for heartbeat acks
Managing Agents
Via Config File
Edit ~/.simpleclaw/config.yaml and reload:
# Edit config
vim ~/.simpleclaw/config.yaml
# Reload gateway
simpleclaw gateway reload
Via CLI
# List agents
simpleclaw agents list
# Create agent
simpleclaw agents create research --model claude-3-7-sonnet-20250219
# Update agent
simpleclaw agents update research --model gpt-4o
# Delete agent
simpleclaw agents delete research
Via Gateway API
// Create agent via WebSocket
const result = await gateway . call ( "agents.create" , {
id: "analyst" ,
model: {
primary: "claude-3-7-sonnet-20250219" ,
fallbacks: [ "gpt-4o" ]
},
workspace: "~/.simpleclaw/workspace-analyst"
});
Agent Scope Resolution
The gateway resolves which agent handles a message using:
// src/agents/agent-scope.ts
export function resolveDefaultAgentId ( cfg : SimpleClawConfig ) : string {
const agents = listAgentEntries ( cfg );
if ( agents . length === 0 ) {
return DEFAULT_AGENT_ID ; // "main"
}
const defaults = agents . filter (( agent ) => agent ?. default );
const chosen = ( defaults [ 0 ] ?? agents [ 0 ])?. id ?. trim ();
return normalizeAgentId ( chosen || DEFAULT_AGENT_ID );
}
Changing an agent’s id creates a new agent. Session history is tied to agent IDs, so renaming breaks continuity.
Best Practices
Dedicated Workspaces Give each agent its own workspace directory to avoid context pollution
Appropriate Models Use powerful models (Claude, GPT-4) for complex agents, smaller models for simple tasks
Skill Filtering Restrict capabilities based on agent purpose (e.g., disable bash for customer-facing agents)
Descriptive IDs Use clear agent IDs like support, research, creative instead of generic names
Routing - How messages are routed to agents
Sessions - Agent session management
Models - Model provider configuration
Gateway - Gateway architecture