runjam
무엇인가
RunJam은 Claude Code·Codex CLI·Gemini CLI를 하나의 데스크톱 창에서 구동하기 위한 로컬 우선 관리 도구다. 에이전트의 프롬프트나 규칙 파일을 바꾸는 대신, 어떤 에이전트를 어떤 모델에 연결하고 세션·설정·캐시를 어디에 둘지를 규율한다. Tauri + Rust + Vue 3로 작성된 데스크톱 앱이며, SKILL.md·CLAUDE.md 같은 규칙 주입 파일이 아니라 실행 환경 계층을 통제한다.
어떻게 동작하나
동작은 각 에이전트를 수정하지 않고 네이티브 CLI를 stdin/stdout로 구동하는 방식이다. 코어는 세 가지다. 프로토콜 변환(Anthropic ↔ OpenAI ↔ Gemini), 세션 관리(병렬 세션·상태 지속), 캐시 최적화(프롬프트 캐시 + 응답 캐시). 여기에 설치·채팅·워크스페이스·대시보드가 붙는다. 모델 설정은 한 번 구성하면 모든 에이전트에 동기화되고, `fast`·`smart` 같은 별칭을 실제 모델 ID에 매핑한다. `~/.claude/`, `~/.codex/`, `~/.gemini/` 설정은 GUI에서 직접 편집한다.
무엇과 다른가
ACP 기반 도구는 에이전트를 개조해야 하지만 RunJam은 CLI를 그대로 감싼다. CLAUDE.md에 규칙을 적는 방식이 프롬프트 내용을 바꾸는 것이라면, RunJam은 라우팅·설정 계층을 바꾼다. 에이전트마다 설정 파일을 따로 관리하는 대신 단일 모델 설정을 전 에이전트에 적용하고, 내장 로컬 API 프록시가 API 키 관리와 프로토콜 변환을 한 지점으로 모은다.
어떻게 쓰나
PATH에서 `claude`·`codex`·`gemini`를 자동 탐지하고, `npm install -g` 기반 원클릭 설치·제거를 실시간 진행률과 함께 제공한다. 첫 사용은 탐지된 에이전트를 선택하고 모델 제공자(Anthropic·OpenAI·Google AI·Groq·DeepSeek·Qwen·커스텀 API)를 지정한 뒤 세션을 여는 순서다. 로컬 모델은 llama.cpp 서버를 UI에서 시작·중지하고 GGUF를 내려받아 동일한 프록시에 연결한다.
전제와 한계
Claude Code·Codex CLI·Gemini CLI 중 최소 하나가 PATH에 설치되어 있어야 하고 데스크톱 실행 환경이 필요하다. 에이전트 자체를 수정하지 않으므로 각 CLI가 지원하지 않는 기능은 쓸 수 없고, 에이전트의 출력 형식·말투 같은 규칙은 주입하지 않는다. 텔레메트리는 기본 활성(익명 사용 데이터, 설정에서 해제 가능)이며 클라우드 동기화는 없다.
관련 논문 1
유사 도구
- opcodeClaude Code 세션·에이전트·사용량을 관리하는 Tauri 2 기반 데스크톱 GUI다. CLI 세션을 시각적으로 탐색하고 커스텀 에이전트를 백그라운드로 실행한다.
- warp터미널에서 출발한 에이전트 개발 환경으로, 내장 코딩 에이전트와 Claude Code·Codex·Gemini CLI 등 외부 CLI 에이전트를 같은 창에서 실행한다.
- terax-aiTauri 2와 Rust로 만든 7MB대 터미널 우선 AI 개발 환경이다. 네이티브 PTY와 WebGL 터미널, CodeMirror 6 편집기, BYOK·로컬 모델 에이전트 패널을 한 창에 묶는다.
- claudianObsidian 볼트를 작업 디렉터리로 삼아 Claude Code·Codex 등 코딩 에이전트 CLI를 채팅 사이드바에서 실행하는 TypeScript 플러그인이다.
- claude-code-lspsClaude Code에 언어 서버 프로토콜(LSP) 플러그인을 붙여 정의 이동·참조 찾기·실시간 진단을 에이전트 도구로 노출하는 플러그인 묶음이다.
- jan로컬 LLM을 내려받아 오프라인으로 실행하고 대화하는 Tauri 데스크톱 앱이다. localhost:1337에 OpenAI 호환 API 서버를 열고 MCP로 도구를 연결한다.