Skip to main content

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:

  1. Receives the task
  2. Implements it
  3. 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:

PrefixMeaning
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"