권기택 Gitaek Kwon

Artiview — 코딩 에이전트가 쏟아내는 HTML을 위한 로컬 갤러리

에이전트 산출물이 디스크와 서버에 수백 장 쌓이기 시작했을 때, 사진 앱처럼 훑어보고 본문으로 검색하는 데스크톱 앱을 만들었습니다

코딩 에이전트에게 일을 시키면, 요즘은 결과가 채팅이 아니라 파일로 옵니다. 벤치마크 결과는 HTML 리포트로, 실험 정리는 Markdown으로, 발표자료 초안도 HTML 한 장으로. 처음엔 좋았습니다. 그런데 몇 주가 지나자 이런 파일이 로컬에 수백 개, 에이전트가 돌아가는 서버에도 수백 개 쌓여 있었습니다.

문제는 다시 찾을 때 시작됩니다. 지난주에 에이전트가 만들어준 모델 비교 리포트 — 파일명이 report.html이었는지 comparison_final_v2.html이었는지 기억날 리가 없습니다. Finder 썸네일은 HTML을 렌더링해주지 않고, Spotlight는 태그 범벅인 HTML 본문에 약하고, 서버에 있는 파일은 일단 scp로 받아와야 열어볼 수 있습니다. "분명 어딘가 있는데"를 매일 반복하다가, 만들었습니다.

Artiview는 그 폴더들을 사진 앱처럼 훑어볼 수 있는 라이브러리로 바꿔주는 데스크톱 앱입니다. MIT 라이선스로 공개했습니다.

Artiview 데모 — 라이브러리 탐색, 전문 검색, 문서 내 검색, 라이트/다크 테마

라이브러리 탐색 → 본문 전문 검색 → 문서 내 검색 → 라이트/다크 테마

쓰는 방법은 5분이면 끝납니다

  1. 사이드바에서 + 를 눌러 에이전트 결과물이 쌓이는 폴더(예: ~/agent-reports)를 등록합니다. 하위 폴더까지 .html .md .pdf .txt 와 이미지가 전부 스캔·색인됩니다.
  2. 그리드가 채워지는 걸 봅니다. 각 카드는 실제 문서를 축소 렌더링한 라이브 썸네일입니다 — 스크린샷 캐시가 아니라서, 에이전트가 파일을 다시 쓰면 썸네일도 따라 바뀝니다.
  3. 그리고 그냥 켜 둡니다. 등록한 폴더는 자동으로 감시되기 때문에, 에이전트가 새 리포트를 만들면 몇 초 안에 라이브러리에 나타납니다. 새로고침 버튼을 누를 일이 없습니다.

만들면서 가장 신경 쓴 디테일들

검색이 두 겹입니다. 라이브러리 검색은 파일명이 아니라 모든 문서의 본문(SQLite FTS5)을 뒤집니다. 파일명이 output_final_v3.html이어도 본문에 "매출"이 있으면 매출로 찾습니다. 문서를 연 뒤에는 ⌘F로 문서 내 검색 — 일치 항목이 그 자리에서 하이라이트됩니다.

서버 폴더도 로컬처럼 씁니다. 에이전트는 GPU 서버에서 돌 때가 많아서, SSH/SFTP 지원은 옵션이 아니라 필수였습니다. user@host와 경로만 넣으면(경로는 셸처럼 Tab 자동완성됩니다) 원격 폴더가 등록되고, 썸네일·검색·태그가 로컬과 완전히 똑같이 동작합니다. 원격 HTML 안의 이미지와 CSS까지 SFTP로 스트리밍해서 그려줍니다.

파일이 없어져도 침착합니다. 파일은 이동되고, 드라이브는 뽑히고, 서버는 내려갑니다. Artiview는 성급하게 지우지 않습니다 — 없어진 파일은 배지로 표시만 하고 태그·즐겨찾기를 보존했다가, 드라이브가 돌아오면 첫 스캔에서 원래대로 복구합니다.

신뢰에 대한 세 가지 약속

수백 장의 문서를 다루는 앱이라, 뼈대가 되는 원칙을 먼저 정하고 시작했습니다.

  1. 원본 파일을 절대 수정·삭제하지 않습니다. 읽고 색인만 합니다. 앱 안의 모든 "제거"는 색인 항목만 지웁니다.
  2. 모든 데이터는 로컬에 있습니다. 색인은 내 컴퓨터의 SQLite 파일 하나이고, SSH 비밀번호는 디스크에 기록되지 않습니다.
  3. 신뢰할 수 없는 문서는 샌드박스에서 렌더링합니다. 내가 직접 쓰지 않은 HTML을 하루에도 수백 장 렌더링하는 앱입니다. 악성 문서가 앱이나 시스템 권한을 얻지 못하도록, 모든 문서는 allow-same-origin 없는 iframe 안에서만 열립니다.

스택 이야기

Tauri 2 위에 Rust 백엔드 + React 프론트엔드 구성입니다. 파일 스캔·SQLite(FTS5)·SSH 연결 풀처럼 신뢰성이 중요한 부분은 Rust가 맡고, UI는 웹 스택으로 빠르게 만들었습니다. 원격 콘텐츠는 커스텀 remote:// 프로토콜이 SFTP를 프록시하는 구조라, 프론트엔드 입장에서는 로컬 파일과 원격 파일이 구분되지 않습니다. CI는 PR마다 macOS/Windows/Linux 번들을 빌드합니다.

써보기

Releases에서 macOS(Apple Silicon)·Windows·Linux 빌드를 받을 수 있습니다. 미서명 앱이라 macOS에서는 첫 실행 시 우클릭 → 열기가 필요합니다. UI는 영어·한국어를 지원하고 시스템 테마를 따릅니다.

여러분의 에이전트도 디스크를 어지르고 있다면 한번 써보세요. 피드백과 이슈는 GitHub로 환영합니다.