목표 한 줄만 던지면 그걸 잘게 쪼갠 작업 그래프(task DAG)로 분해해서 여러 에이전트가 나눠 처리하게 해주는 오픈소스 프레임워크.
멀티 에이전트를 직접 짜본 사람이라면 가장 귀찮은 부분이 "누가 무슨 일을 어떤 순서로 할지"를 손으로 다 엮는 일이라는 걸 안다. 기획자 에이전트가 끝나야 개발자 에이전트가 돌고, 그게 끝나야 리뷰어가 보고… 이 의존 관계를 코드로 일일이 연결하는 게 일이다. 오픈 멀티 에이전트(Open Multi-Agent)는 이걸 자동화한다. "X를 만들어줘" 같은 목표 한 줄을 주면 코디네이터 에이전트가 알아서 할 일을 잘게 쪼개고, 각 작업의 선후 관계를 task DAG(방향성 비순환 그래프)로 그린 다음, 의존성이 없는 작업끼리는 병렬로, 줄줄이 엮인 작업은 순서대로 여러 에이전트에 분배해 실행한다.
핵심은 "멀티 에이전트라는 개념"이 아니라 "이 일을 대신 해주는 도구"라는 점이다. 멀티 에이전트가 무엇인지를 설명하는 패턴이 아니라, 목표 입력 → 분해 → 실행 → 결과 취합까지를 하나의 오픈소스 런타임으로 묶어 제공한다.
가장 단순한 사용법은 runTeam()에 목표를 넘기는 것이다. 그러면 코디네이터가 계획을 세우고 팀을 꾸려 실행까지 한 번에 처리한다. 직접 그래프를 그리지 않아도 되고, 진행 상황은 onProgress 이벤트와 onTrace 스팬으로 지켜볼 수 있어서 어느 작업이 어디서 막혔는지 추적할 수 있다.
모델 프로바이더에 묶이지 않는 것도 특징이다. Claude, GPT, MiniMax 같은 여러 모델을 작업별로 바꿔 끼울 수 있고, 외부 도구는 connectMCPTools()로 MCP 서버를 연결해 에이전트에게 통째로 노출시킨다. 예를 들어 한 에이전트는 MCP로 GitHub 이슈를 읽고, 다른 에이전트는 파일시스템 샌드박스 안에서 코드를 고치는 식으로 역할을 나눌 수 있다. 셸이나 CI에서 돌릴 때는 JSON 출력 위주의 oma CLI를 쓴다.
자동 분해가 편한 만큼, 코디네이터가 목표를 잘못 쪼개면 엉뚱한 DAG가 만들어진다. 그래서 컨텍스트 관리(슬라이딩 윈도우, 요약·압축), 작업 재시도와 백오프, 루프 감지, 도구 출력 잘라내기 같은 프로덕션 제어 장치를 함께 켜두는 게 권장된다. 라우팅을 사람이 미리 못 박고 싶다면 YAML로 흐름을 고정하는 결정론적 접근(예: Conductor)이 더 맞을 수 있다.