아티팩트 공유 및 외부 전달
에이전트가 웹 페이지, 보고서, PDF 또는 다중 파일 사이트를 완성하면 Myrm은 이를 읽기 전용 공유 링크로 변환해 어떤 브라우저에서든 열 수 있게 합니다 — 계정, 설치, 로그인 불필요. 이는 “말하기 → 실행 → 보기 → 공유” 전달 루프의 마지막 단계입니다.원클릭 공유 링크
아티팩트 카드에서 공유를 클릭하면 즉시 공개 링크가 생성됩니다:- 수신자 가입 불필요 — 링크를 어떤 브라우저에서든 바로 엽니다
- 읽기 전용 설계 — 수신자는 볼 수만 있고 편집할 수 없습니다; 편집은 Myrm 내부에서만 가능
- 선택적 비밀번호 게이트 — 민감한 콘텐츠(주간 보고서, 계약 초안)를 비밀번호로 보호
- TTL 자동 만료 — 링크 수명은 1~30일(설정 가능)이며 만료 후 자동으로 비활성화
불변 버전 스냅샷
공유 링크는 항상 아티팩트의 특정 불변 버전에 고정됩니다:- 콘텐츠가 절대 변하지 않음 — 이후 아티팩트를 편집해도 이미 보낸 링크는 오염되지 않습니다
- 각 스냅샷은 SHA-256 지문으로 식별되어 공유 콘텐츠가 공유 시점의 정확한 바이트임이 증명됩니다
- 구체화된 번들이 삭제되어도 다음 접근 시 불변 스냅샷에서 자동으로 다시 구체화됩니다
다중 파일 번들
Myrm은 페이지에 필요한 모든 리소스를 단일 공유 번들로 자동 수집합니다:- HTML + CSS + JavaScript + 이미지 — 진짜 참조 체인에서 발견(엔트리 파일만이 아닌)
- 중첩 디렉터리 보존 — 하위 리소스가 올바르게 해석됩니다
- 단일 따옴표 URL이 포함된 인라인 스타일도 올바르게 처리됩니다
- Lockfile 및 빌드 산출물(
package-lock.json,node_modules)은 번들에서 제외됩니다 - 문서와 PDF는 볼트 객체에 파일 확장자가 없어도 올바른 미디어 유형으로 제공됩니다 — 한글 문서는 Markdown으로 렌더링되고 PDF는 PDF로 열립니다
공유 수명 주기 — 취소, 상태 및 감사
아티팩트와 채팅 공유 링크는 언제든 취소 가능하며 전체 수명 주기를 관리할 수 있습니다:- 원클릭 취소 — 취소하면 링크가 즉시 404 “Link Revoked”를 반환하며, 유예 기간이나 캐시 우회가 없습니다
- 취소된 비밀번호 링크 — 수명 주기 검사가 비밀번호 게이트보다 먼저 실행되므로, 취소된 보호 링크는 신규 방문자에게 바로 만료 페이지를 표시하고 절대 비밀번호 프롬프트를 노출하지 않습니다
- 취소된 토큰은 영구 폐기 —
share_token_fingerprint와share_revoked_fingerprints집합을 영속화하여, 취소된 링크는 나중에 다시 공유해도 영원히 404입니다 - 검색 엔진 차단 — 모든 공개 공유 응답에
X-Robots-Tag: noindex, nofollow+Cache-Control: no-store+Referrer-Policy: no-referrer를 적용하여 취소된 링크가 캐시/인덱스 사본으로 접근될 수 없습니다 - UI 실시간 상태 — 공유 대화 상자는 열 때마다 현재 상태(
unshared/revoked/active/password_protected), 링크 주소, 남은 만료 시간을 표시합니다; 취소 후에는 대화 상자가 “취소됨” 상태로 유지됩니다 - 취소 감사 로그 — 모든 취소 작업이 기록되어 추적 가능합니다
- 채팅 삭제 시 연쇄 무효화 — 원본 채팅을 삭제하면 즉시 공유가 무효화됩니다(404 “Content Unavailable”)
보안 설계
배포 모드
아티팩트 공유는 세 가지 배포 모드에서 동일하게 동작합니다 — 공유 번들은 자신의 샌드박스에서 제공되므로 데이터가 인스턴스를 벗어나지 않습니다:- 로컬 WebUI — 자체 호스팅, 링크가 로컬 머신에서 제공
- Tauri 데스크톱 — 데스크톱 인스턴스에서 제공
- 클라우드 호스팅 — 제어 플레인이 할당한 전용 샌드박스에서 제공
정직한 경계
- 읽기 전용 공유는 의도된 선택입니다: 외부 수신자는 조회만 가능하며 공동 편집은 단일 사용자 샌드박스 아키텍처 범위 밖입니다
- 취소는 최종적이며 실시간 협업이 아닙니다 —
noindex/no-store가 소스에서 인덱싱을 막지만, 수신자가 이미 다운로드한 사본은 회수할 수 없습니다 - 비밀번호 게이트는 단일 요소 — 우발적 유출 방지용이며 엔터프라이즈급 접근 제어가 아닙니다
- 비밀번호 링크 재공유 시 새 비밀번호 필요 — 비밀번호는 저장되지 않으며(HMAC 파생), 취소 후 재공유에는 새 비밀번호가 필요합니다. 이는 의도된 설계로, 이전 비밀번호로 이전 링크를 재구축할 수 없습니다