Open Multi-Agent: 목표를 받아 작업 DAG를 실행 시점에 만드는 멀티 에이전트 프레임워크

Open Multi-Agent 소개

Open Multi-Agent(OMA)는 TypeScript 백엔드에 넣어 쓰는 AI 에이전트 오케스트레이션 프레임워크입니다. 가장 큰 특징은 워크플로 그래프를 사람이 미리 그려 두지 않는다는 점입니다. 목표 한 줄을 넘기면 조정자(coordinator)가 실행 시점에 작업 DAG를 만들고, 결정적으로 동작하는 스케줄러가 그 DAG를 팀 전체에 배분해 실행합니다. 프로젝트는 자신의 지향점을 "Describe the goal, not the graph"라는 한 문장으로 요약하고 있습니다.

멀티 에이전트 시스템을 시제품에서 운영 단계로 옮길 때 걸리는 지점은 보통 계획을 세우는 능력이 아니라 그 계획을 통제하고 되짚는 수단입니다. 실행 시점에 계획이 만들어지는 구조는 유연하지만, 계획이 엉뚱한 방향으로 흘러도 막을 방법이 없다면 운영에 쓰기 어렵습니다. OMA는 이 지점에 승인과 제약, 체크포인트 재개, 추적과 평가를 함께 놓아 동적 계획을 명시적 경계 안에 두는 방식을 택했습니다.

실행 환경은 사용자 쪽에 남습니다. 클라우드 모델과 로컬 모델을 섞어 쓸 수 있고, OpenAI 호환 엔드포인트와 AI SDK 제공자도 연결되며, 도구 호출을 텍스트로 내보내는 로컬 모델을 위한 예비 파서도 들어 있습니다. Claude Code와 Gemini CLI, Codex 같은 외부 에이전트도 프로세스 백엔드와 ACP 백엔드를 통해 같은 작업 DAG와 공유 메모리, 예산 안에서 함께 움직입니다. 본 게시물에서는 OMA의 실행 모델, 통제 장치, 관측과 평가 기능, 그리고 설치와 첫 실행 절차를 정리합니다.

Open Multi-Agent의 실행 모델

OMA가 제공하는 실행 방식은 세 가지입니다. runTeam()은 목표에서 계획을 세워 팀 전체를 돌리고, runAgent()는 에이전트 하나만 실행하며, runTasks()는 사람이 정의한 파이프라인을 그대로 수행합니다. 아래는 저장소가 제시하는 최소 예시로, 연구자와 분석가 두 역할을 공유 메모리와 함께 한 팀으로 두고 목표 하나를 던지는 형태입니다.

import { OpenMultiAgent } from '@open-multi-agent/core'

const oma = new OpenMultiAgent({ defaultProvider: 'openai', defaultModel: 'gpt-5.4' })

const team = oma.createTeam('research-team', {
  name: 'research-team',
  agents: [
    { name: 'researcher', systemPrompt: 'Find the relevant facts.' },
    { name: 'analyst', systemPrompt: 'Compare evidence and identify tradeoffs.' },
  ],
  sharedMemory: true,
})

const result = await oma.runTeam(team, 'Compare three approaches and recommend one.')
console.log(result.agentResults.get('coordinator')?.output)

여기서 팀에 명시된 것은 역할과 시스템 프롬프트뿐이고, 어떤 작업이 몇 개로 쪼개져 누구에게 갈지는 조정자가 실행 시점에 정합니다. 결과 객체에서 coordinator의 출력을 꺼내면 종합된 답을 얻습니다. 세 가지 실행 방식과 제공자·자격증명 설정, 운영 점검 목록은 코어 패키지 문서에 정리되어 있고, 예제 목록에는 기초부터 쿡북, 패턴, 제공자, 통합까지 50개 이상의 실행 가능한 예제가 있습니다.

Open Multi-Agent의 통제 장치

동적 계획을 그대로 풀어 두지 않기 위해 OMA는 두 방향의 통제 수단을 둡니다. 하나는 승인입니다. 계획 전체나 개별 배분을 미리 보고 승인할 수 있고, 승인한 계획은 고정해 두었다가 나중에 그대로 재생할 수 있습니다. 다른 하나는 제약입니다. 구성이 달라지면 안 되는 작업에는 필요한 역할과 순서를 선언해 두고, 결과물은 여러 에이전트의 합의(consensus)로 검증합니다.

실행이 끝없이 늘어지는 것을 막는 장치도 함께 들어 있습니다. 중단된 실행은 체크포인트에서 재개할 수 있고, 작업 결과가 확정되는 지점에서 계획을 덧붙이는 방식으로만 수정하는 복구 방식을 선택할 수도 있습니다. 재시도와 제한 시간, 반복 감지, 토큰과 비용 예산이 실행 범위를 제한합니다.

도구 쪽은 기본 거부(default-deny)로 시작합니다. 개별 호출마다 통과 여부를 정하고, 원격 측정 데이터와 저장되는 상태에는 별도의 개인정보 통제를 적용합니다. 각 항목의 상세 문서는 저장소의 docs/ 디렉토리에 기능별로 나뉘어 있습니다.

Open Multi-Agent의 관측과 평가

실행 하나하나는 안정적인 식별자와 실행 증빙(execution receipt), 추적 기록을 남깁니다. 이 기록은 TraceStore에서 조회하거나, 오프라인 Run Viewer에서 작업 DAG와 구간 워터폴(span waterfall)로 다시 재생할 수 있습니다. 중앙 집중식 모니터링을 이미 쓰고 있다면 선택 사항인 OpenTelemetry 어댑터로 내보냅니다.

