# qm - 협업을 위한 멀티플레이어 에이전트 하네스

> Clean Markdown view of GeekNews topic #32023. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=32023](https://news.hada.io/topic?id=32023)
- GeekNews Markdown: [https://news.hada.io/topic/32023.md](https://news.hada.io/topic/32023.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2026-08-01T07:33:23+09:00
- Updated: 2026-08-01T07:33:23+09:00
- Original source: [github.com/yc-software](https://github.com/yc-software/qm)
- Points: 1
- Comments: 1

## Topic Body

- **qm**은 스타트업 구성원이 각자 격리된 작업 공간을 사용하면서 Slack 채널·그룹 메시지·프로젝트에서 함께 에이전트와 협업할 수 있는 멀티플레이어 에이전트 하네스임
- 사람과 대화방마다 메모리·파일·키체인·권한·예약 작업·웹 앱·영구 샌드박스를 분리하며, Slack과 웹에서 동일한 **신원과 설정**을 유지함
- Pi·OpenCode·Codex·Claude Code를 동일한 코어에 연결할 수 있고 세션 저장소·샌드박스·메모리도 인터페이스 뒤에 배치해 특정 **모델이나 공급자 종속**을 피함
- Strict·Auto·Dangerous 보안 모드를 제공하며, 모든 모드에서 재귀 삭제나 파괴적 SQL 같은 작업에 대한 **명령 정책과 강제 거부**를 적용함
- 조직별 설정과 인프라는 별도 배포 저장소나 일반 복제로 만든 비공개 저장소에 유지하며, 운영자가 자신의 Fly.io 또는 AWS 계정에 직접 배포해야 함

---

### 조직 단위 에이전트 작업 공간
- 개인 비서형 에이전트를 회사 전체에 적용할 때 생기는 복잡성을 줄이도록 **개인 및 공유 범위(scope)** 를 기본 단위로 설계함
  - 직원마다 독립된 작업 공간에서 다른 사람에게 영향을 주지 않고 작업할 수 있음
  - Slack 채널·그룹 메시지·프로젝트에서는 여러 사람이 같은 에이전트와 협업할 수 있음
- 각 사람과 대화방은 별도의 **메모리·파일·키체인 보기·권한·예약 작업·웹 앱·영구 샌드박스**를 가짐
- Slack과 웹 앱 사이에서 같은 신원과 구성을 사용함
- 관리자는 조직 수준 설정, 보안 태세, 사용 가능한 하네스와 모델을 통제할 수 있음
- 기술 스킬은 범위가 소유하며 권한 부여로 공유할 수 있음
  - 조직 전체 승격에는 관리자 승인이 필요함
  - Git 저장소에서 스킬 팩을 가져올 수 있음
- 예약 작업(cron)과 감시 작업(watch)은 사용자가 지켜보지 않아도 백그라운드에서 실행됨

### 지원하는 업무
- 내부 메모·이메일·문서·데이터베이스·웹을 함께 검색하고 **회사 지식**을 조회할 수 있음
- 내부 웹 앱을 생성해 필요한 사람에게 공개하고 데이터를 최신 상태로 유지할 수 있음
- 과거 발송 기록에서 사용자의 문체를 학습한 뒤 일정에 따라 받은편지함을 분류하고 라벨과 답장 초안을 만들 수 있음
- 기존 저장소에서 테스트 실행, PR 생성, CI 감시, 시스템 로그 확인을 수행할 수 있음
- 공유 채널에서 프로젝트를 추적하고 진행 상황과 후속 작업을 게시할 수 있음

### 코어와 실행 구조
- 모든 요청은 **헤드리스 코어**를 통과하며 다양한 모델과 하네스로 응답을 생성함
- Postgres가 사용자 데이터, 세션 기록, 큐, 메모리 등 영속 상태를 저장함
- 에이전트가 사용하는 도구 표면은 작고 고정돼 있으며, `execute` 도구는 해당 범위의 격리된 샌드박스에서 명령을 실행함
  - 샌드박스는 각 범위가 보유한 영구 컴퓨터로 동작함
  - 설치한 도구는 다음 작업에도 유지됨
- 웹 UI·관리자 패널·공개 포털은 코어의 HTTP API 위에 설치하는 선택적 플러그인임
- Slack은 코어가 직접 서비스 클라이언트로 시작하고 감독하는 선택적 인프로세스 플러그인임
- 코어는 Node에서 TypeScript를 직접 실행하고 HTTP에는 **Fastify**를 사용함
  - Slack 플러그인은 Bolt를 사용함
  - 웹 UI는 Vite로 빌드하고 Lit으로 렌더링함
- 하네스·세션 저장소·샌드박스·메모리는 각각 인터페이스 뒤에 있으며, 프로덕션 구현은 하나의 배선 파일에서 교체할 수 있음

### 조직별 배포 모델
- 회사별 구성·사용자 정의 도구와 스킬·샌드박스 이미지·인프라는 코어와 분리된 **배포 디렉터리**에 둠
- [`qm` CLI](https://github.com/yc-software/qm/blob/main/cli/README.md)가 배포 디렉터리를 검증하고 배포함
- 조직 소유 저장소에서 `@yc-software/qm`에 의존한 뒤 다음과 같이 초기화할 수 있음

```bash
npm exec --yes --package=@yc-software/qm@latest -- \
  qm init . --org &lt;slug&gt; --target &lt;fly-or-aws&gt;
npm install
```

- 초기화 과정은 인프라, 웹 로그인, 커넥터 자격 증명, 선택적 Slack 접근, 배포, 실제 검증을 안내하며 소스 체크아웃이 필요하지 않음
- 배포는 운영자 자신의 **클라우드 계정**에서 실행됨
- 초기화는 배포 CI를 생성하거나 활성화하지 않으며, qm 저장소에도 프로덕션 배포 워크플로가 없음
- 구체적인 절차는 [`deployment.md`](https://github.com/yc-software/qm/blob/main/deployment.md)에 정리돼 있음

### 보안과 비밀 정보
- 에이전트는 함께 작업하는 사람의 자격 증명과 권한으로 행동하며, 수행한 모든 작업이 **감사 기록**에 남음
- 조직은 하나의 보안 태세를 선택하고, 더 좁은 범위에서는 이를 완화하지 않고 강화만 할 수 있음
  - **Strict**: 효과가 없는 두 가지 턴 종료 작업을 제외하고 모든 하네스 도구 호출을 사람의 승인 전까지 중단함
  - **Auto**: 기본 모드로, 출처 라벨이 붙은 외부 데이터와 도구 결과를 모델에 전달하기 전에 분류기가 검사함
    - 배포 환경에서 자체 검사 프록시를 지정할 수 있음
  - **Dangerous**: 콘텐츠 검사나 도구 호출 사이의 일시 중지가 없음
- 사전 선언된 명령 정책은 모든 보안 모드에 적용됨
  - 승인 규칙과 함께 재귀 삭제·파괴적 SQL 같은 명령을 강제로 거부함
  - Dangerous 모드도 예외가 아님
- 위협 모델, 운영자 전제 조건, 알려진 한계는 [`SECURITY.md`](https://github.com/yc-software/qm/blob/main/SECURITY.md)에서 확인할 수 있음

### 비공개 사용자 정의 저장소
- 배포 저장소만으로 충분하지 않은 조직은 코어와 비공개 사용자 정의 코드를 한곳에서 읽을 수 있도록 **비공개 복제 저장소**를 운영할 수 있음
- GitHub의 Fork 기능이 아니라 일반 복제로 만들어야 함
  - 공개 저장소의 GitHub 포크는 비공개로 전환할 수 없음
  - GitHub 포크는 원본과 객체 네트워크를 공유하므로 포크에 푸시한 커밋이 공개 측에서 SHA로 조회될 수 있음
  - 일반 복제 저장소에서는 이런 문제가 없지만 upstream CI 워크플로가 조직 계정에서 실제 실행됨
  - 필요한 비밀 정보를 제공하거나 원하지 않는 워크플로를 비활성화해야 함
- 조직별 구성·샌드박스 도구와 스킬·플러그인 이미지·인프라는 `deploy/layers/&lt;org&gt;/`에 보관함
- 코어를 upstream과 **바이트 단위로 동일하게 유지**해 병합 규모를 줄임
- 두 가지 스킬이 공개 코어와 비공개 사용자 정의 영역의 경계를 관리함
  - `update-qm`은 upstream qm을 비공개 저장소에 병합하고 동기화 PR을 생성함
  - `upstream-pr`은 `upstream/main`에서 브랜치를 만들고 조직 독립적인 수정 사항을 qm으로 보냄
  - 푸시 전에 diff·커밋 메시지·스크린샷에서 조직 식별자를 검사함
  - `deploy/layers/` 아래의 파일은 upstream으로 전송하지 않음

### 기여와 라이선스
- 기여는 코드가 아니라 사람이 작성한 `.txt` 또는 `.md` 문서로 받음
  - 원하는 변경 사항을 `adrs/`에 비공식적으로 작성하면 프로젝트 측에서 합의 후 구현함
  - 세부 규칙은 [`CONTRIBUTING.md`](https://github.com/yc-software/qm/blob/main/CONTRIBUTING.md)에 있음
- 취약점은 공개 이슈가 아니라 [`SECURITY.md`](https://github.com/yc-software/qm/blob/main/SECURITY.md)의 절차에 따라 비공개로 신고해야 함
- 별도 표기가 없는 부분은 **MIT License**로 제공됨

## Comments



### Comment 62688

- Author: neo
- Created: 2026-08-01T07:33:25+09:00
- Points: 1

###### [Hacker News 의견들](https://news.ycombinator.com/item?id=49126604) 
- LLM 시대에 새로운 **UI 기본 요소와 개념**이 등장하는 모습이 흥미롭지만, 창의적인 앱이 너무 많고 설명도 부족해 각각 무엇을 하는지 파악하기 어려움  
  Hermes 에이전트 웹페이지에서는 기능을 전혀 이해하지 못했고, qm 페이지를 한참 뒤져서야 적절한 설명을 찾았음. 최근에는 코딩 세션 관리에 YC 지원 Orca를 애용하고 있지만 PostgreSQL 기반 세션 데이터베이스가 부족해 qm을 시험해볼 만함
  - 궁극적으로는 **개인 맞춤형 소프트웨어**를 직접 만들면 됨. 요즘은 이런 도구에서 영감을 얻은 뒤 Claude와 몇 번 좋은 세션을 거치면 원하는 것을 직접 구현할 수 있음
  - 도구의 **차별점**을 강조하면 낯설고 쓸모없어 보일 위험이 있음. 그래서 실제로는 혁신적이고 서로 다른 도구도 마케팅 페이지는 비슷해지는 경향이 있음
  - AI에는 여러 영역에서 완전히 새로운 **기본 요소**가 필요함

- Buzz와 함께 이런 방향이 나와 반가움. 다중 사용자 에이전트에서 가장 어려운 부분은 에이전트 루프가 아니라 **범위 설정**이며, QM의 개인별 범위와 공유 룸은 전사 도우미에 합리적인 해법임  
  팀이 Claude Code와 Codex를 함께 실행하는 다중 사용자 코딩 도구 AQ(aq.dev)를 만들고 있어, YC가 업무용 다중 사용자 에이전트 도구를 출시한 모습이 방향성을 확인해주는 동시에 조금 비현실적으로 느껴짐

- 이미 비슷한 제품이 많은데 왜 **Claude Cowork** 대신 이것을 써야 하는지 모르겠음. Cowork가 더 단순하고 완성도와 기능도 높아 보이므로, `QM vs Cowork` 비교가 필요함
  - Anthropic의 비공개 가중치 모델 생태계에 영구적으로 묶여 토큰당 비용을 계속 내기보다, 자체 실행하는 LLM과 **pi 또는 opencode 클라이언트**를 사용하고 싶은 수요가 있음
  - 아직 아무도 해결하지 못했다는 **다중 사용자** 유행어에 편승하려는 듯하지만, UI가 형편없고 답이 아닌 듯함
  - 다른 모델을 사용하고 싶을 수도 있음

- **조직 전체 문맥과 보안**을 어떻게 구현했는지 살펴볼 필요가 있음. 현재 개인에게 최적의 AI 인터페이스를 제공하는 내 코딩 도구와 매우 상호보완적으로 보이며, 몇 개의 대형 티켓만으로 전사 아키텍처와 생산적인 개인 코딩 인터페이스를 모두 갖추면 좋겠음

- Hermes가 앞서 사용했다는 **OpenClaw 계열 에이전트** 중 가장 나은 선택인지, 고급 사용자들은 이런 시스템을 실제로 어디에 쓰는지 궁금함
  - 내부 시스템에 접근하고 웹훅으로 실행할 수 있는 **상시 가동 에이전트**가 매우 편리함  
    간단한 CI 실패 자동 수정, 프로덕션 경보 수신 후 근본 원인 분석과 수정 PR 생성, 느린 데이터베이스 쿼리의 주기적 점검과 최적화, 일회성 데이터 질문에 답하는 차트 생성 등에 사용함. 이동 중 코딩에도 써봤지만 코드를 직접 확인할 수 있는 대화형 에이전트를 더 선호함
  - Hermes를 사용했지만 종종 한두 단계 더 깊이 제어하고 싶어 불편했음. 어제부터 오직 나만을 위한 고도로 맞춤화된 버전을 직접 만들고 있는데, 아직 하루뿐인 신혼 기간임을 감안해도 즐겁게 작업 중임  
    소프트웨어 제작 자체와 **완전한 통제권**을 좋아하며, 기본 에이전트 루프는 실제로 특별하지 않음. 핵심 루프 바깥에 조절할 요소가 아주 많고, 여러 확장 방식을 시험하는 과정이 재미있음. 수익화나 범용성을 고민하지 않고 필요한 기능만 추가하면 되며 무한히 플러그인 가능하도록 만들 필요도 없음. nanoclaw와 Hermes가 핵심 아이디어를 알려준 데 감사하지만, 이제는 내 방식으로 변형하고 싶음
  - Hermes는 거대하고 불필요한 기능도 많아, 필요에 따라 확장할 수 있는 **작은 에이전트**를 선호함. GitHub의 여러 프로젝트를 시험해봤고 dirge([https://github.com/dirge-code/dirge](<https://github.com/dirge-code/dirge>))가 인상적이었으며 관계자는 아님  
    보조 RSS 피드와 뉴스레터를 읽고 내게 중요한 정보만 걸러 뉴스와 시장 동향을 전달하도록 사용 중임
  - 프로덕션 경보에 가장 먼저 대응하는 **온콜 보조 도구**로 사용 중임. 기본 설정에서는 코딩 에이전트만큼 효율적이지 않지만 큰 도움이 됨
  - 대부분은 LLM으로 이메일과 인스턴트 메시지를 주기적으로 확인하는 데 쓰는 듯함

- Buzz에 빼앗긴 영역을 최소화하려고 YC가 급히 공개한 **내부 도구**처럼 보임. 두 도구를 직접 비교해본 평가가 궁금함

- `yc software`가 무엇을 뜻하는지 궁금함

- 템플릿처럼 보이지 않는 인터페이스를 만들도록 하는 **`anti-slop` 디자인 스킬**을 함께 배포한 점이 흥미로움  
  고급 소비재에서 AI가 자주 사용하는 색상 팔레트를 금지하고, 랜딩 페이지와 포트폴리오는 시각적 제품이므로 가짜 스크린샷 영역만 둔 텍스트 페이지를 저품질 결과물로 규정함. [https://github.com/yc-software/qm/blob/7f2c916360f1797a8ff2a...](<https://github.com/yc-software/qm/blob/7f2c916360f1797a8ff2a77ce2ce40c5fabab087/skills-seed/taste-skill/references/tasteskill.md>)
  - 결국 현재의 저품질 AI 디자인과 다르게 보일 뿐, 시간이 지나면 그 자체가 또 다른 **몰개성한 디자인의 수렴점**이 되지 않을까 싶음

- 제목은 `qm - a multiplayer agent harness for work`처럼 도구의 용도를 드러내는 편이 더 유용함
  - 제목을 이해하기 위해 독자가 약간 수고하는 것을 허용하는 건 **HN 특유의 관행**임
