---
title: "AI 코딩 에이전트만으로 만든 네이티브 맥용 마크다운 뷰어"
published: 2026-05-19T21:57:19.000Z
canonical: https://jeff.news/article/3010
---
# AI 코딩 에이전트만으로 만든 네이티브 맥용 마크다운 뷰어

한 개발자가 네이티브 macOS 마크다운 뷰어를 공개했는데, 흥미로운 포인트는 앱 자체보다 구현 방식이다. Rust, Tauri 2, pulldown-cmark, ammonia, KaTeX, Mermaid.js를 조합했고, 초기 구현부터 후속 리팩터링까지 AI 코딩 에이전트가 전부 맡았다고 밝힌다.

- macOS용 네이티브 마크다운 뷰어가 Show HN에 올라왔는데, 포인트는 기능보다 'AI 코딩 에이전트 100%'라는 제작 방식임
  - 앱 이름은 Markdown Viewer고, Apple Silicon용 `.dmg`로 배포됨
  - 작성자는 Rust, CSS, JavaScript까지 초기 구현의 모든 줄을 사람이 직접 치지 않았다고 설명함
  - 초기 구현은 로컬 llama.cpp에서 돌린 Qwen3.6-35B-A3B-GGUF:BF16 모델이 맡았고, 이후 수정과 아키텍처 작업은 Claude Code가 했다고 함

- 기능 자체도 그냥 README 뷰어 수준은 아님
  - GitHub Flavored Markdown의 표, 체크리스트, 취소선, 자동 링크, fenced code block을 지원함
  - Obsidian 스타일의 `[[Page|label]]` 위키링크, 이모지 shortcode, 콜아웃도 처리함
  - 수식은 KaTeX로, 다이어그램은 Mermaid.js로 렌더링함
  - frontmatter는 제목, 설명, 태그, 상태 배지, 전체 메타데이터 패널로 보여줌

> [!IMPORTANT]
> 이 프로젝트의 가장 센 부분은 'AI가 샘플 코드를 짰다'가 아니라, 설치 파일 배포와 macOS 파일 연결, 릴리스 자동화까지 포함한 앱 형태로 정리됐다는 점임.

- 보안 쪽도 최소한의 방어선은 잡아놨음
  - 마크다운에서 나온 HTML은 Rust 라이브러리 ammonia로 sanitize한다고 밝힘
  - 외부 `.md`, `.markdown`, `.txt` 파일을 여는 뷰어 특성상 XSS 방어는 꽤 중요한 부분임
  - README는 'XSS-safe by default'라고 표현하지만, 실제 보안성은 허용 태그 정책과 렌더링 파이프라인을 봐야 정확히 판단 가능함

- 구조는 Tauri 2.x 기반의 Rust 백엔드 + 웹 렌더링 조합임
  - Markdown 파싱은 pulldown-cmark가 담당함
  - 텍스트 전처리는 regex, HTML 정리는 ammonia가 맡음
  - 렌더링 쪽에서는 Webview 위에서 HTML/CSS/JS, KaTeX, Mermaid.js가 움직임
  - 작성자는 '웹뷰 오버헤드 없음'이라고 적었지만, 구조 설명에는 Webview가 들어가 있어서 표현은 약간 애매함. 아마 Electron식 무거운 런타임이 없다는 의미에 가까워 보임

- macOS 앱으로서의 디테일도 꽤 챙겼음
  - Finder에서 `.md`, `.markdown`, `.txt` 파일을 더블클릭하면 앱으로 열리도록 파일 연결을 등록함
  - 앱 아이콘으로 드래그 앤 드롭해서 열 수 있고, 사이드바로 파일 간 이동도 가능함
  - 첫 실행 때 macOS quarantine 때문에 '앱이 손상됨' 경고가 뜰 수 있어서 `xattr -cr`로 지우는 안내도 있음

- AI 코딩 사례로 보면 꽤 현실적인 조합이 흥미로움
  - 로컬 모델이 초기 제품을 만들고, Claude Code가 Tauri 2.x 마이그레이션 정리, macOS 파일 열기 deadlock 조사, frontmatter 렌더링 재설계 같은 후속 작업을 맡았다고 함
  - 즉 '한 번에 완성'보다는 AI 에이전트를 이어 붙여 제품을 다듬은 케이스에 가까움
  - 작성자는 무분별한 AI 생성 PR은 권장하지 않는다고 적었는데, 이 대목이 은근 현실적임

---

## 기술 맥락

- 이 앱의 선택은 '마크다운을 예쁘게 보여주는 데스크톱 앱'을 만들면서 Electron 대신 Tauri 2를 고른 쪽에 가까워요. macOS에서 가볍게 뜨고 바이너리를 작게 유지하려면, 무거운 런타임을 통째로 싣는 방식보다 Rust 백엔드와 시스템 웹뷰 조합이 유리하거든요.

- Markdown 파싱을 pulldown-cmark에 맡긴 것도 자연스러운 선택이에요. Rust 앱 안에서 마크다운을 처리해야 하니, 파서부터 렌더링 전처리까지 같은 생태계에서 가져가면 배포와 성능 관리가 단순해져요.

- ammonia를 넣은 이유는 꽤 중요해요. 마크다운 뷰어는 사용자가 만든 문서만 여는 것 같아도, 실제로는 인터넷에서 받은 README나 노트 파일을 그대로 열 수 있거든요. HTML을 렌더링하는 순간 XSS 같은 문제가 생길 수 있어서, 렌더링 전에 정리하는 단계가 필요해요.

- KaTeX와 Mermaid.js는 개발자 문서용 뷰어라는 포지션을 강화해요. 요즘 README나 설계 문서에는 수식, 시퀀스 다이어그램, 상태 다이어그램이 섞이는 경우가 많아서, 단순 텍스트 뷰어로는 부족하거든요.

## 핵심 포인트

- GitHub Flavored Markdown, Obsidian 스타일 위키링크, 콜아웃, 수식, Mermaid 다이어그램을 지원한다
- HTML은 ammonia로 정리해 기본적으로 XSS에 안전하게 만들었다
- 초기 구현은 로컬 llama.cpp 기반 Qwen3.6 모델이, 후속 수정은 Claude Code가 담당했다
- 작성자는 사람 손으로 코드를 직접 치지 않고 제품 수준 앱을 만들었다고 주장한다

## 인사이트

이건 단순한 Show HN 앱 소개라기보다, AI 코딩 에이전트가 이제 데모를 넘어 배포 가능한 데스크톱 앱까지 밀어붙일 수 있다는 사례에 가깝다. 다만 README 자체가 제품 설명과 제작 일화를 섞고 있어서, 실제 품질 판단은 코드와 이슈를 같이 봐야 한다.
