html-anything을 처음 켜면 익숙한 그림이 잠깐 흔들린다. 로컬에 살고 있는 Claude Code, Cursor, Codex, Gemini, Copilot, OpenCode, Qwen, Aider가 HTML을 직접 쏟아내는데, 그 결과가 곧장 브라우저 페이지로 뜨는 게 아니라 'sandboxed preview'라는 격리된 박스 안에서 먼저 굴러간다. 에이전트가 자유롭게 마크업을 휘두를 수 있는 폭과, 그것이 진짜 채널로 나가기 직전에 사람이 멈춰 볼 수 있는 한 겹—그 두 가지를 동시에 설계한 도구다.
구조를 들여다보면 더 분명해진다. 75개의 Skill은 9개의 Surface, 즉 magazine·deck·poster·XHS·tweet·prototype·data report·Hyperframes 위에서만 동작한다. 자유로운 HTML 대신 형식이 먼저 정해져 있고, 에이전트는 그 형틀의 빈칸을 채우는 역할에 가깝다. 그래서 출력의 변이는 통제되고, sandbox는 그 중간에서 임시 스크립트·외부 요청·인라인 스타일이 진짜 페이지로 새지 않게 막는 1차 경계 역할을 한다.
진짜 결정은 export 버튼을 누를 때 일어난다. WeChat 공식 계정, X, Zhihu, 그리고 HTML과 PNG—한 번의 sandbox 미리보기가 다섯 갈래로 갈라진다. 같은 마크업이지만 WeChat 인라인 HTML, Zhihu 본문, X 카드, 정적 HTML, 그리고 픽셀로 굳은 PNG는 살아남는 요소가 서로 다르다. 어떤 인터랙션은 PNG에서 사라지고, 어떤 웹폰트는 WeChat에서 깨지고, 어떤 외부 스크립트는 Zhihu의 화이트리스트에 막힌다. 본체가 책임지는 건 바로 이 '신뢰 이전'의 순간이다.
Zero API key 정책도 같은 흐름 위에 있다. 본체는 LLM provider를 추상화하지 않고, 키와 요금과 rate limit을 전부 IDE 에이전트 쪽으로 밀어 넘긴다. 결과적으로 html-anything이 자기 안에 들고 있는 건 모델이 아니라 '형식 × 격리 × 채널 분기'라는 세 개의 레이어다. 에이전트의 화려한 출력 위에 사람이 마지막으로 손을 얹을 자리를 남겨두는 방식—그게 이 프로젝트가 단순한 HTML 생성기와 갈리는 지점이다.