Manager/Worker Pattern
How to coordinate multiple AI agents using the TDA pattern.
Overview
The Manager/Worker pattern lets you:
- Delegate tasks to specialized workers
- Parallelize work across multiple AI instances
- Maintain high-level coordination
Setup
Terminal 1: Start Manager
ilogsession start myapp-mgr -p tda-manager -d ./my-project
Terminal 2-N: Start Workers
# Frontend worker
ilogsession start myapp-frontend -p tda-worker -d ./my-project
# Backend worker
ilogsession start myapp-backend -p tda-worker -d ./my-project
Workflow
1. Manager Receives Task
User tells Manager:
"Add user authentication with email/password"
2. Manager Delegates
Manager breaks down the task and assigns:
# From Manager session
imessenger send myapp-backend "Create User model with email and hashed password fields"
imessenger send myapp-backend "Create /api/auth/signup endpoint"
imessenger send myapp-backend "Create /api/auth/login endpoint"
imessenger send myapp-frontend "Create signup form component"
imessenger send myapp-frontend "Create login form component"
3. Workers Execute
Each worker:
- Receives the task
- Implements it
- Reports completion
# Worker reports back
imessenger send myapp-mgr "DONE: User model created with email and password_hash"
4. Manager Monitors
Manager tracks progress and handles issues:
# Check status
imonitor --session myapp-backend
# If worker is blocked
imessenger inbox # See what they need
imessenger send myapp-backend "Use bcrypt with 10 rounds"
5. Manager Approves
When workers need permissions:
# Worker requests permission for something
# Manager approves
imessenger approve myapp-backend
Best Practices
1. Clear Task Definition
# Good: Specific, actionable
imessenger send worker "Create POST /api/users endpoint that accepts {email, password} and returns {id, email}"
# Bad: Vague
imessenger send worker "Handle user stuff"
2. Consistent Naming
{project}-mgr # Manager
{project}-{role} # Specialized workers
3. Status Conventions
Workers should report using standard prefixes:
| Prefix | Meaning |
|---|---|
DONE: | Task completed |
BLOCKED: | Need help/info |
QUESTION: | Clarification needed |
PROGRESS: | Status update |
4. One Task at a Time
Don't overload workers:
# Good: One task
imessenger send worker1 "Create login endpoint"
# Wait for DONE
imessenger send worker1 "Add password validation"
# Bad: Multiple tasks at once
imessenger send worker1 "Create login, add validation, write tests"
Example: Full Session
# Manager session
$ ilogsession start todo-mgr -p tda-manager -d ./todo-app
Manager: "Add task completion feature"
# Manager creates workers
$ ilogsession start todo-backend -p tda-worker -d ./todo-app
$ ilogsession start todo-frontend -p tda-worker -d ./todo-app
# Manager delegates
$ imessenger send todo-backend "Add 'completed' boolean field to Task model"
$ imessenger send todo-backend "Create PATCH /api/tasks/:id/complete endpoint"
$ imessenger send todo-frontend "Add checkbox to TaskItem component"
$ imessenger send todo-frontend "Call complete endpoint when checkbox clicked"
# Workers work and report
# todo-backend: "DONE: Task model updated"
# todo-backend: "DONE: Complete endpoint created"
# todo-frontend: "DONE: Checkbox added"
# todo-frontend: "DONE: API integration complete"
# Manager verifies and reports to user
Manager: "Task completion feature added. Changes:
- Task model now has 'completed' field
- PATCH /api/tasks/:id/complete endpoint
- Checkbox in UI that calls the endpoint"