FreeUltraCode: 20개 이상의 무료 LLM 채널을 제공하는 AI 코딩 도구
요약
Claude Code와 Codex의 강력한 멀티 에이전트 워크플로우가 초래하는 막대한 API 비용 문제를 분석합니다. 이를 해결하기 위해 GitHub Models, Hugging Face, Groq 등 다양한 무료/저비용 LLM 채널을 활용하는 대안을 제시합니다.
핵심 포인트
- Claude Code의 동적 워크플로우는 강력하지만 에이전트 수에 따라 비용이 급증함
- 멀티 에이전트 오케스트레이션은 필수적이나 지속 가능한 비용 관리가 관건
- GitHub Models, Groq 등 무료/저비용 API 채널을 통한 비용 절감 가능
저는 10년 넘게 게임 개발자로 일해 왔습니다. Unity C#, Unreal C++, 그리고 몇몇 커스텀 엔진들을 다루었죠. 작년부터 Claude Code와 Codex CLI를 본격적으로 사용하기 시작했습니다. 단순히 "정렬 함수 하나 써줘" 같은 수준이 아닙니다. 전체 렌더링 파이프라인(rendering pipeline)을 읽고, 수십 개의 파일에 걸쳐 로직을 수정하며, 물리 디버깅 도구(physics debug tooling)를 추가하고, 멀티스레드 레이스 컨디션(multi-threaded race conditions)을 해결하는 작업을 말하는 것입니다.
Claude Code는 정말 확실합니다. 먼저 프로젝트 구조를 읽고, 호출 그래프(call graph)를 추적한 다음 변경 사항을 적용합니다. 빌드를 실행하고, 에러를 포착하며, 스스로 디버깅하고, 통과할 때까지 반복합니다. Codex 역시 매우 날카롭습니다. 특히 GCC가 C++ 템플릿 에러를 벽처럼 쏟아낼 때, 그 노이즈를 사람이 읽을 수 있는 진단 결과로 변환해 줍니다.
하지만 청구되는 비용이 엄청납니다.
동적 워크플로우(Dynamic Workflows)는 강력합니다. 비용도 마찬가지죠.
Claude Code의 동적 워크플로우(Dynamic Workflows)에 대해 설명해 보겠습니다. 이것은 별도의 "유료 기능"이 아닙니다. 내장된 실행 시스템입니다. agent(), parallel(), pipeline(), consensus()를 사용하여 .js 스크립트를 작성하면, Claude Code가 순차적, 병렬적, 투표 방식, 게이팅(gating) 등을 통해 실행을 조율하며 완전히 자동화된 방식으로 운영합니다.
다음은 간단한 코드 리뷰 워크플로우입니다:
parallel([
agent("잠재적 버그 스캔"),
agent("보안 취약점 점검"),
...
4개의 에이전트가 병렬로 스캔하고, 하나의 합의(consensus) 노드가 투표를 집계합니다. 깔끔하죠.
하지만 규모를 키우면 이는 컴퓨팅 블랙홀이 됩니다. 5개의 에이전트가 포함된 하나의 병렬 블록, 3단계로 구성된 파이프라인, 그리고 각 단계마다 5개의 에이전트가 추가로 생성된다고 가정해 봅시다. 3단계 깊이까지 들어가면 무려 75개의 에이전트가 실행됩니다. 각 에이전트는 독립적인 API 호출을 수행하고, 파일을 읽고, 추론하며, 결과물을 출력합니다. 단 한 번의 복잡한 리팩토링(refactor)만으로도 수십 또는 수백 개의 에이전트가 생성될 수 있습니다. 단 한 번의 실행에 수천 번의 API 호출이 발생하는 것이죠.
동적 워크플로우 자체에 추가 비용이 드는 것은 아닙니다. 하지만 이는 "에이전트가 많아질수록 토큰(token)이 많아지는" 구조입니다. 즉, 비용은 에이전트 수에 따라 선형적으로 증가합니다. 대규모 리팩토링 작업에 100개의 Claude 에이전트를 실행한다면, 월간 예산이 얼마든 상관없이 토큰 비용이 예산을 초과해 버릴 것입니다.
진정한 갈등 요소: 멀티 에이전트 오케스트레이션 (multi-agent orchestration)은 필수적이지만, 에이전트 군단 전체에 대해 프리미엄 요금을 지불하는 것은 지속 가능하지 않습니다.
무료 모델은 도처에 있지만 — 흩어져 있습니다
저는 다음과 같은 무료/저비용 채널들을 위한 API 키를 보유하고 있습니다:
- GitHub Models — 속도 제한(rate limits)이 있는 무료 플레이그라운드 액세스, GitHub 토큰 (
models:read스코프) 필요 - Hugging Face Router — 매월 무료 추론 제공자 (Inference Provider) 크레딧 제공
- SambaNova Cloud — 무료 티어 (Free Tier), 결제 수단 불필요, 일일 요청/토큰 제한 있음
- Together AI — 가입 시 무료 체험 크레딧 제공
- Groq — 무료 티어, 진정으로 빠른 추론 (inference)
- Gemini — Google 무료 티어
- DeepSeek / Kimi — 매우 저렴함
- NVIDIA NIM / OpenRouter / Mistral / Cerebras / Fireworks / Z.ai — 각각 무료 또는 체험 액세스 제공
- LLM7 / Kilo Gateway — 키가 필요 없는 채널, 바로 사용 가능
- 로컬: Ollama / LM Studio / llama.cpp
옵션은 풍부합니다. 하지만 모든 채널이 개별적인 등록, 키 관리, 그리고 환경 변수(environment variables) 설정을 요구합니다. 오늘 Groq를 써보고 싶나요? 키를 찾기 위해 이메일을 뒤져야 합니다. 내일 SambaNova의 DeepSeek-V3.1을 쓰고 싶나요? 또 한 번의 설정 과정을 거쳐야 합니다.
그리고 진짜 문제는 이것입니다: 저렴한 모델을 가지고 있다고 해서 그 모델이 좋은 코드를 작성한다는 의미는 아닙니다. 무료 모델은 Claude Code나 Codex와 비교했을 때 단일 패스(single-pass) 품질이 떨어집니다. 즉, 추론 (reasoning)이 얕고, 긴 파일에서 컨텍스트 드리프트 (context drift)가 발생하며, 복잡한 리팩토링 (refactor) 작업 시 미흡합니다. 이것이 대부분의 사람들이 무료 키를 수집하면서도 결국 월말에는 Claude에 비용을 지불하는 이유입니다.
제가 해결하고자 했던 것: 워크플로우 (workflows)를 통해 오케스트레이션된 무료/저렴한 모델들을 사용하여, Claude Code 및 Codex와 대등한 수준의 코드 품질을 생산하는 것. 저렴한 모델 하나로는 경쟁할 수 없습니다. 하지만 다섯 개의 모델을 조립 라인(assembly line)에 올려놓고 — 계획, 실행, 검토, 교차 검증 — 구조와 협업을 통해 품질 격차를 줄인다면 가능합니다.
FreeUltraCode: 하나의 드롭다운, 모든 채널
FreeUltraCode는 로컬 데스크톱 앱입니다 (Tauri 2 + Rust, GitHub 소스 코드). 이 앱이 하는 일은 매우 단순합니다:
채널 전환을 위한 드롭다운 메뉴.
하단의 채널 선택기(Channel selector)에는 사용자가 설정한 모든 채널이 나열됩니다. 하나를 선택하면 대화가 해당 채널을 통해 진행됩니다. 설정 과정은 세 단계로 이루어집니다: 채널 선택 → 제공업체 사이트에서 키를 받기 위해 "Register" 클릭 → 키를 다시 붙여넣기. 상태가 초록색으로 변하면 완료됩니다.
프록시(Proxy)나 VPN이 필요하지 않으며, 사용자를 대신해 등록 절차를 수행하지도 않고, 어떤 서버에도 키를 저장하지 않습니다. 모든 설정, 채팅 기록, API 키는 사용자의 로컬 머신에 머무릅니다.
결정적으로: 세션 중간에 채널을 전환해도 컨텍스트(Context)가 유지됩니다. 파일 참조, 중간 결론, 도구 출력값 등 모든 내용이 전환 시 그대로 이어집니다. 컨텍스트를 다시 입력할 필요가 없습니다.
실제 사용 사례 (게임 개발)
작업: "이 3인칭 캐릭터 컨트롤러에 등반 시스템을 추가해줘"
1단계 → GitHub Models / Groq로 전환
...
Free Auto: 도구가 채널 전환을 처리하도록 하기
어떤 모델이 작업에 적합한지 알고 있을 때는 수동 전환이 유용합니다. 하지만 가끔은 고민하고 싶지 않을 때가 있습니다. 새벽 2시에 CI(지속적 통합)가 린팅(Linting) 작업에서 실패했을 때, 그저 아무 무료 채널이나 사용하여 문제를 해결하고 자신을 괴롭히지 않기를 바랄 뿐입니다.
이때 Auto 채널(freecc:auto, 드롭다운의 첫 번째 옵션)이 등장합니다. 이것은 고정된 업스트림(Upstream)이 아니라 **스마트 라우터(Smart router)**입니다:
- 원하는 만큼의 무료 채널에 대해 키를 설정합니다.
- Auto로 전환하고 요청을 보냅니다.
- 프록시가 채널들을 순환하며 탐색합니다 — 유효한 응답을 가장 먼저 반환하는 채널이 선택됩니다.
- 429 오류(Rate limit, 속도 제한)가 발생하면? 자동으로 건너뛰고, 재시도 전 30초의 쿨다운(Cooldown) 시간을 갖습니다.
- 5xx 오류(Upstream down, 업스트림 다운)가 발생하면? 실패로 표시하고 이번 라운드에서는 건너뜁니다.
- 모든 채널이 소진되면? 무엇이 왜 실패했는지 보여주는 실패 로그와 함께 503 오류를 반환합니다.
연결 타임아웃(Connection timeouts)은 예산 내에서 관리됩니다 — 하나의 느린 업스트림에 매달려 대기하지 않습니다. 성공한 채널은 자연스럽게 우선순위를 갖게 되며(깨끗한 쿨다운 상태), 문제가 있는 채널은 뒤로 밀려납니다.
최종 효과: 요청을 보내면 결과가 돌아오며, 채널 전환은 보이지 않게 이루어집니다. 8개의 채널을 설정하면 Auto는 8개 채널의 페일오버(Failover, 장애 극복) 풀이 됩니다 — 하나가 다운되면 다음 채널이 업무를 이어받습니다.
Auto는 모델을 고정(Lock)할 수도 있습니다. 설정(Settings)에서 z-ai/glm-5.1과 같은 모델 오버라이드(Model override)를 설정하면, Auto가 Groq, Together 또는 DeepSeek로 라우팅하더라도 모두 동일한 모델을 실행하도록 요청됩니다. 원하는 모델의 품질을 명확히 알고 있을 때 유용합니다.
실제 시나리오 (게임 개발):
새벽 2시. CI가 빨간색(Red)입니다. Claude Code 세션에서 발생한 린트(Lint) 에러 때문입니다.
...
로컬 프록시(Local Proxy): 전역 설정 변경 없이 여러 라인을 동시에 사용
cc-switch와 같은 도구들도 동일한 문제를 해결하지만, 이들은 Claude Code의 전역 환경 변수(Global environment variables)를 수정하는 방식을 사용합니다 — 채널을 전환하거나 ANTHROPIC_BASE_URL을 변경하는 식입니다. 이는 한 번에 하나의 채널만 사용할 수 있음을 의미하며, 모든 것에 전역적으로 영향을 미칩니다. 두 번째 터미널 창을 열어도 동일한 채널이 적용됩니다.
FreeUltraCode는 다른 길을 택했습니다. 127.0.0.1에서 Rust 기반의 로컬 리버스 프록시(Reverse proxy)를 실행하여 포트 경로(Port path)별로 라우팅합니다. Claude Code는 어떠한 설정 변경도 필요하지 않습니다 — 여전히 Anthropic의 공식 API와 통신하고 있다고 인식합니다:
Claude Code → 127.0.0.1:8766/ch/official → Anthropic 공식
Claude Code → 127.0.0.1:8766/ch/deepseek → DeepSeek
Claude Code → 127.0.0.1:8766/ch/kimi → Kimi
...
각 채널은 고유한 포트 경로에 매핑되어 서로 간섭하지 않습니다. 공식 Claude, DeepSeek, 그리고 Kimi Claude Code 세션을 모두 동시에 실행할 수 있습니다. 프록시는 Anthropic ↔ OpenAI 프로토콜 변환(Protocol translation)을 처리합니다 — 업스트림(Upstream)이 OpenAI 방식을 사용하면(Groq, Together, DeepSeek), 프록시가 이를 변환하고, Anthropic 방식을 네이티브로 사용하면(Kimi, Z.ai) 그대로 통과(Pass through)시킵니다.
더욱 뛰어난 점은 **단일 Claude Code 세션 내에서의 동적 채널 전환(Dynamic channel switching)**이 가능하다는 것입니다. Claude Code는 호출할 때마다 환경 변수에서 ANTHROPIC_BASE_URL을 읽어오는데, FreeUltraCode의 게이트웨이는 요청(Per-request)마다 이 값을 주입합니다. 즉, 다음과 같은 작업이 가능합니다:
1라운드:
DeepSeek가 프로젝트 구조를 스캔하여 문제를 찾아냄 → 저렴함
...
터미널을 재시작할 필요도 없습니다. 파일 참조나 중간 결론을 다시 입력할 필요도 없습니다. 문제 식별에는 DeepSeek를, 실제 수정에는 Claude를 사용하여 — 각 모델이 가장 잘하는 일을 수행하며, 비용은 통제된 상태로 유지합니다.
| cc-switch | |
|---|---|
| Config approach | 전역 환경 변수(global env vars) 수정 |
| FreeUltraCode | 게이트웨이(Gateway) + 포트 포워딩(port forwarding), 전역 변경 없음 |
| ... |
/ultracode: 저렴한 모델로 만드는 프리미엄 결과물
이것이 FreeUltraCode의 핵심입니다. 한 줄의 자연어 작업, 자동 생성된 실행 계획, 병렬 서브 에이전트(sub-agents) — 계획(planning), 실행(execution), 검토(review), 적대적 검증(adversarial verification), 수락 게이트(acceptance gates) — 이 모든 파이프라인이 사용자의 무료 채널에서 실행됩니다.
fuc ultracode "무기 데미지 계산을 클라이언트에서 서버로 이동하고, 예측 롤백(prediction rollback)을 처리해줘"
자동 선택되는 6가지 내장 전략: 분류 및 실행(classify-and-act), 팬아웃 및 합성(fan-out-and-synthesize), 적대적 검증(adversarial-verification), 생성 및 필터링(generate-and-filter), 토너먼트(tournament), 완료될 때까지 반복(loop-until-done).
기저 논리: 단일 모델의 심층 추론(deep reasoning)을 구조화된 파이프라인(structured pipelines)으로 대체하는 것입니다. 하나의 저렴한 모델이 혼자 고군분투하는 대신 → 다섯 개의 저렴한 모델이 순차적으로 작동하며, 서로 교차 검토하고 게이트를 통과하게 합니다. 총 비용은 여전히 단일 Claude 호출 비용의 일부에 불과할 수 있습니다.
모든 실행은 .fuc-run/<run-id>/에 기록되며, 작업 원장(task ledger), 이벤트 스트림(event stream), 판결(verdict), 최종 결과(final result)를 포함한 완전한 감사 추적(audit trail)을 제공합니다.
기술 스택 (Tech Stack)
| 계층 (Layer) | 기술 (Technology) |
|---|---|
| 데스크톱 쉘 (Desktop shell) | Tauri 2 + Rust |
| ... |
대상 사용자
- 토큰 비용이 부담되는 일상적인 Claude Code / Codex 사용자
- 여러 무료 채널의 키를 보유하고 있지만, 설정(config)을 번거롭게 관리하는 데 지친 분들
- 어떤 작업이 저렴한 모델에서 실행 가능하고 어떤 작업에 프리미엄 모델이 필요한지 알고 있으며, 세밀한 비용 제어를 원하는 분들
- 게임/그래픽/시스템 개발자 — 대규모 코드베이스, 무거운 컴파일, 높은 AI 호출량을 가진 분들
가끔씩 질문을 던지는 일반 사용자용이 아닙니다. 만약 당신이 그런 사용자라면, 그냥 터미널을 열고 Claude Code를 실행하십시오. 그 위에 별도의 쉘(shell)을 얹을 필요는 없습니다.
기본 모델 (Default Models) (일부)
기본 모델 (Default Models) (일부)
| Channel | Default Model | Cost Model |
|---|---|---|
| GitHub Models | openai/gpt-4.1-mini | 무료, GitHub 토큰 필요, 속도 제한 있음 |
| ... |
링크
- GitHub: github.com/wellingfeng/FreeUltraCode
- Discord: discord.gg/2C9ptSEFG
- QQ 그룹: 149523963
시작하기
cd app
npm install
npm run dev # Web → localhost:5173
...
Windows에서는 리포지토리 루트에 있는 run.bat을 더블클릭하십시오.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기