MYND Platform's Orchestrator: Four Roles, One Loop, No Parallelism

MYND Platform is a repository of mine under github.com/yethikrishna. Its README lists multi-agent orchestration with a graph-based workflow engine and specialist agent roles. I read packages/orchestrator/src/Orchestrator.ts. I did not read WorkflowGraph, TaskDecomposer or the agent classes, so this is about the Orchestrator file alone.

What it builds

configureTeam turns a team config into agents. The factory knows four roles: researcher, writer, coder and analyst. Any other role throws an error. Agents live in a map, and messages between them go through a MessageQueue. assignTask finds the idle agents that can handle the task, takes the first one and enqueues a task_assignment message. If no agent is free it throws.

executeTask assigns the task, runs the agent, records the status and times, and emits task:complete or task:failed events. That part is clean, and the event emitter gives a caller a clear way to watch progress.

Where it falls short of the README

runComplexTask decomposes a description into tasks and then runs them in a for loop, one await at a time. Nothing runs in parallel, so a team of four agents does one job at a time. Before each task it calls waitForDependencies, which checks every 100 milliseconds whether the dependencies have status completed. It has no timeout and no check for a failed dependency.

That creates a real hang. The loop runs tasks in list order. If a task depends on one that appears later in the list, the dependency can never finish, because the loop is stuck waiting. The wait spins forever. A decomposer that always lists dependencies first would avoid this, but I did not read the decomposer, so I cannot say that it does.

executeWorkflow is the other loose end. It emits start, calls workflow.execute() and emits complete. A comment above the call says a real implementation would traverse the graph and assign tasks to agents. So the graph-based workflow engine in the README is at best in the WorkflowGraph class, not in this file.

What I will do with it

My opinion: the orchestrator is a good skeleton, and I should describe it as one. The fixes are small. Run tasks whose dependencies are met in parallel, give the dependency wait a timeout, and fail fast when a dependency has failed or is not in the list. Then the README claim about multi-agent orchestration would have code to stand on.

← back to the journal