AI 에이전트 대부분은 개인 비서 형태로 설계된다. 한 명의 사용자를 돕는 데는 잘 맞지만, 회사 전체가 하나의 에이전트를 공유하려고 하면 금세 복잡해진다. 오픈소스로 공개된 QM은 이 지점을 정면으로 겨냥한 프로젝트다. 스타트업 조직을 전제로 설계됐으며, 직원 개개인에게 서로 격리된 작업 공간을 제공해 각자 독립적으로 일하면서도 채널, 그룹 메시지, 프로젝트 단위에서는 에이전트와 협업할 수 있게 한다. Slack과 웹 두 경로에서 동작한다는 점도 실무 도입 문턱을 낮추는 요소다.
격리와 협업을 동시에
QM의 핵심 설계 원칙은 '사람과 방(room)마다 독립된 상태'다. 각 사용자와 각 방은 자체 범위(scope)로 묶인 메모리, 파일, 키체인 뷰, 권한, 크론(cron), 웹 앱, 그리고 지속형 샌드박스를 갖는다. 여기서 샌드박스는 일회성 실행 환경이 아니라 '지속되는 컴퓨터'로 표현된다. 한 번 설치한 도구가 그대로 남아 있는 자기만의 환경이라는 뜻이다. 에이전트가 다루는 도구 집합은 작고 고정되어 있는데, 그중 execute 도구가 바로 이 격리된 샌드박스 안에서 명령을 실행하는 통로다. 개인 비서형 에이전트를 회사 전체로 확장할 때 생기는 상태 충돌과 권한 뒤섞임 문제를, 범위 단위 격리로 구조적으로 풀어낸 셈이다.
특정 벤더에 묶이지 않는 구조
QM이 강조하는 또 다른 특징은 하네스(harness)와 모델의 교체 가능성이다. Pi, OpenCode, Codex, Claude Code가 모두 동일한 코어를 구동하도록 설계돼 있어, 배포 환경이 특정 공급사에 종속되지 않는다. 모든 요청 턴은 중앙 코어를 거치며, 코어는 여러 모델과 하네스를 골라 응답을 생성한다. 사용자 데이터와 세션 기록 같은 지속 상태는 Postgres 영속 계층이 보관한다. 웹 UI, 관리자 패널, 공개 포털은 코어의 HTTP API 위에 얹히는 선택적 플러그인이며, Slack 역시 코어가 직접 서비스 클라이언트로 기동하고 감독하는 인프로세스 플러그인이다. 코어 자체는 TypeScript를 Node에서 직접 실행하고 HTTP는 Fastify를 쓴다. Slack 플러그인은 Bolt, 웹 UI는 Vite로 빌드해 Lit으로 렌더링한다. 하네스, 세션 저장소, 샌드박스, 메모리 등 모든 기반 요소가 인터페이스 뒤에 있어, 프로덕션 구현체는 하나의 배선(wiring) 파일에서 교체된다.
로컬 코딩 에이전트를 닮은 보안 모델
보안 측면에서 QM은 OpenCode, Codex, Claude Code 같은 로컬 코딩 에이전트의 접근을 따른다. 에이전트는 자신이 대신 일하는 사람의 자격 증명과 권한으로 그 사람처럼 행동하며, 모든 행위는 감사(audit)된다. 조직은 하나의 보안 태세(posture)를 고르고, 더 좁은 범위는 이를 완화할 수 없이 더 조일 수만 있다. 재귀적 삭제나 파괴적 SQL 같은 위험 명령에 대한 승인 규칙과 강제 차단을 담은 사전 선언 명령 정책은, 가장 느슨한 'Dangerous' 태세를 포함해 모든 태세에 공통 적용된다. 위협 모델과 운영자 가정, 알려진 한계는 SECURITY.md에 정리돼 있고, 취약점은 공개 이슈가 아니라 비공개로 제보하도록 안내한다.
배포와 커스터마이징의 두 갈래
도입 방식도 눈여겨볼 만하다. 코어는 범용으로 유지되고, 조직 설정·커스텀 도구와 스킬·샌드박스 이미지·인프라 등 특정 회사에만 해당하는 모든 것은 별도의 배포 디렉터리에 들어간다. qm CLI가 이 디렉터리를 검증하고 배포한다. 초기화 과정은 소스 체크아웃 없이 인프라, 웹 로그인, 커넥터 자격 증명, 선택적 Slack 접근, 배포, 실시간 검증까지 안내하며, 각 배포는 운영자 자신의 클라우드 계정에서 돌아간다. 다만 초기화가 배포 CI를 생성하거나 활성화하지는 않는다는 점은 실무자가 알아둘 한계다.
조직 전체 코드베이스를 한곳에서 관리하고 싶은 경우를 위해 '비공개 포크' 방식도 제시된다. 여기서 중요한 실무 조언은 GitHub의 Fork 버튼을 쓰지 말라는 것이다. GitHub 포크는 원본 저장소의 공개 여부를 물려받아 공개 저장소를 비공개로 포크할 수 없고, 하나의 오브젝트 네트워크를 공유해 포크에 푸시한 커밋이 SHA로 공개 측에서 여전히 조회될 수 있기 때문이다. 대신 평범한 clone으로 다운스트림 복사본을 만들되, 이 경우 상류의 CI 워크플로가 자기 계정에서 실제로 실행된다는 비용을 감수해야 한다. 조직 고유 요소는 모두 deploy/layers/ 아래에 두어 코어를 상류와 바이트 단위로 동일하게 유지하고, update-qm과 upstream-pr 두 스킬이 양방향 병합 경계를 관리한다. 이때 deploy/layers/ 아래 내용은 절대 상류로 올라가지 않는다. 참고로 QM은 별도 명시가 없는 한 MIT 라이선스로 제공되며, 코드가 아닌 사람이 쓴 텍스트 형태의 기여를 받는다는 점도 이 프로젝트의 독특한 운영 방식이다.