아래는 저장소가 공개한 Run Viewer 화면으로, 실제 실행 하나를 다시 재생하며 작업 DAG와 각 작업의 상태, 담당 에이전트, 토큰 수, 도구 호출을 함께 보여 줍니다.

Open Multi-Agent의 Run Viewer가 작업 DAG와 실행 기록을 재생하는 화면

같은 실행 기록은 평가에도 그대로 쓰입니다. 버전이 매겨진 EvalSet과 기준 채점기, 오프라인 보고서, CI 게이트, 회귀 기준선, 운영 중 표본 추출이 모두 이 기록을 재료로 삼습니다. 실행을 관측하는 데 쓴 데이터를 품질 회귀를 막는 데 다시 쓰는 구성입니다.

Open Multi-Agent가 맞는 상황

프로젝트는 자신이 어디에 맞고 어디에 맞지 않는지를 문서에서 분명히 구분합니다. 워크플로를 노드 단위로 직접 작성해야 하는 작업에는 그래프를 먼저 정의하는 프레임워크가 낫고, 에이전트 호출 한 번으로 끝나는 일에는 LLM 툴킷만으로 충분하다고 적고 있습니다. OMA의 자리는 여러 에이전트와 의존 관계, 승인, 복구 단계가 함께 맞물려야 하는 오케스트레이션 계층입니다. LangGraph와 Mastra, CrewAI, Vercel AI SDK 등과의 항목별 비교는 공식 비교 페이지에 정리되어 있습니다.

패키지는 세 개로 나뉩니다.

  • @open-multi-agent/core: 오케스트레이션 런타임과 도구, 메모리, 체크포인트, 추적, CLI, 오프라인 Run Viewer가 들어 있는 본체입니다.
  • @open-multi-agent/otel: 중앙 OpenTelemetry 스택을 운영하는 팀을 위한 선택 통합입니다.
  • create-oma-app: npm create oma-app이 실행하는 스캐폴더로, 키 없이 도는 로컬 데모가 포함된 시작 템플릿을 만듭니다.

코어만 쓰면 추적 기록을 로컬에 저장해 오프라인 Run Viewer로 확인할 수 있고, OMA의 추적을 애플리케이션의 다른 지표와 같은 모니터링 시스템에서 봐야 할 때만 OTel 패키지를 추가하면 됩니다.

Open Multi-Agent 설치와 첫 실행

요구 사항은 Node.js 20 이상이며, 운영 환경에서는 지원 기간이 유지되는 LTS 릴리스를 쓰라고 안내합니다. 새로 시작하는 경우에는 스캐폴더 한 줄로 PR 리뷰 에이전트, 보안 분석 에이전트, 학습용 DAG 중 하나를 골라 만들 수 있습니다.

npm create oma-app@latest my-oma

대화형 터미널에서 이 명령은 시작 템플릿과 런타임을 고르고 의존성을 설치한 뒤 결정적으로 동작하는 로컬 데모를 실행합니다. 이 데모는 API 키가 필요 없고 모델 요청도 보내지 않습니다. 미리 정해 둔 모델 응답이 실제 OMA 스케줄러와 결과 종합, 오프라인 대시보드를 구동하는 방식이라, 자격증명 없이 실행 흐름을 먼저 확인할 수 있습니다. 파일만 만들려면 --no-install, 설치만 하고 데모를 띄우지 않으려면 --no-run을 붙입니다.

기존 백엔드에 붙일 때는 코어 패키지만 설치합니다.

npm install @open-multi-agent/core

Open Multi-Agent를 쓰는 프로젝트

프로젝트는 2026년 4월 1일 MIT 라이선스로 공개됐고, README에 현재까지 확인된 사용처와 통합을 직접 나열해 두었습니다. WordPress 보안 분석 플랫폼 temodar-agent는 Docker 런타임 안에서 OMA의 내장 도구를 그대로 쓰고 있고, PR 리뷰 도구 PR-Copilot은 조정자와 범위가 한정된 리뷰어 에이전트로 팀을 구성해 PR 차이를 토큰 기준으로 압축하는 자체 컨텍스트 전략을 붙였습니다. 터미널 코딩 도구 StuFlow는 세 가지 실행 방식을 모두 사용하고, Reports to Charts Studio는 문서에서 표를 뽑아내는 다섯 역할 협의체를 구조화된 출력과 결정적 검증으로 구성했습니다.

로컬 실행 사례도 함께 적혀 있습니다. 한 기여자는 양자화된 로컬 모델만으로 OMA를 완전히 오프라인에서 돌리면서, 조정자와 컨텍스트 압축으로 제한된 VRAM 안에서 자율 에이전트 루프를 유지하고 있다고 소개되어 있습니다.

Open Multi-Agent의 라이선스

Open Multi-Agent는 MIT 라이선스로 공개되어 있어 개인 및 상업적 목적으로 자유롭게 사용할 수 있습니다.

:house: Open Multi-Agent 공식 홈페이지

:books: Open Multi-Agent 문서 사이트

:github: Open Multi-Agent 프로젝트 GitHub 저장소

더 읽어보기




이 글은 GPT 모델로 정리한 초안을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 댓글로 알려주시기를 부탁드립니다. :hugs:

:pytorch:파이토치 한국 사용자 모임:south_korea:이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일:love_letter:로 보내드립니다! 텔레그램(Telegram)이나 Slack/Discord/Teams/Dooray/GoogleChat 등으로도 새 글 알림을 받으실 수 있습니다. :smiley:

:wrapped_gift: 아래:down_right_arrow:쪽에 좋아요:+1:를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~ :star_struck: