허깅페이스(Hugging Face)가 웹 브라우저 기반 AI 추론 라이브러리 Transformers.js에 Cross-Origin Storage(COS) API를 실험적으로 지원하기 시작했다. COS는 표준화 초기 단계에 있는 웹 API 제안으로, 서로 다른 출처(origin)의 웹 앱이 동일한 파일을 URL이 아닌 SHA-256 암호화 해시 값으로 식별해 공유 캐시에서 직접 가져오는 방식이다. 현재 브라우저는 보안·프라이버시를 이유로 출처별로 캐시를 격리하기 때문에, 동일한 AI 모델 파일이라도 서로 다른 웹사이트에서 각각 독립적으로 다운로드하고 저장해야 한다. 허깅페이스에 따르면 두 출처에서 같은 Whisper 모델을 사용할 경우 COS 도입 전에는 177MB의 중복 다운로드가 발생한다.
COS의 핵심 원리는 파일을 URL 대신 해시로 식별하는 것이다. 해시가 동일하면 어느 출처에서 다운로드했든 같은 파일로 인식해 공유 저장소에서 바로 제공한다. 최초로 다운로드한 앱이 파일을 COS에 저장할 때 origins 옵션으로 공개 범위를 지정하고, 이후 다른 출처의 앱은 같은 해시를 조회해 네트워크 요청 없이 즉시 활용할 수 있다. 브라우저는 파일을 COS에 쓸 때 해시 일치 여부를 자동으로 검증하므로, CDN이나 미러 서버가 잘못된 바이트를 제공하더라도 무결성이 보장된다. 또한 드물게 사용되는 파일이 사용자 브라우징 이력 식별에 악용되는 것을 막기 위해, 충분히 많은 출처에서 공유된 파일만 존재 여부를 응답하는 가용성 게이팅(availability gating) 메커니즘도 포함됐다.


Transformers.js는 이 제안 API를 PR #1549를 통해 실험적 캐시 백엔드로 도입했다. 개발자는 첫 번째 pipeline() 호출 전에 env.experimental_useCrossOriginStorage = true 한 줄을 추가하면 된다. 이 플래그가 활성화되면 Transformers.js는 각 모델 파일의 SHA-256 해시를 허깅페이스 Xet 포인터에서 추출해 COS 조회 키로 사용하고, 캐시에 없을 경우에만 네트워크에서 다운로드해 이후 방문자를 위해 COS에 저장한다. Wasm 런타임 파일인 ort-wasm-simd-threaded.asyncify.wasm(약 4.7MB)도 같은 방식으로 공유되어, 모델 종류와 무관하게 모든 Transformers.js 기반 앱이 이 파일 하나를 공동으로 활용할 수 있다.
COS API는 현재 어떤 브라우저에도 기본 탑재되지 않았지만, Chrome 팀이 네이티브 구현을 검토 중이다. 현재는 Cross-Origin Storage 확장 프로그램을 설치해 폴리필(polyfill) 형태로 전체 흐름을 테스트할 수 있다. WebLLM과 wllama 등 다른 브라우저 AI 라이브러리도 COS 실험에 참여하고 있으며, 허깅페이스는 개발자들에게 앱에 opt-in을 적용해 경험을 공유해 줄 것을 요청했다. COS를 지원하지 않는 환경에서는 기존 Cache API 경로로 자동 폴백되므로 하위 호환성 문제는 없다.














