포트를 고르는 것이 아니라 제공자를 고르세요
패널은 백엔드 선택기를 보여 줍니다 — Claude / ChatGPT / Gemini / Antigravity / Grok / Kimi / GLM / Ollama / LM Studio / llama.cpp / OpenRouter / 커스텀 엔드포인트 칩 (Copilot 같은 실험 제공자는 실험 토글 뒤에 나타납니다). 하나를 클릭하면 공유 오케스트레이터 하나에서 그 제공자에 연결합니다 (브리지 포트 하나가 모든 제공자를 서비스하고, 각 패널 탭이 핸드셰이크에서 제공자를 고릅니다). 브리지 URL은 사용자가 관리하는 오케스트레이터를 위해 고급 아래에 있습니다. 제공자를 전환하면 새 채팅이 시작됩니다 — 대화가 제공자 사이에 공유되지 않습니다 — 그리고 패널이 그렇게 말하는 시스템 노트를 게시합니다. 입력창 플레이스홀더는 활성 백엔드를 따릅니다 (“Claude에게 묻기…” / “Ollama에게 묻기…”).로그인 (제공자마다 한 번 — 또는 아예 안 해도 됩니다)
- Claude —
claude(또는claude setup-token) — claude.ai OAuth (구독). - ChatGPT (Codex) —
codex login— ChatGPT 로그인 (구독). Codex app-server를 통해 실행됩니다. - ChatGPT (직접 OAuth) —
codex login을 한 번이라도 실행했다면 추가 단계 없음:chatgpt백엔드가~/.codex/auth.json을 재사용하고 ChatGPT와 직접 대화합니다 (Codex 프로세스 없음). ack가 인증 파일이 없다고 하면,codex login을 한 번 실행하세요. - Gemini —
gemini— Google 로그인. 참고: 무료 개인 Google 로그인은 2026-06-18에 은퇴했습니다. Gemini CLI 백엔드는 이제GEMINI_API_KEY또는 엔터프라이즈/Code Assist 계정이 필요합니다. 개인 구독자: 아래 Antigravity를 쓰세요. - Antigravity (Google 구독) — antigravity.google에서
공식 Antigravity CLI를 설치하고,
agy를 한 번 실행해 Google 로그인을 완료하세요 (AI Pro/Ultra와 무료 티어). 백엔드는 턴마다agy -p를--continue대화 연속성과 함께 구동하고,agy models에서 라이브 모델 카탈로그를 읽으며, ComfyUI + 패널 MCP 도구를 병합 안전한 워크스페이스.agents/mcp_config.json을 통해 연결합니다. 설계상 줄어든 기능 (문서화된 기계 가독 이벤트 스트림 없음): 최종 답변 텍스트는 들어오지만, 도구별 진행과 이미지 입력이 없습니다. 대화 연속성은agy --continue를 씁니다 (계정의 최신 대화). 그래서 한 번에 Antigravity 탭 하나만 실행하세요 — 두 번째 탭, 또는 터미널의 인터랙티브agy세션이 스레드를 훔칠 수 있습니다.COMFYUI_MCP_ANTIGRAVITY_MODEL이 모델을 고정하고,COMFYUI_MCP_ANTIGRAVITY_PATH가 비표준 설치를 가리킵니다. - Grok — Grok CLI (xAI / Grok Build)를 설치하고
grok을 한 번 실행해 로그인하세요. 백엔드가 ACP 모드로 구동합니다. 패널은 또한 Grok이 준비되지 않았을 때 패널 안 OAuth 로그인 행을 제공합니다. - Kimi (권장) — Kimi Code CLI를 설치하고
kimi login을 실행하세요 (디바이스 코드 흐름). 백엔드가 그 로그인을~/.kimi-code/credentials/kimi-code.json에서 재사용합니다 (레거시~/.kimi경로는 여전히 폴백으로 읽힘). 이것은 Kimi Code 구독을 쓰며 Kimi를 실행하는 선호 방식입니다 — 아래의 토큰당 과금 Moonshot 키보다 싸고 한도가 높습니다. CI / CLI 없음 용으로만KIMI_API_KEY를 대신 설정하거나, 기본이 아닌 자격 증명 디렉터리를 가리키려면KIMI_CODE_HOME(KIMI_SHARE_DIR은 예전 이름을 설정한 사람을 위해 여전히 존중됩니다). 패널 안 OAuth 로그인도 제공됩니다. - GLM —
ZAI_API_KEY를 설정하세요 (Z.AI Coding Plan.GLM_API_KEY/ZHIPUAI_API_KEY도 받아들여짐). CLI 없음. - Kimi K3 (Moonshot) — Kimi Code 구독이 없을 때의 토큰당 과금 대안
(있으면 위의 Kimi 경로를 선호).
platform.kimi.ai에서
MOONSHOT_API_KEY를 설정하세요. CLI 없음. 이것은 Moonshot 플랫폼 키입니다 (기본 모델kimi-k3, 베이스https://api.moonshot.ai/v1) — 위의 Kimi 제공자와 구별됩니다. 그것은 Kimi Code 코딩 구독입니다. 모델은COMFYUI_MCP_MOONSHOT_MODEL로, 베이스는COMFYUI_MCP_MOONSHOT_BASE_URL로 재정의하세요. - MiniMax — platform.minimax.io에서
MINIMAX_API_KEY를 설정하세요. CLI 없음. 기본 모델은MiniMax-M3이고 기본 베이스는 글로벌 엔드포인트https://api.minimax.io/v1입니다 (OpenAI 호환, 평범한 Bearer 인증). 중국 지역은COMFYUI_MCP_MINIMAX_BASE_URL=https://api.minimaxi.com/v1를 설정하세요. 모델은COMFYUI_MCP_MINIMAX_MODEL로 재정의하세요. - Copilot (실험) — 패널의 실험 제공자 행에서 로그인하세요. 기본값은 꺼짐. 먼저 설정에서 실험 백엔드를 켜세요.
- Ollama (로컬) — 로그인 없음. Ollama를 설치하고 도구 호출
모델을 받으세요 (
ollama pull gemma4:e4b). 호스팅 모델이라면COMFYUI_MCP_OLLAMA_API=openai,COMFYUI_MCP_OLLAMA_BASE_URL(예:https://openrouter.ai/api/v1), 그리고 API 키 (COMFYUI_MCP_OLLAMA_API_KEY/OPENROUTER_API_KEY)를 설정하세요. - 커스텀 엔드포인트 — 로그인 흐름 없음. 설정 → 커스텀
엔드포인트에서 어떤 OpenAI 호환
/v1이든 가리키세요 (vLLM, DeepSeek, Together, Azure, 원격 llama-server). 서버가 키를 필요로 하면 거기에 API 키를 추가하세요 (마스킹된 입력, 오케스트레이터가 0600으로 저장). 로컬 LLM → 커스텀 엔드포인트를 참고하세요.
연결 시점의 준비 상태와 온보딩
모든 제공자 칩은 준비되지 않았을 때 정직하게 저하됩니다: 연결 ack가 빠진 정확한 단계를 말합니다 (“ZAI_API_KEY를 설정하세요…”, “codex login을 실행하세요…”,
“실험 행에서 로그인하세요…”) — 첫 메시지에서 실패하는 대신.
그리고 자격 증명이 나중에 나타나는 제공자는 재시작 없이 다음
연결에서 준비됨으로 뒤집힙니다.
패널은 연결 시점에 각 제공자의 준비 상태를 감지합니다 — 구독 제공자는
PATH의 CLI 더하기 디스크의 로그인, Ollama는 있는 바이너리
(멈춘 데몬은 연결 시 우아하게 저하). 어느 제공자가 설정되었는지
추측할 필요가 없습니다:
- 온보딩 카드는 어떤 제공자도 준비되지 않았을 때만 나타나며, 제공자마다 일회성 설정 단계가 있습니다 (Ollama는 로그인이 아니라 설치 + 모델 받기).
- 저장된 제공자 선택이 쓸 수 없으면, 패널이 준비된 제공자로 자동 전환합니다 (설정하면 저장된 선호가 복원됩니다).
- 준비되지 않은 제공자의 행은 동작 중인 에이전트에 설정 프롬프트를 심는 “설정” 작업이 됩니다.
각 제공자가 구동되는 방식
오케스트레이터는 제공자 중립AgentBackend 포트에
의존합니다 (의존성 주입). 각 제공자는 어댑터입니다:
panel_* 도구 정의는 공유 목록 하나에 살며, 모든 경로에
등록되므로, 라이브 캔버스 표면 (panel_clear / panel_restart_comfyui의
파괴적 확인 게이팅 포함)이 제공자 사이에
동일합니다. 패리티는 자동입니다 — 어떤 경로도 도구를 다시 구현하지 않습니다. Ollama/어떤-LLM
백엔드는 추가로 두 도구 표면을 라우터 도구 여섯 개 뒤에 감싸
작은 모델이 스키마에 빠지지 않게 합니다 — 로컬 LLM과 다른 에이전트를 참고하세요.
기능 매트릭스
백엔드별 기능 설명자가 제공자가 할 수 없는 기능에서 패널이 우아하게 저하하게 합니다:오디오 입력 — 어느 백엔드가 정직하게 지원하는가
에이전트는 모든 백엔드에서 ComfyUI의 오디오 도구를 구동할 수 있습니다. 오디오 파일을 듣는 것은 더 좁고, 위의 표는 의도적으로 보수적입니다. 조용히 떨어진 첨부가 거절된 것보다 나쁘기 때문입니다:-
Ollama (
ollama백엔드, 네이티브/api/chat) — 지원되고, 기능 확인되며, 처음부터 끝까지 검증됨. 오디오는images[]배열을 타며, 이것이 해킹이 아니라 Ollama 자체의 오디오 운반체입니다. 로컬 Ollama의gemma4:e2b에 대해 라이브로 확인했고, 실제 WAV를 받아적었습니다.- 제공자가 아니라 모델별. 무엇이든 보내기 전에 백엔드가
POST /api/show로 이 모델이audio기능을 보고하는지 묻습니다. 하지 않으면, 첨부가 이름으로 거절되고, 보고된 기능 목록이 인용되며, 들을 수 있는 모델이 말해집니다 (ollama pull gemma4:e2b/gemma4:e4b/nemotron3:33b). 참고:GET /api/tags도capabilities배열을 반환하지만 같은 답이 아닙니다 — 같은 모델이 거기서는 오디오 없음,/api/show에서는 오디오를 보고했습니다 — 그래서/api/show만 상담합니다. - 오디오를 실어 나르는 모든 턴에서 기능이 다시 확인됩니다. Ollama
태그가 가변적이기 때문입니다:
ollama pull이 같은 이름 아래 웨이트를 바꿀 수 있고, 캐시된 판결이 설명한 모델보다 오래 살 수 있습니다.
- 제공자가 아니라 모델별. 무엇이든 보내기 전에 백엔드가
-
LM Studio / llama.cpp / OpenRouter / GLM / Kimi / Moonshot / MiniMax /
Copilot / 커스텀 OpenAI 호환 엔드포인트 — 시도됨, 기능
확인되지 않음. 모두
/v1/chat/completions를 말하며, 물을 기능 엔드포인트가 없으므로, 오디오는input_audio콘텐츠 파트로 보내지고, 그 턴에 전달이 미확인이라고 말해집니다: “모델이 실제로 받는지 확인할 수 없습니다 — 답변이 파일에 있는 것을 반영하지 않으면, 듣지 못한 것입니다.” 대신 거절하면 기능 API가 없는 모든 엔드포인트에서 오디오를 막을 것입니다. 실행할 수 없는 가드는 판결이 아닙니다.input_audio형태 자체는 Ollama의 OpenAI 호환 엔드포인트에 대해 검증되었습니다. 주어진 서드파티 호스트가 존중하는지는 확인할 수 있는 것이 아니며, 그렇다고 주장하지 않습니다. -
Claude, ChatGPT (Codex), Codex CLI, Gemini, Grok, Antigravity, pi — 이
빌드에서 오디오 입력 없음. 오디오 첨부는 턴이 만들어지기 전에 거절되고,
당신과 모델 모두에게, 제공자를 이름 붙이고 대신 무엇이
동작할지 말합니다.
Gemini/Grok에서 이것은 프로토콜 공백이 아니라 의도적 생략입니다: ACP가
audioContentBlock을 정의하지만, 에이전트가 먼저audio프롬프트 기능을 광고해야 하고, 어느 CLI도 그렇게 하는 것이 관찰되지 않았습니다. 절대 연습될 수 없는 보내기 경로, 실패 모드가 사용자에게 도착하지 않았다고 말해지지 않는 첨부라면, 정직한 거절보다 나쁩니다 — 그래서 출시하지 않습니다.
Read/WebFetch를 이미지 콘텐츠에서 거부하는 PreToolUse 게이트와 함께
실행됩니다 (확장자 그리고 매직 바이트로 래스터 파일, PDF, 노트북 출력,
ComfyUI /view URL) — 호출마다 라이브로 읽으므로, 세션 도중 토글이
바로 다음 도구 호출에 묶입니다. API/로컬 레인 (Ollama 계열, GLM, Kimi, 커스텀
엔드포인트)는 우리 도구 표면만 싣므로, MCP 스크럽이 완전히 커버합니다.
CLI 레인 (Codex, Gemini, Grok, Antigravity, pi, Copilot)은 자체
에이전트 바이너리를 실행하며 내장 파일 도구를 훅할 수 없습니다 — 거기서
가림을 켜면 지킬 수 없는 보장을 암시하는 대신, 정확히 그렇게
말하는 보이는 경고를 게시합니다.
오디오 파일이 턴에 올라가는 방식
오케스트레이터는 패널message 프레임에서 오디오를 두 방식으로 받습니다:
images만 아는 패널 빌드가
그렇지 않으면 오디오 파일을 비전 콘텐츠 파트에 건넬 것이기 때문입니다. 오디오
확장자가 있는 모든 것은 자동으로 오디오 경로로 옮겨집니다 — 인코딩할 수
없는 형식(.wma, .mid, .aiff)도. 그래서 이미지 오류 대신 “다음 중 하나로
변환하세요…”를 받습니다.
같은 파일을 두 배열에 보내는 것(위의 예처럼)은 안전합니다: 참조가
파일명 + 하위 폴더 + 타입으로 식별되므로, 한 번 전달되고
턴당 첨부 두 개 한도에 한 번만 셉니다. 두 번째 파일로 오인되어
맞지 않는다고 거절되지 않습니다.
오디오 파일을 고르는 입력창 컨트롤은 패널
(
comfyui-mcp-panel)에 살며, 별도 저장소입니다 — 그 부분은 이
릴리스에 없습니다. 착지할 때까지, 위의 와이어 계약이 클라이언트가 보내는 것이고,
경로는 오케스트레이터 측에서 처음부터 끝까지 연습됩니다./revert, Esc 두 번, 턴별
스냅샷)은 제공자가 아니라 오케스트레이터에 살므로 모든 백엔드에서
동작합니다.
전환할 때의 추론 강도
강도/모델 선택기는 제공자별입니다. 고른 강도는 제공자 전환을 대상 백엔드의 가장 가까운 유효 레벨로 매핑하여 견딥니다 (패널과 오케스트레이터 백엔드가 같은 매핑을 합니다):- Claude:
low·medium·high·xhigh·max - ChatGPT (Codex):
none·minimal·low·medium·high·xhigh·max·ultra(GPT-5.6 계열 모델의max/ultra) - Gemini / Ollama: 사용자 대면 강도 스케일 없음 — 선택기가 숨겨집니다.
지식과 비용 패리티
Claude만 네이티브 스킬을 로드할 수 있으므로, 번들된 전문 지식은 어떤 백엔드든 호출할 수 있는 MCP 도구 하나로 게시됩니다 —list_packs. 그 액션이
스킬 (skill_list, skill_read), 설치 팩 (list,
read_workflow), 서버의 템플릿 (list_templates)을 커버합니다 — 더하기
로컬 GPU 대 유료 API 가드레일 (action: "check_runtime")과 원샷
panel_load_workflow. 스킬, 팩 & 런타임 비용을 참고하세요.
참고
- 사이드바 패널 — 전체 패널 UX
- 로컬 LLM과 다른 에이전트 — 6도구 라우터, 모델 요구 사항, Hermes/OpenClaw/Copilot 설정
- LLM 아레나 — 실제 ComfyUI 작업으로 자신의 모델 점수 매기기
- 스킬, 팩 & 런타임 비용 — 패리티 + 비용 도구
- 설계 문서:
design/agent-backend-injection.md