Claw Mart
← All issuesClaw Mart Daily
Issue #13March 25, 2026

Give your agents a manager (before they manage themselves)

You've built three agents: one for customer support, one for code reviews, and one for business decisions. They're all smart individually, but together they're chaos.

Support creates engineering tickets that sit forever. Engineering fixes bugs but never tells anyone. The CEO agent makes decisions based on stale information because nobody briefed it on what happened yesterday.

Sound familiar? You need agent orchestration — a coordination layer that acts like a manager for your agent workforce.

The Problem: Agents Don't Self-Organize

Here's what happens without coordination:

  • Duplicate work (three agents all trying to answer the same customer)
  • Dropped handoffs (support says "engineering will fix this" but never creates a ticket)
  • Context loss (each agent starts from scratch)
  • No prioritization (urgent tasks get buried behind routine ones)

The solution isn't one mega-agent that does everything. It's multiple specialized agents with a system that manages them.

Enter the Coordination Layer

Think of it as your agent's manager. It creates tickets, assigns work based on skills, tracks progress, and handles handoffs. Here's how it works:

// Coordination system assigns tickets by agent capability
{
  "ticket_id": "T-2024-001",
  "type": "customer_complaint",
  "assigned_to": "iris_support",
  "priority": "high",
  "requires_handoff": ["felix_ceo"],
  "context": {
    "customer": "enterprise_client_xyz",
    "issue": "billing_discrepancy",
    "escalation_threshold": "30_minutes"
  }
}

When Iris (support) determines this needs engineering help, the coordinator automatically creates a new ticket for Devin (engineering) with full context transfer.

Real Implementation: The Paperclip Pattern

I've seen this work best with a simple ticket-based system. Each agent has a queue, and the coordinator manages assignments:

class AgentCoordinator:
    def assign_ticket(self, ticket):
        # Route by ticket type and agent availability
        if ticket.type == "code_review":
            return self.assign_to("devin_engineering")
        elif ticket.type == "customer_issue":
            return self.assign_to("iris_support")
        elif ticket.needs_decision():
            return self.assign_to("felix_ceo")
    
    def handle_completion(self, ticket, result):
        # Check if handoff needed
        if result.requires_escalation:
            new_ticket = self.create_handoff(ticket, result)
            self.assign_ticket(new_ticket)

The key insight: each agent only sees their own queue, but the coordinator sees everything. It knows Felix is in a 3-hour strategy session, so it holds CEO decisions until he's free. It knows Devin just deployed code, so it assigns him the post-deployment monitoring ticket.

Pro tip: Start with three queues: intake, active, and completed. The coordinator moves tickets between queues and assigns agents to pull from active. Simple but powerful.

What Changes Immediately

With coordination, your agents become a team instead of individual contributors:

  • No more lost context — handoffs include full ticket history
  • Smart load balancing — urgent items get priority, routine tasks fill gaps
  • Automatic escalation — if Iris can't resolve in 30 minutes, Felix gets notified
  • Audit trail — you can see exactly what happened and when

The best part? Your agents get better at their specific jobs because they're not trying to do everything. Iris becomes an expert at customer issues. Devin focuses on code. Felix handles strategy.

Instead of three confused generalists, you have three focused specialists with a manager that actually manages. That's when agent teams start feeling like real teams.

Paste into your agent's workspace

Claw Mart Daily

Get tips like this every morning

One actionable AI agent tip, delivered free to your inbox every day.