open-multi-agent

AI Agent OrchestrationCLITypeScript

★ 6,910주당 +25조회 4

무엇인가

open-multi-agent(OMA)는 조직이 직접 소유·승인·감사하는 에이전트 실행을 목표로 하는 TypeScript 라이브러리다. 호스팅형 에이전트 서비스 대신 애플리케이션 백엔드 안에 임베드되는 런타임 계층에 해당한다. 실행 단위는 단일 에이전트, 명시적 파이프라인, 목표에서 계획을 세우는 팀 세 가지다.

어떻게 동작하나

진입점은 `runAgent()`, `runTasks()`, `runTeam()` 세 함수다. 계획 수립, 태스크 디스패치, 도구 호출 게이트는 `suspend`를 반환할 수 있다. 이때 승인 요청은 체크포인트 옆에 저장되고 검토자가 본 내용의 SHA-256 해시에 묶인다. 재시작 후 실행은 그 내용을 기준으로 재개된다. 결정은 원자적이며 먼저 도착한 결정이 이긴다. 요청이 변조되었거나 저장소가 compare-and-set을 지원하지 않으면 실패 폐쇄로 처리된다. 저널 백엔드를 붙이면 모델이 본 모든 블록, 모든 도구 호출과 결과, 모든 컨텍스트 재작성이 기록된다. `verifyRun()`은 이 기록을 오프라인에서 다시 읽고 각 블록의 출처 이벤트가 그 블록을 바이트 단위로 재현하는지 검사한다.

무엇과 다른가

호스팅 제어 평면과 계정이 없고 분석·라이선스·업데이트·전화 홈 요청을 보내지 않는다. 모델 연결은 Anthropic, OpenAI, Azure OpenAI, Bedrock, Gemini, Grok, Copilot과 DeepSeek, Doubao, Hunyuan, MiniMax, MiMo, Qiniu를 내장 어댑터로 다루며, Ollama·vLLM·llama-server는 `baseURL`로 붙인다. OpenAI 호환 엔드포인트와 Vercel AI SDK 프로바이더도 대상이다. 송신 정책은 `offline` 또는 `allowlist`이며 내장 어댑터가 연결하기 전에 검사된다. 자식 정책은 부모보다 느슨해질 수 없고, 강제할 수 없는 트랜스포트는 실패 폐쇄한다. `governanceIntent: 'required'`와 `requiredRoles`를 선언하면 실행은 실행 영수증으로 판정된다. 어떤 역할이 어떤 순서로 실행되었는지, 의존 엣지가 무엇인지, 독립 리뷰가 있었는지가 평가 대상이고 평가자는 에이전트 출력 텍스트를 보지 않는다.

어떻게 쓰나

스캐폴드 명령 한 번이 스타터와 런타임을 고르고 의존성을 설치한 뒤 결정적 로컬 데모를 실행한다. 이 데모는 API 키 없이 스크립트된 모델 응답으로 실제 스케줄러, 결과 집계, 오프라인 대시보드를 구동한다. 기존 백엔드에 추가할 때는 패키지를 설치하고 `runAgent()`·`runTasks()`·`runTeam()`을 호출하며, 호스팅 모델을 쓰려면 `OPENAI_API_KEY` 같은 자격 증명을 설정한다. 로컬 서버는 `baseURL`로 지정한다.

전제와 한계

Node.js 20 이상이 필요하고 프로덕션에서는 유지보수 중인 LTS 릴리스를 쓴다. Node.js 20은 업스트림 EOL이며 다음 메이저 릴리스에서 제거되고, 그 시점은 2026-10-31보다 이르지 않다. `verifyRun()`은 계보와 내용을 증명할 뿐 파일이 편집되지 않았음을 증명하지 않는다. 축출된 컨텍스트 윈도는 실패가 아니라 판정 불가로 보고된다. 송신 정책은 process 백엔드와 ACP 백엔드에는 적용되지 않는다. 거버넌스 실행은 성공으로 끝나면서도 `unsatisfied`를 보고할 수 있다.

관련 논문 2

유사 도구