DAY 01작업 1일째

이미 쓰던 ComfyUI에 끼어들지 않는 로컬 브리지

콘티 작업실 화면을 내 PC의 ComfyUI에 붙이면서, 같은 엔진으로 돌던 다른 생성 작업을 방해하지 않도록 브리지의 할 일을 좁혔다.

콘티를 그리고 장면을 적는 작업실 화면은 정적 HTML과 JavaScript로 먼저 만들었다. 실제 그림은 이 PC에 이미 설치된 ComfyUI의 Qwen Image 2.1이 그린다. 문제는 두 가지였다. 브라우저 화면이 ComfyUI에 직접 요청을 보내게 하면 화면이 어떤 작업 그래프든 실행할 수 있게 된다. 그리고 같은 ComfyUI로 다른 이미지 작업도 돌리고 있어서, 프레임 스튜디오가 그 작업을 끊거나 대기열에 끼어들면 안 됐다.

화면과 엔진 사이에 브리지를 둔다

Python 서버(server.py) 하나가 작업실 화면을 내주고, 생성 요청을 받아 ComfyUI에 전달한다. 화면은 콘티 이미지, 장면 설명, 그림체, 품질, 시드처럼 정해진 값만 보낸다. 실제로 실행할 작업 그래프는 서버가 그 값으로 조립한다. 그래프는 글만 있을 때, 콘티만 있을 때, 콘티와 참조 이미지가 함께 있을 때, 참조 이미지만 있을 때의 네 가지다.

브리지가 하지 않는 일을 먼저 정했다.

하지 않는 것대신 하는 것
바깥에서 접속받기127.0.0.1에서만 듣고, 다른 출처에서 온 변경 요청은 거절한다
화면이 보낸 그래프를 그대로 실행정해진 값으로 서버가 그래프를 조립한다
ComfyUI의 아무 기능이나 대신 호출생성, 진행 상태, 결과, 취소, 설치된 LoRA 목록처럼 작업실에 필요한 길만 연다
다른 작업이 있는데 새 작업 넣기실행 중이거나 대기 중인 작업이 있으면 거절한다
전체 작업 중단이 서버가 만든 작업 ID만 취소한다

같은 그래프는 ComfyUI의 워크플로 메뉴에도 FrameStudio 폴더로 따로 넣어, 화면 없이 ComfyUI에서 직접 열어 볼 수 있게 했다. 기존 워크플로와 ComfyUI 본체는 건드리지 않았다.

웹에 올린 버전은 PC의 그래픽카드에 닿을 방법이 없어서, 생성 결과 대신 표시해 둔 샘플을 보여 주는 체험판으로 두었다. 실제로 생성하려면 「로컬 작업실 열기」로 내 PC의 주소로 넘어간다.

감수한 것

다른 작업이 있으면 거절하는 방식은 프레임 스튜디오가 먼저 양보하는 장치일 뿐이다. 서로 모르는 여러 앱이 같은 순간에 요청을 넣는 경쟁까지 막아 주는 공용 예약기는 아니다. 그리고 브리지가 정해진 그래프만 다루니, 새로운 생성 방식을 더할 때마다 서버의 그래프 조립도 같이 고쳐야 한다.

기록 #01 · 2026.09.24