LOOM, Prompt Builder가 내 컴퓨터에 자리 잡기까지

2026.10.26 08:17

Prompt Builder 이야기를 세 번에 걸쳐 적었습니다.

웹 서비스로 만든 과정, 템플릿 369개를 쌓은 과정, 그리고 웹을 떠나 로컬 앱으로 옮긴 과정입니다.

이번 글은 그 마지막 단계에서 나온 앱, LOOM 이야기입니다. 무엇이 들어 있는지보다, 왜 결국 여기까지 오게 됐는지를 적어보려 합니다.


시작은 "영어 프롬프트를 모르겠다"였습니다

AI 이미지를 처음 만들면 누구나 같은 벽에 부딪힙니다. 머릿속에 장면은 있는데, 그걸 영어 프롬프트로 어떻게 써야 할지 모릅니다. 인물, 의상, 포즈, 구도, 배경, 화질 표현까지 전부 직접 조합해야 하니까요.

그래서 처음에는 웹 서비스로 Prompt Builder를 만들었습니다. 템플릿을 고르고 드롭다운에서 하나씩 선택하면 영어 프롬프트가 조립되는 구조였습니다. 빈 화면에서 시작하는 것도 또 하나의 벽이라 템플릿을 하나씩 만들다 보니 369개가 됐습니다.


웹이라서 생긴 문제

웹 버전을 만들면서 가장 공을 많이 들인 부분은 정작 프롬프트가 아니었습니다. 인터넷에 있는 서버와 이용자 컴퓨터의 ComfyUI를 연결하는 일이었습니다.

서버는 이용자 컴퓨터의 127.0.0.1:8188에 접근할 수 없습니다. 그래서 이용자의 브라우저를 작업자로 세워 서버와 ComfyUI 사이를 중계하게 했습니다. HTTPS와 HTTP가 섞이면 브라우저가 막는 문제 때문에 서버 릴레이를 따로 만들었고, 그 릴레이가 악용되지 않도록 SSRF와 DNS Rebinding 방어까지 넣어야 했습니다.

돌아보니 이 복잡한 구조는 전부 프롬프트 빌더와 ComfyUI가 서로 다른 곳에 있어서 생긴 문제였습니다. 둘이 같은 컴퓨터에 있으면 이 문제는 처음부터 생기지 않습니다.


그래서 내 컴퓨터로

로컬로 옮기면서 웹에 있던 것들을 하나씩 내려놓았습니다.

  • 내 컴퓨터에서만 쓰니 로그인, 회원, 초대코드가 필요 없습니다.
  • 서버를 거칠 일이 없으니 릴레이와 그 보안 장치도 필요 없습니다.
  • AI 프롬프트 보정, 게시판, EXIF 분석, 작업 이력도 뺐습니다.

남긴 것은 실제로 매일 쓰는 흐름 하나입니다. 고르고, 조합하고, 바로 생성하고, 결과를 모아 보는 것.

그리고 "웹과는 절대 연동하지 않는다"는 원칙을 정했습니다. 처음에는 웹 DB를 옮기는 변환기도 만들었지만, 이 원칙을 정한 뒤 지우고 백업·복원 기능으로 바꿨습니다.


Prompt Builder가 아니라 LOOM인 이유

로컬 앱은 처음에 소스 폴더를 실행하는 얇은 껍데기였습니다. 이것을 소스 없이 혼자 도는 독립 앱으로 다시 만들면서 성격이 꽤 달라졌습니다. 웹 버전은 지금처럼 prompt.mifplus.com에서 계속 운영합니다. 같은 이름을 쓰면 둘이 섞여 보일 것 같아 새 이름을 붙였습니다.

LOOM은 베틀이라는 뜻입니다. 주제, 스타일, 조명, 구도 같은 실을 한 올씩 엮어 한 장의 이미지를 짜내는 도구라는 의미로 지었습니다.


LOOM으로 할 수 있는 것

단계별 빌더: 템플릿 → 인물 → 의상·포즈 → 배경 → 카메라·LoRA 순서로 고르면 프롬프트가 조합됩니다. 조합된 문장은 그 자리에서 직접 고칠 수 있습니다.

템플릿: {변수} 자리를 빌더의 선택 항목으로 쓰고, 스타일 분류와 썸네일을 붙여 관리합니다.

ComfyUI로 바로 생성: 평소 쓰던 API 형식 workflow에 프롬프트를 넣어 대기열로 보냅니다(⌘↵). ComfyUI 서버는 3개까지 등록해 둘 수 있습니다.

갤러리: 생성 결과를 모아 보고 대기 작업을 관리합니다. 빌더에서 다시 열기, 재생성, 여러 장 골라 지우기도 할 수 있습니다.

데이터 관리: 종류별 내보내기·가져오기, DB 백업·복원, 저장 위치 변경을 지원합니다.


빈 상태로 시작하는 앱

LOOM은 아무 데이터 없이 시작합니다. 템플릿, 의상 프리셋 같은 데이터는 묶음(zip)으로 따로 받아서 설정 → 데이터 → 가져오기로 넣습니다.

앱과 데이터를 분리한 이유는 단순합니다. 앱은 누구에게나 같아야 하지만, 어떤 템플릿과 프리셋을 쓸지는 사람마다 다르기 때문입니다. 같은 묶음을 두 번 가져와도 망가지지 않도록 중복 규칙도 정해 두었습니다.


실행 환경

  • macOS 13 이상 (Apple Silicon), Windows 10·11
  • Python 3.12 · PySide6 · SQLite
  • ComfyUI는 따로 설치해야 합니다.


마치며

웹 버전에서는 서버, 브라우저, 내 컴퓨터 사이를 오가는 구조를 만드느라 시간을 많이 썼습니다. LOOM은 그 모든 것이 한 컴퓨터 안에 있어 훨씬 단순합니다. 켜자마자 바로 고르고, 바로 만들 수 있습니다.

영어 프롬프트를 몰라도 원하는 장면을 만들 수 있게 하자는 처음 목표는 그대로입니다. 그 목표를 가장 간단하게 이루는 방법을 찾다 보니 여기까지 왔습니다.

소스는 GitHub에 있습니다: github.com/mifplus-git/LOOM

댓글 0

EG5X7 ↻
아직 댓글이 없습니다.