Agent Factory
Standardized bootstrap for 33GOD ecosystem agents. Every agent ships ready to:
- Consume and produce Bloodbank events
- Read/write GOD Docs
- Track work on Plane boards
- Communicate with Cack (boss) and peer agents
- Use long-term vector memory
- Authenticate against all configured providers
Quick Start
When the user requests a new agent, gather these parameters:
| Parameter | Required | Description |
|---|---|---|
id | ✅ | Agent ID (lowercase, no spaces, e.g. scout) |
name | ✅ | Display name (e.g. Scout) |
role | ✅ | One of: manager, exec, ic, contractor (see Yi Node Flavors) |
purpose | ✅ | One-line mission statement |
personality | ❌ | Vibe/tone (defaults to "competent, concise, team-player") |
channel | ❌ | telegram (needs bot token) or none (sub-agent only) |
telegram_bot_token | ❌ | If channel=telegram, the BotFather token |
telegram_account_id | ❌ | Account ID for multi-bot setup (defaults to agent id) |
model | ❌ | Model override (defaults to ecosystem default) |
skills | ❌ | Additional skills beyond the base set |
Bootstrap Procedure
1. Create Workspace
bash /home/delorenj/.openclaw/skills/agent-factory/scripts/bootstrap.sh \
--id <id> \
--name <name> \
--role <role> \
--purpose "<purpose>" \
[--personality "<personality>"] \
[--model "<model>"]
This creates ~/.openclaw/workspace-<id>/ with all template files populated.
2. Update Gateway Config
After running the bootstrap script, update ~/.openclaw/openclaw.json:
Add agent to agents.list:
{
"id": "<id>",
"name": "<name>",
"workspace": "/home/delorenj/.openclaw/workspace-<id>",
"identity": { "name": "<name>" }
}
If Telegram channel, add to channels.telegram.accounts:
"<account_id>": {
"name": "<name>",
"dmPolicy": "pairing",
"botToken": "<token>",
"groupPolicy": "allowlist",
"streamMode": "partial"
}
Add binding to bindings array:
{
"agentId": "<id>",
"match": {
"channel": "telegram",
"accountId": "<account_id>"
}
}
3. Restart Gateway
Use the gateway tool with action: "restart" to pick up the new agent.
4. Send Onboarding Briefing
After gateway restart, use sessions_send to the new agent's session (agent:<id>:main) with an onboarding message that includes:
- Their specific mission and current priorities
- Any immediate tasks from the Plane board
- Context about active projects they'll touch
Yi Node Flavors (Role Types)
| Role | Memory | Can Delegate | Description |
|---|---|---|---|
manager | ✅ Persistent | ✅ Yes | Delegators only — coordinate, don't execute |
exec | ✅ Persistent | ✅ Yes | Delegator + worker hybrid |
ic | ✅ Persistent | ❌ No | Individual contributor with full context |
contractor | ❌ Ephemeral | ❌ No | Stateless worker, task-scoped |
Invariant: Delegator ⇒ persistent memory required.
Base Skills (auto-installed via symlink)
Every agent gets these skills symlinked from Cack's install:
33god-creating-and-working-with-projects33god-service-development33god-workflow-generatorgod-docsmanaging-tickets-and-tasks-in-planegithubecosystem-patternsinstalling-apps-tools-and-services
Contractors get a minimal set: github, installing-apps-tools-and-services only.
Template Files
The bootstrap script generates these from templates in references/:
AGENTS.md— Role-aware agent instructionsSOUL.md— Personality + ecosystem identityUSER.md— Jarad's info (static)IDENTITY.md— Agent identity cardTOOLS.md— Empty, agent fills as neededMEMORY.md— Pre-seeded with ecosystem contextHEARTBEAT.md— Empty (agent configures as needed)memory/directory created
Provider Auth
Providers are configured at the gateway level in agents.defaults, so all agents automatically inherit:
- anthropic, github-copilot, openai-codex, opencode, kimi-coding, google, google-antigravity, openrouter
No per-agent provider config needed — it's all in defaults.
Conventions
- Workspace:
~/.openclaw/workspace-<id>/ - Session key:
agent:<id>:main - Telegram account: matches agent id unless overridden
- All agents know Cack is the coordinator/boss
- All agents use
sessions_sendfor inter-agent comms - Plane workspace:
lasertoast(API key in~/DevCloud/plane.lasertoast.env)
