yc-software/qm
Multiplayer agent harness for work.
QM – 다중 사용자 AI 에이전트 플랫폼
정의 – QM("큐-엠"으로 발음)은 기업이 모든 직원과 공유 Slack/웹 채널을 위해 자체 AI 기반 "에이전트"를 실행할 수 있게 해주는 오픈 소스 프레임워크입니다. 각 사용자(또는 "룸")는 자체 메모리, 파일, 자격 증명, 예약 작업, 샌드박스 컴퓨팅을 갖춘 격리된 작업 공간을 받으며, 동일한 에이전트를 이러한 범위 간에 협업하도록 초대할 수 있습니다.
중요성 – 대부분의 LLM 기반 어시스턴트는 개인용 봇으로 구축됩니다. QM은 조직 전체 테넌시라는 누락된 계층을 추가합니다: 개인별 격리, 세분화된 권한 제어, 그리고 제어하는 모든 클라우드에서 동일한 모델 비종속 코어를 실행하고 모든 LLM 제공자(Pi, OpenCode, Claude Code 등)를 사용하는 기능입니다. 이를 통해 스타트업은 데이터, 키, 규정 준수를 사내에 유지하면서 AI 코파일럿의 생산성 향상을 얻을 수 있습니다.
핵심 개념
| 개념 | 제공 기능 |
|---|---|
| 개인 및 공유 범위 | 각 직원은 개인 샌드박스를 보유합니다. 채널/프로젝트는 초대 시 샌드박스를 공유할 수 있습니다. |
| 모델 비종속 하네스 | 코어는 플러그인을 통해 지원되는 모든 LLM과 통신하므로 재배포 없이 제공자를 교체할 수 있습니다. |
| Slack + 웹 UI | 동일한 ID와 구성이 Slack(Bolt 경유) 및 Vite/Lit 웹 앱에서 작동합니다. |
| 관리자 제어 | 조직 수준 정책이 사용 가능한 모델/하네스, 보안 포스처, 공유 규칙을 결정합니다. |
| 스킬 및 스킬 팩 | 재사용 가능한 도구 정의(예: "내부 문서 검색")는 범위가 지정되고, 부여 가능하며, 조직 전체로 승격될 수 있습니다. |
| 백그라운드 작업 | Cron 작업, 파일 감시, 인바운드 웹훅은 사용자가 활성 상태가 아니어도 샌드박스에서 실행됩니다. |
작동 방식(높은 수준 흐름)
- API 코어 – Fastify 기반 HTTP 서비스가 ID, 정책, 세션 상태, 스케줄러를 보유합니다. 선택된 LLM 하네스(Pi, OpenCode, Claude Code 등)를 호출하는 Loop와 통신합니다.
- 범위별 샌드박스 – 파일, 설치된 도구, 로그인된 서비스 자격 증명을 저장하는 격리된 컨테이너(또는 이미지). 코어는 이 샌드박스 내에서 명령을 실행하는
execute도구 호출을 발행할 수 있습니다. - 영속성 – PostgreSQL이 세션, 메모리, 영구 큐를 저장합니다.
DATABASE_URL및SESSION_STORE=postgres를 사용하면 상태가 재시작 후에도 유지됩니다. - 플러그인 – Slack(Bolt) 및 웹 UI는 HTTP API를 통해 사용자 턴을 코어로 전달하는 경량 서비스입니다. 동일한 ID 모델을 공유하므로 사용자 선호도와 권한이 모든 표면에서 일관됩니다.
- 배포 디렉터리 – 모든 조직별 구성(허용된 모델, 사용자 지정 도구, 샌드박스 이미지, 비밀)은
qmCLI가 검증하고 배포하는 별도 리포지토리에 저장됩니다. 코어 코드 자체는 npm 패키지@yc-software/qm으로 버전 관리됩니다.
보안 모델
- 포스처 –
Strict(모든 도구 호출에 인간 승인 필요),Auto(기본값, 개인 네트워크 액세스 차단),Dangerous(승인 없음, 감사만). 조직이 기본값을 선택합니다. 개별 범위는 더 엄격하게 설정할 수 있습니다. - 콘텐츠 검열 – 선택적 분류기(
off/observe/enforce)로 플래그가 지정된 LLM 출력을 격리할 수 있습니다. - 명령 정책 – 위험한 작업(예: 재귀 삭제, 파괴적 SQL)에 대한 사전 선언된 허용/거부 규칙이 모든 포스처에 적용됩니다.
- 격리 vs. 공개 공유 – 기본적으로 범위는 격리됩니다. "공개" 포스처는 실시간 인간이 공유 룸에서 옵트인한 개인 자산을 읽을 수 있게 합니다.
- 모든 작업은 감사용으로 기록되며, 에이전트는 공유 서비스 계정이 아닌 사용자 자신의 자격 증명으로 실행됩니다.
일반적인 사용 사례
- 통합 검색 – 내부 메모, 이메일, 문서, 데이터베이스, 웹을 한 번의 턴으로 쿼리합니다.
- 내부 앱 구축 – 적절한 사람만 액세스할 수 있는 사용자 지정 웹 도구를 빠르게 만들고 데이터는 샌드박스에 유지합니다.
- 이메일 분류 – 사용자의 작성 스타일을 학습하고, 수신 메일을 자동으로 라벨링하고, 일정에 따라 답변을 초안 작성합니다.
- 개발자 워크플로 어시스턴트 – 에이전트 내에서 테스트 실행, PR 열기, CI 모니터링, 로그 검사.
- 프로젝트 추적 – 공유 Slack 채널을 사용하여 자동 상태 업데이트 및 후속 조치를 받습니다.
시작하기 / 배포
# 조직의 배포 리포지토리 초기화(Fly, AWS 등)
npm exec --yes --package=@yc-software/qm@latest -- \
qm init . --org <slug> --target <fly-or-aws>
npm install
- CLI가 ID, 커넥터(Slack, 이메일, DB), 샌드박스 이미지, CI 구성 과정을 안내합니다.
- 로컬 개발용 실행:
npm run dev-instance:web– 웹 UI + 관리 패널npm run dev-instance:slack– Slack 플러그인만npm run dev-instance:both– 두 표면 모두 함께
- 프로덕션 배포는 동일한 CLI(
plan,up,check)를 사용하며 영속성을 위해 PostgreSQL 저장소에 의존합니다.
사용자 지정 및 기여
- 구성 전용 사용자 지정 –
@yc-software/qm패키지를 고정하고 자체 도구, 스킬, 샌드박스 이미지를 추가하는 개인 배포 리포지토리를 유지합니다. - 소스 수준 변경 – 리포지토리를 포크하고 코어, 플러그인, CLI 또는 문서를 수정한 다음 개인 npm 패키지와 사용자 지정 이미지를 게시합니다.
- 기여는 직접 코드 패치가 아닌 설계 제안(일반
.md/.txtADR 파일)으로 처리됩니다. 유지 관리자가 승인된 변경 사항을 구현합니다.
문서 및 리소스
- 시작하기 –
docs/getting-started.md - CLI 참조 –
cli/README.md - 배포 디렉터리 계약 –
docs/deploy-directory.md - 모델 게이트웨이 –
docs/model-gateway.md - 샌드박스 및 샌드박스 이미지 가이드 –
docs/superserve.md - 플러그인 전체 목록(Slack, 웹 UI, 관리, 포털) –
plugins/
라이선스
MIT(가끔 타사 고지 포함).
결론 – QM은 스타트업에게 데이터 소유권을 존중하고, 모든 LLM을 지원하며, Slack 및 내부 웹 도구와 긴밀하게 통합되는 다중 테넌트 자체 호스팅 AI 어시스턴트를 실행할 수 있는 턴키 방식을 제공합니다.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트