{"id":46088594,"url":"https://github.com/lidge-jun/cli-jaw","last_synced_at":"2026-04-07T08:05:39.501Z","repository":{"id":340676508,"uuid":"1166171472","full_name":"lidge-jun/cli-jaw","owner":"lidge-jun","description":"🦈 2-line install personal AI assistant. 5 engines (Claude, Codex, Gemini, OpenCode, Copilot), 108 skills, zero ban risk.","archived":false,"fork":false,"pushed_at":"2026-03-22T03:34:34.000Z","size":12897,"stargazers_count":61,"open_issues_count":20,"forks_count":5,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-04-02T07:39:31.987Z","etag":null,"topics":["ai","assistant","automation","claude","cli","codex","copilot","gemini","mcp","multi-agent","opencode","orchestrator","telegram-bot","typescript"],"latest_commit_sha":null,"homepage":"https://lidge-jun.github.io/cli-jaw/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lidge-jun.png","metadata":{"files":{"readme":"README.ko.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-02-25T00:18:14.000Z","updated_at":"2026-03-29T07:44:46.000Z","dependencies_parsed_at":"2026-03-03T19:00:43.797Z","dependency_job_id":null,"html_url":"https://github.com/lidge-jun/cli-jaw","commit_stats":null,"previous_names":["bitkyc08-arch/cli-jaw","lidge-jun/cli-jaw"],"tags_count":52,"template":false,"template_full_name":null,"purl":"pkg:github/lidge-jun/cli-jaw","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lidge-jun%2Fcli-jaw","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lidge-jun%2Fcli-jaw/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lidge-jun%2Fcli-jaw/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lidge-jun%2Fcli-jaw/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lidge-jun","download_url":"https://codeload.github.com/lidge-jun/cli-jaw/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lidge-jun%2Fcli-jaw/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31504899,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-07T03:10:19.677Z","status":"ssl_error","status_checked_at":"2026-04-07T03:10:13.982Z","response_time":105,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","assistant","automation","claude","cli","codex","copilot","gemini","mcp","multi-agent","opencode","orchestrator","telegram-bot","typescript"],"created_at":"2026-03-01T17:13:08.152Z","updated_at":"2026-04-07T08:05:39.467Z","avatar_url":"https://github.com/lidge-jun.png","language":"TypeScript","readme":"\u003cdiv align=\"center\"\u003e\n\n# 🦈 CLI-JAW\n\n### 5대 AI 엔진을 품은 나만의 로컬 비서\n\n*Claude, Codex, Gemini... 이제 번갈아 쓰지 마세요.*\n\n[![Tests](https://img.shields.io/badge/tests-888%20pass-brightgreen)](#-테스트)\n[![TypeScript](https://img.shields.io/badge/TypeScript-5.7-blue)](https://typescriptlang.org)\n[![Node](https://img.shields.io/badge/node-%3E%3D22-blue)](https://nodejs.org)\n[![License](https://img.shields.io/badge/license-ISC-yellow)](LICENSE)\n[![npm](https://img.shields.io/npm/v/cli-jaw)](https://npmjs.com/package/cli-jaw)\n[![Docker](https://img.shields.io/badge/Docker-supported-2496ED?logo=docker\u0026logoColor=white)](#-도커--컨테이너-격리)\n[![Platforms](https://img.shields.io/badge/platforms-macOS%20%7C%20Linux%20%7C%20WSL%20%7C%20Docker-lightgrey)](#)\n\n[English](README.md) / **한국어** / [中文](README.zh-CN.md)\n\n\u003cvideo src=\"https://github.com/user-attachments/assets/a7cf17c9-bfb3-44f0-b7fd-d001a39643fd\" autoplay loop muted playsinline width=\"100%\"\u003e\u003c/video\u003e\n\n\u003c/div\u003e\n\n## 빠른 링크\n\n- [설치 \u0026 실행](#-설치--실행-30초) · [AI 엔진 인증](#-ai-엔진-인증) · [CLI-JAW란?](#cli-jaw란-무엇인가요)\n- [기능](#비서가-어떤-일을-할-수-있나요) · [스킬](#-스킬-시스템) · [텔레그램](#-텔레그램--내-주머니-속의-비서) · [음성 \u0026 STT](#-음성--stt--음성-인식)\n- [오케스트레이션](#-멀티-에이전트-오케스트레이션) · [MCP](#-mcp--단일-설정-6개의-ai-엔진) · [CLI 명령어](#️-cli-명령어)\n- [멀티 인스턴스](#️-멀티-인스턴스--프로젝트별-독립-환경) · [모델](#-모델) · [Docker](#-docker--컨테이너-격리)\n- [개발](#️-개발) · [테스트](#-테스트) · [문서](#-문서) · [문제 해결](#-문제-해결) · [기여하기](#-기여하기)\n\n\u003cdetails\u003e\n\u003csummary\u003e🪟 \u003cb\u003eWindows 사용자이신가요?\u003c/b\u003e — WSL 원클릭 설치\u003c/summary\u003e\n\n**Step 1: WSL 설치** (PowerShell 관리자 권한 — 최초 1회)\n\n```powershell\nwsl --install\n```\n\n안내에 따라 컴퓨터를 재시작하세요. 재부팅 후 시작 메뉴에서 **Ubuntu**를 실행하세요.\n\n**Step 2: CLI-JAW 설치** (Ubuntu/WSL 터미널에서)\n\n```bash\ncurl -fsSL https://raw.githubusercontent.com/lidge-jun/cli-jaw/master/scripts/install-wsl.sh | bash\n```\n\n스크립트가 필수 패키지(`curl`, `unzip`, `git`), Node.js 22+, CLI-JAW를 자동 설치합니다.\n\n**Step 3: 쉘 다시 로드** (중요 — PATH 변경 적용)\n\n```bash\nsource ~/.bashrc\n```\n\n**Step 4: AI 엔진 인증** (하나 선택)\n\n```bash\ncopilot login    # GitHub Copilot (무료)\nopencode         # OpenCode (무료 모델 제공)\nclaude auth      # Anthropic Claude\ncodex login      # OpenAI Codex\ngemini           # Google Gemini\n```\n\n**Step 5: 시작하기**\n\n```bash\njaw serve\n# → http://localhost:3457\n```\n\n\u003e 💡 스크립트는 [fnm](https://github.com/Schniz/fnm)으로 Node.js를 관리합니다. 이미 `nvm`이 있으면 그걸 사용합니다.\n\n\u003cdetails\u003e\n\u003csummary\u003e🔧 \u003cb\u003eWSL 문제 해결\u003c/b\u003e\u003c/summary\u003e\n\n| 문제                                    | 해결 방법                                               |\n| --------------------------------------- | ------------------------------------------------------- |\n| `unzip: command not found`              | 설치 스크립트를 다시 실행하세요 — `unzip`을 자동 설치합니다 |\n| `jaw: command not found` (설치 후)       | `source ~/.bashrc`로 PATH를 다시 로드하세요              |\n| 여전히 `jaw`를 찾을 수 없음              | `export PATH=\"$(npm config get prefix)/bin:$PATH\"` 실행  |\n| `npm install -g` 권한 오류               | `sudo chown -R $USER $(npm config get prefix)` 실행      |\n\n\u003c/details\u003e\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e🍎 \u003cb\u003e터미널이 처음이신가요?\u003c/b\u003e — 원클릭 Node.js + CLI-JAW 설치\u003c/summary\u003e\n\n**Step 1: 터미널 열기**\n\n**Finder** → **응용 프로그램** → **유틸리티** → **터미널.app** 을 열어주세요.\n(또는 `⌘ Space` 누르고 `터미널` 이라고 입력하세요)\n\n**Step 2: 아래 내용을 붙여넣고 Enter**\n\n```bash\ncurl -fsSL https://raw.githubusercontent.com/lidge-jun/cli-jaw/master/scripts/install.sh | bash\n```\n\nNode.js + CLI-JAW가 자동으로 설치됩니다. 🎉 가 뜰 때까지 기다려주세요.\n\n**Step 3: 로그인 \u0026 실행**\n\n```bash\ncopilot login    # 또는: claude auth / codex login / gemini login\njaw serve\n```\n\n브라우저에서 **http://localhost:3457** 을 열면 끝! 🦈\n\n\u003c/details\u003e\n\n---\n\n## 🚀 설치 \u0026 실행 (30초)\n\n```bash\nnpm install -g cli-jaw\njaw serve\n```\n\n**끝.** **http://localhost:3457** 열고 바로 채팅하세요. 🦈\n\n\u003e 🕐 **24시간 돌아가게 만들고 싶으세요?** `jaw service install` — systemd, launchd, Docker 자동 감지.\n\n\u003e **Node.js ≥ 22** ([다운로드](https://nodejs.org)) + 아래에서 **AI CLI 최소 1개** 인증 필요.\n\n---\n\n## 🔑 AI 엔진 인증\n\n**하나만** 있으면 돼요 — 가진 거 골라서:\n\n```bash\n# ── 무료 ──\ncopilot login                # GitHub Copilot (무료 플랜)\nopencode                     # OpenCode — 첫 실행 시 자동 인증 (무료 모델 있음)\n\n# ── 유료 ──\nclaude auth                  # Anthropic Claude\ncodex login                  # OpenAI Codex\ngemini                       # Google Gemini — 첫 실행 시 인증\n```\n\n준비 상태 확인: `jaw doctor`\n\n\u003cdetails\u003e\n\u003csummary\u003e📋 \u003ccode\u003ejaw doctor\u003c/code\u003e 출력 예시\u003c/summary\u003e\n\n```\n🦈 CLI-JAW Doctor — 12 checks\n\n ✅ Node.js        v22.15.0\n ✅ npm             v10.9.4\n ✅ Claude CLI      installed\n ✅ Codex CLI       installed\n ⚠️ Gemini CLI      not found (optional)\n ✅ OpenCode CLI    installed\n ✅ Copilot CLI     installed\n ✅ Database        jaw.db OK\n ✅ Skills          22 active, 94 reference\n ✅ MCP             3 servers configured\n ✅ Memory          MEMORY.md exists\n ✅ Server          port 3457 available\n```\n\n\u003c/details\u003e\n\n\u003e 💡 **5개 다 깔 필요 없어요.** 하나만 있으면 됩니다. 어떤 엔진이 설치돼 있는지 자동 감지하고, 없으면 다음 엔진으로 자연스럽게 넘어갑니다.\n\n---\n\n## CLI-JAW란 무엇인가요?\n\nCLI-JAW는 내 컴퓨터에 상주하며 이미 익숙한 인터페이스인 **웹, 터미널, 텔레그램, 디스코드**에서 작동하는 **개인용 AI 비서**입니다. 궁금한 것을 묻고, 작업을 위임하고, 워크플로우를 자동화하세요.\n![CLI-JAW Web UI](image/README/1772128366759.png)\n\n\u003e 💬 *\"오늘 일정 정리해줘\"* → 텔레그램으로 바로 정리해서 보내줘요\n\u003e 💬 *\"이 모듈 리팩토링하고 테스트도 짜줘\"* → 서브에이전트가 알아서, 커피 한 잔 하고 오면 돼요\n\u003e 💬 *\"저 PDF 다운받아서 핵심만 노션에 정리해\"* → 브라우저 + 노션 스킬 조합으로 뚝딱\n\n단일 모델만을 사용하는 기존 비서들과 달리, CLI-JAW는 5개의 AI 엔진(Claude, Codex, Gemini, OpenCode, Copilot)을 공식 CLI를 통해 오케스트레이션하여 모든 제공업체의 장점을 통합된 경험으로 제공합니다. 하나의 엔진 사용량이 초과되면 자동으로 다음 엔진으로 전환됩니다. 116개의 내장 스킬이 브라우저 자동화부터 문서 생성까지 모든 것을 처리합니다.\n\n|                                         | 왜 CLI-JAW인가요?                                                                                                |\n| --------------------------------------- | ---------------------------------------------------------------------------------------------------------------- |\n| 🛡️ **안전한 서비스 약관 준수**           | 공식 CLI만 사용합니다 — API 키 스크래핑이나 리버스 엔지니어링이 없으므로 계정 정지 위험이 없습니다.              |\n| 🤖 **검증된 에이전트 도구**              | 실전에서 검증된 5개의 코딩 에이전트(Claude, Codex, Gemini, OpenCode, Copilot)를 한 곳에서 사용하세요.            |\n| ⚡ **멀티 에이전트 자동 전환(Fallback)** | 엔진 하나가 멈춰도 걱정 없습니다. 다음 엔진이 즉시 이어받아 중단 없는 작업이 가능합니다.                         |\n| 🎭 **오케스트레이션 기반 성능 극대화**   | 복잡한 작업은 전문화된 서브 에이전트에게 분산시켜 처리량을 극대화합니다.                                         |\n| 📦 **116개의 내장 스킬**                 | 브라우저 자동화, 문서 생성, 텔레그램 연동, 영구 메모리 등 설치 즉시 사용 가능한 기능들을 제공합니다.             |\n| 🖥️ **크로스 플랫폼**                     | macOS, Linux, Windows — ENOENT-safe CLI 스폰, 자동 감지, `.cmd` shim 지원, 네이티브 설치 전부 크로스플랫폼 동작. |\n\n![CLI-JAW 터미널](docs/screenshots/terminal-cli.png)\n\n---\n\n## 🆕 새로운 기능 (v1.4.0)\n\n| 기능                    | 설명                                                                                                                                                                                                               |\n| ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n| 🧠 **고급 메모리**       | 5계층 저장소 (프로필, 에피소드, 시맨틱, 프로시저, 세션). 하이브리드 검색: FTS5 + 시맨틱 검색 + 쿼리 확장. Gemini Flash-Lite 임베딩. 리인덱스/감사 기능이 포함된 UI 운영 대시보드.                                  |\n| 🎨 **모듈형 개발 스킬**  | `dev-frontend` (1,428줄, 13파일)과 `dev-backend` (1,275줄, 9파일)을 단일 SKILL.md에서 모듈 구조로 확장. 코어 레퍼런스 (미학, 안티슬롭, 보안, 아키텍처) + 스택별 가이드 (React, Next.js, Node, Python, PostgreSQL). |\n| 📄 **오피스 확장**       | HWP (한글 문서) 지원 추가. PPTX 생성 강화. 21개 활성 스킬 (기존 18개에서 증가).                                                                                                                                    |\n| ⚡ **ACP 진행 하트비트** | 장시간 에이전트 실행 중 실시간 `stderr_activity` 이벤트. UI 모달 제어가 포함된 조건부 하트비트 스케줄링.                                                                                                           |\n| 🔄 **스킬 리셋**         | `jaw skill reset` — `--soft` (리로드), `--hard` (전체 재설치) 모드. `JAW_HOME`과 `settings.json` 불일치 시 `workingDir` 자동 보정.                                                                                 |\n| 🎬 **비디오 스킬**       | Remotion 기반 JSON 타임라인 정의로 프로그래밍 방식의 영상 렌더링. 컷별 나레이션 동기화 TTS 연동.                                                                                                                   |\n| 📐 **1M 컨텍스트 토글**  | 지원 모델용 `config.toml` 주입으로 1M 토큰 컨텍스트 윈도우 켜기/끄기.                                                                                                                                              |\n| 🚀 **프리뷰 릴리즈**     | 타임스탬프 버전(`v1.4.0-preview.YYYYMMDD`)의 자동화된 프리뷰 릴리즈 파이프라인. GitHub prerelease 연동.                                                                                                            |\n\n---\n\n## 비서가 어떤 일을 할 수 있나요?\n\n```mermaid\ngraph LR\n    YOU[\"👤 사용자\"] --\u003e|웹 / 터미널 / Telegram| JAW[\"🦈 CLI-JAW\"]\n    JAW --\u003e|생성| C[\"Claude\"]\n    JAW --\u003e|생성| X[\"Codex\"]\n    JAW --\u003e|생성| G[\"Gemini\"]\n    JAW --\u003e|생성| O[\"OpenCode\"]\n    JAW --\u003e|생성| P[\"Copilot\"]\n    JAW --\u003e|주입| SK[\"📦 스킬\"]\n    JAW --\u003e|제어| BR[\"🌐 Chrome\"]\n    JAW --\u003e|전송| TG[\"📱 Telegram\"]\n    \n    style JAW fill:#f5e6d3,stroke:#d4a574,stroke-width:2px,color:#5c4033\n```\n\n- 🤖 **5개의 AI 엔진, 1명의 비서** — Claude · Codex · Gemini · OpenCode · Copilot. `/cli` 명령어로 전환하세요.\n- ⚡ **자동 전환(Fallback)** — 엔진 하나가 다운되면 다음 엔진이 매끄럽게 이어받습니다.\n- 🎭 **멀티 에이전트 오케스트레이션** — 복잡한 작업은 전문화된 서브 에이전트들에게 자동으로 분산됩니다.\n- 🎤 **음성 입력** — 웹 마이크 버튼 + 텔레그램 음성 메시지. 멀티 프로바이더 STT (OpenAI, Vertex AI).\n- 📝 **프롬프트 템플릿** — 시각적 노드맵 에디터로 프롬프트 템플릿 생성, 관리, 재사용.\n- 📦 **116개의 스킬** — 브라우저 제어, 파일 편집, 이미지 생성, 웹 검색 외 [다양한 기능](#-스킬-시스템).\n- 🧠 **영구 메모리** — 세션을 넘나들며 과거의 대화와 사용자 선호도를 기억합니다.\n- 📱 **텔레그램 봇** — 휴대폰으로 비서와 채팅하고, 음성/사진/파일을 전송하세요.\n- 🌐 **브라우저 자동화** — 비서가 알아서 웹을 탐색하고, 클릭하고, 타이핑하고, 스크린샷을 찍을 수 있습니다.\n- 🔌 **MCP 생태계** — 한 번만 설치하면 5개의 AI 엔진 모두에서 즉시 사용 가능합니다.\n- 🔍 **웹 검색** — MCP 도구를 통한 실시간 정보 검색.\n- ⏰ **하트비트 작업** — 자동으로 실행되는 반복 일정을 등록하세요.\n\n---\n\n### 기타 실행 방법\n\n```bash\njaw chat         # 터미널 TUI (브라우저 필요 없음)\njaw service install  # 부팅 시 자동 실행 (systemd/launchd/docker 자동 감지)\n```\n\n\u003e ⚠️ **설치 시 참고:** `npm install -g cli-jaw`는 postinstall 스크립트를 실행하여 스킬 디렉토리, 커스텀 인스트럭션, MCP 설정을 구성합니다. 기존 설정은 덮어쓰지 않고 병합됩니다.\n\n---\n\n## 📦 스킬 시스템\n\n**116개 스킬** 내장 — 브라우저, GitHub, 노션, 텔레그램, 메모리, PDF, 이미지 생성 등 [다양하게](#).\n\n\u003cdetails\u003e\n\u003csummary\u003e전체 스킬 목록 보기\u003c/summary\u003e\n\n| 티어               | 수량  | 작동 방식                                        |\n| ------------------ | :---: | ------------------------------------------------ |\n| **Active 스킬**    |  22   | 매번 AI한테 자동으로 주입돼요. 항상 켜져 있어요. |\n| **Reference 스킬** |  94   | 관련 작업을 시키면 그때 AI가 읽어서 써요.        |\n\n#### Active 스킬 (항상 켜짐)\n\n| 스킬                                                                | 기능                                               |\n| ------------------------------------------------------------------- | -------------------------------------------------- |\n| `browser`                                                           | Chrome 자동화 — 스냅샷, 클릭, 네비게이트, 스크린샷    |\n| `github`                                                            | 이슈, PR, CI, 코드 리뷰 (`gh` CLI 사용)               |\n| `notion`                                                            | Notion 페이지 및 데이터베이스 관리                    |\n| `memory`                                                            | 세션 간 영속 장기 메모리                              |\n| `telegram-send`                                                     | Telegram으로 사진, 문서, 음성 메시지 전송             |\n| `vision-click`                                                      | 스크린샷 → AI가 좌표 찾기 → 클릭 (원커맨드)           |\n| `pdf` / `pdf-expert` / `docx` / `xlsx` / `pptx` / `hwp`            | 오피스 및 PDF 문서 읽기, 생성, 편집 (한글 HWP 포함)    |\n| `screen-capture`                                                    | macOS 스크린샷 및 카메라 캡처                         |\n| `video`                                                             | JSON 기반 Remotion 프로그래매틱 비디오 렌더링          |\n| `dev` / `dev-frontend` / `dev-backend` / `dev-data` / `dev-testing` | 서브에이전트용 개발 가이드                            |\n| `dev-pabcd` / `dev-scaffolding` / `dev-code-reviewer`               | 오케스트레이션, 스캐폴딩, 코드 리뷰 가이드            |\n\n#### Reference 스킬 (필요할 때만)\n\n94개 스킬이 더 있어요 — imagegen, openai-docs, spotify, 날씨, 딥리서치, TTS, 비디오 다운로드, Apple 미리알림, 1Password, Terraform, PostgreSQL, Jupyter 등.\n\n```bash\njaw skill install \u003cname\u003e    # reference → active로 영구 활성화\n```\n\n\u003c/details\u003e\n\n---\n\n## 📱 텔레그램 — 내 주머니 속의 비서\n\n비서는 책상 앞에만 머물지 않습니다. 텔레그램을 통해 어디서든 대화하세요:\n\n```\n📱 Telegram ←→ 🦈 CLI-JAW ←→ 🤖 AI 엔진\n```\n\n\u003cdetails\u003e\n\u003csummary\u003e📋 텔레그램 설정 (3단계)\u003c/summary\u003e\n\n1. **봇 만들기** — [@BotFather](https://t.me/BotFather)에게 `/newbot` → 토큰 복사\n2. **설정** — `jaw init --telegram-token 토큰` 실행하거나 Web UI 설정에서 입력\n3. **채팅 시작** — 봇에게 아무 메시지나 보내세요. 첫 메시지에서 채팅 ID가 자동 저장됩니다.\n\n\u003c/details\u003e\n\n**텔레그램에서 가능한 작업:**\n- 💬 비서와 채팅 (5개 AI 엔진 중 선택)\n- 🎤 음성 메시지 전송 (자동 텍스트 변환)\n- 📎 처리를 위한 파일 및 사진 전송\n- 🎙️ 음성 + 텍스트 + 첨부파일을 하나의 메시지에 조합 가능\n- ⚡ 명령어 실행 (`/cli`, `/model`, `/status`)\n- 🔄 실시간 AI 엔진 전환\n\n**비서가 보내주는 내용:**\n- 마크다운 서식이 적용된 AI 응답\n- 생성된 이미지, PDF, 문서\n- 예약된 작업 결과 (하트비트 작업)\n- 브라우저 스크린샷\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/screenshots/telegram-bot.png\" width=\"300\" alt=\"텔레그램 봇\" /\u003e\n\u003c/p\u003e\n\n---\n\n## 🎤 음성 \u0026 STT — 음성 인식\n\nCLI-JAW는 멀티 프로바이더 STT로 모든 인터페이스에서 음성 입력을 지원합니다:\n\n| 프로바이더            | 설정 방법                                      |\n| --------------------- | ---------------------------------------------- |\n| **OpenAI 호환**       | Settings UI → STT → OpenAI 엔드포인트 + API 키 |\n| **Google Vertex AI**  | Settings UI → STT → Vertex AI 인증 정보        |\n| **커스텀 엔드포인트** | OpenAI 호환 STT API URL 직접 입력              |\n\n**음성을 사용할 수 있는 곳:**\n\n- 🌐 **웹 UI** — 마이크 버튼으로 실시간 녹음 및 전사\n- 📱 **텔레그램** — 음성 메시지 전송 시 AI에 전달 전 자동 전사\n- 🎙️ **멀티모달** — 음성 + 텍스트 + 파일 첨부를 하나의 메시지에 조합 가능\n\n모든 STT 설정(프로바이더, API 키, 언어)은 **Settings UI**에서 관리 — 설정 파일 편집 불필요.\n\n---\n\n## 🎭 멀티 에이전트 오케스트레이션\n\n![오케스트레이션 로그](docs/screenshots/orchestration-log.png)\n\n복잡한 작업의 경우, 비서가 전문 서브 에이전트에게 작업을 위임합니다:\n\n```mermaid\ngraph TD\n    USER[\"👤 사용자 요청\"] --\u003e TRIAGE[\"🔍 트리아지 — 단순? 복잡?\"]\n    \n    TRIAGE --\u003e|단순| DIRECT[\"⚡ 직접 응답\"]\n    TRIAGE --\u003e|복잡| PLAN[\"📝 기획\"]\n    \n    PLAN --\u003e FE[\"🎨 프론트엔드\"]\n    PLAN --\u003e BE[\"⚙️ 백엔드\"]  \n    PLAN --\u003e DATA[\"📊 데이터\"]\n    \n    FE --\u003e GATE[\"🚪 게이트 리뷰\"]\n    BE --\u003e GATE\n    DATA --\u003e GATE\n    \n    GATE --\u003e|통과| NEXT[\"✅ 완료\"]\n    GATE --\u003e|실패| RETRY[\"🔄 디버그 \u0026 재시도\"]\n\n    style USER fill:#f5e6d3,stroke:#d4a574,stroke-width:2px,color:#5c4033\n    style TRIAGE fill:#fdf2e9,stroke:#d4a574,color:#5c4033\n    style PLAN fill:#f5e6d3,stroke:#d4a574,stroke-width:2px,color:#5c4033\n    style GATE fill:#f5e6d3,stroke:#d4a574,stroke-width:2px,color:#5c4033\n```\n\n비서는 작업에 오케스트레이션이 필요한지 직접 응답이 필요한지 **스스로 결정**합니다. 별도의 설정이 필요 없습니다.\n\n---\n\n## 🔌 MCP — 단일 설정, 6개의 AI 엔진\n\n```bash\njaw mcp install @anthropic/context7    # 한 번만 설치\n# → Claude, Codex, Gemini, OpenCode, Copilot, Antigravity 전부 자동 동기화\n```\n\n```mermaid\ngraph LR\n    MJ[\"📄 mcp.json\"] --\u003e|자동 동기화| CL[\"Claude\"]\n    MJ --\u003e|자동 동기화| CX[\"Codex\"]\n    MJ --\u003e|자동 동기화| GM[\"Gemini\"]\n    MJ --\u003e|자동 동기화| OC[\"OpenCode\"]\n    MJ --\u003e|자동 동기화| CP[\"코파일럿\"]\n    MJ --\u003e|자동 동기화| AG[\"안티그래비티\"]\n    \n    style MJ fill:#f5e6d3,stroke:#d4a574,stroke-width:2px,color:#5c4033\n```\n\n설정 파일 6개를 별도로 수정할 필요가 없습니다. 한 번만 설치하면 모든 AI 엔진에 적용됩니다.\n\n---\n\n## ⌨️ CLI 명령어\n\n```bash\njaw serve                         # 서버 시작\njaw service install               # 부팅 시 자동 실행 (systemd/launchd/docker 자동 감지)\njaw service status                # 데몬 상태 확인\njaw service unset                 # 자동 실행 해제\njaw service logs                  # 서비스 로그 보기\njaw chat                          # 터미널 TUI\njaw doctor                        # 진단 (12개 체크)\njaw skill install \u003cname\u003e          # 스킬 설치\njaw mcp install \u003cpackage\u003e         # MCP 설치 → 6개 CLI 전부 동기화\njaw memory search \u003cquery\u003e         # 메모리 검색\njaw browser start                 # Chrome 시작 (CDP)\njaw browser vision-click \"로그인\"  # AI가 알아서 클릭\njaw clone ~/my-project            # 인스턴스 복제\njaw --home ~/my-project serve --port 3458  # 두 번째 인스턴스 실행\njaw reset                         # 전체 초기화\n```\n\n---\n\n## 🏗️ 멀티 인스턴스 — 프로젝트별 독립 환경\n\nCLI-JAW의 독립된 인스턴스를 여러 개 실행할 수 있어요 — 각각 고유한 설정, 메모리, 스킬, 데이터베이스를 가집니다.\n\n```bash\n# 기본 인스턴스를 새 프로젝트로 복제\njaw clone ~/my-project\n\n# 다른 포트로 실행\njaw --home ~/my-project serve --port 3458\n\n# 또는 둘 다 부팅 시 자동 실행\njaw service install                                # 기본 → 포트 3457\njaw --home ~/my-project service install --port 3458 # 프로젝트 → 포트 3458\n```\n\n각 인스턴스는 완전히 독립적입니다 — 작업 디렉토리, 메모리, MCP 설정이 모두 다릅니다. 업무/개인 컨텍스트 분리나 프로젝트별 AI 설정에 안성맞춤이에요.\n\n| 플래그 / 환경변수     | 기능                                     |\n| --------------------- | ---------------------------------------- |\n| `--home \u003c경로\u003e`       | 이 실행에 사용할 커스텀 홈 디렉토리 지정 |\n| `--home=\u003c경로\u003e`       | 동일 (`=` 구문)                          |\n| `CLI_JAW_HOME=\u003c경로\u003e` | 환경변수로 지정                          |\n| `jaw clone \u003c대상\u003e`    | 현재 인스턴스를 새 디렉토리로 복제       |\n| `--port \u003c포트\u003e`       | `serve` / `service`용 커스텀 포트        |\n\n---\n\n## 🤖 모델\n\n각 CLI마다 프리셋이 있지만, **아무 모델 ID나** 직접 쳐도 돼요.\n\n\u003cdetails\u003e\n\u003csummary\u003e전체 프리셋 보기\u003c/summary\u003e\n\n| CLI          | 기본값                     | 주요 모델                                      |\n| ------------ | -------------------------- | ---------------------------------------------- |\n| **Claude**   | `claude-sonnet-4-6`        | opus-4-6, haiku-4-5, 확장 사고 변형            |\n| **Codex**    | `gpt-5.3-codex`            | spark, 5.2, 5.1-max, 5.1-mini                  |\n| **Gemini**   | `gemini-2.5-pro`           | 3.0-pro-preview, 3-flash-preview, 2.5-flash    |\n| **OpenCode** | `claude-opus-4-6-thinking` | 🆓 big-pickle, GLM-5, MiniMax, Kimi, GPT-5-Nano |\n| **Copilot**  | `gpt-4.1` 🆓                | 🆓 gpt-5-mini, claude-sonnet-4.6, opus-4.6      |\n\n\u003c/details\u003e\n\n\u003e 🔧 프리셋에 모델 추가하고 싶으면: `src/cli/registry.ts` 하나만 고치면 전체 자동 반영.\n\n---\n\n## 🐳 Docker — 컨테이너 격리\n\n보안 격리를 위해 Docker 컨테이너에서 실행 — AI 에이전트가 호스트 파일에 접근 불가.\n\n```bash\ndocker compose up -d        # → http://localhost:3457\n```\n\n\u003e 자세한 내용은 [English README](README.md#-docker--container-isolation) 참고.\n\u003e `Dockerfile` (npm 배포판) / `Dockerfile.dev` (로컬 소스) 두 가지 제공.\n\n---\n\n## 🛠️ 개발\n\n\u003cdetails\u003e\n\u003csummary\u003e빌드, 실행, 프로젝트 구조\u003c/summary\u003e\n\n```bash\n# 빌드 (TypeScript → JavaScript)\nnpm run build          # tsc → dist/\n\n# 소스에서 실행 (개발용)\nnpm run dev            # tsx server.ts\nnpx tsx bin/cli-jaw.ts serve   # .ts에서 직접 실행\n\n# 빌드 결과물로 실행 (프로덕션)\nnode dist/bin/cli-jaw.js serve\n```\n\n**프로젝트 구조:**\n\n```\nsrc/\n├── agent/          # AI 에이전트 라이프사이클 \u0026 스폰\n├── browser/        # Chrome CDP 자동화\n├── cli/            # CLI 레지스트리 \u0026 모델 프리셋\n├── core/           # DB, 설정, 로깅\n├── http/           # Express 서버 \u0026 미들웨어\n├── memory/         # 영속 메모리 시스템\n├── orchestrator/   # 멀티에이전트 오케스트레이션 파이프라인\n├── prompt/         # 프롬프트 주입 \u0026 AGENTS.md 생성\n├── routes/         # REST API 엔드포인트 (40+)\n├── security/       # 입력 검증 \u0026 가드레일\n└── telegram/       # 텔레그램 봇 연동\n```\n\n\u003e TypeScript — `strict: true`, `NodeNext` 모듈 해상도, ES2022 타겟.\n\n\u003c/details\u003e\n\n---\n\n## 🧪 테스트\n\n\u003cdetails\u003e\n\u003csummary\u003e888 pass · 2 skipped · 외부 의존성 0\u003c/summary\u003e\n\n```bash\nnpm test\n```\n\n`tsx --test`로 실행 (Node.js 네이티브 테스트 러너 + TypeScript).\n\n\u003c/details\u003e\n\n---\n\n## 📖 문서\n\n| 문서                                    | 내용                                                |\n| --------------------------------------- | --------------------------------------------------- |\n| [ARCHITECTURE.md](docs/ARCHITECTURE.md) | 시스템 설계, 모듈 그래프, REST API (40+ 엔드포인트) |\n| [TESTS.md](TESTS.md)                    | 테스트 커버리지, 테스트 계획                        |\n\n---\n\n## 🔧 문제 해결\n\n| 증상                         | 원인                               | 해결 방법                                                                   |\n| ---------------------------- | ---------------------------------- | --------------------------------------------------------------------------- |\n| `command not found: cli-jaw` | npm 전역 bin이 PATH에 없음         | `npm config get prefix` 확인 후 `bin/`을 PATH에 추가                        |\n| `doctor`에서 CLI 누락 표시   | 해당 CLI 미설치                    | `npm i -g @anthropic-ai/claude-code` 등 설치                                |\n| 포트 3457 사용 중            | 다른 프로세스가 점유               | `PORT=4000 jaw serve` 또는 기존 프로세스 종료                               |\n| 텔레그램 봇 무반응           | 토큰 미설정 또는 Chat ID 누락      | `jaw init --telegram-token ...` 재실행                                      |\n| 텔레그램 ✓✓ 지연 표시        | Telegram 서버 측 전달 확인 타이밍  | 정상 동작 — 서버 부하에 따라 수 분 걸릴 수 있음. 버그 아님                  |\n| `npm install -g` 권한 오류   | 글로벌 디렉토리 권한 문제          | `sudo npm i -g cli-jaw` 또는 [nvm](https://github.com/nvm-sh/nvm) 사용 권장 |\n| 빌드 실패 (`tsc` 에러)       | Node 22 미만 버전                  | `node -v` 확인 → 22 이상으로 업그레이드                                     |\n| 메모리가 세션 간 유지 안 됨  | `~/.cli-jaw/memory/` 디렉토리 없음 | `jaw init` 재실행하면 자동 생성                                             |\n\n\u003e 📋 클린 재설치가 필요하신가요? [영문 README의 Fresh Start 가이드](README.md#-troubleshooting)를 참고하세요.\n\n---\n\n## 🤝 기여하기\n\n기여 환영합니다! 시작하는 방법:\n\n1. 레포를 포크하고 `master`에서 브랜치를 만드세요\n2. `npm run build \u0026\u0026 npm test`로 빌드 \u0026 테스트가 통과하는지 확인\n3. PR을 보내주세요 — 빠르게 리뷰할게요\n\n\u003e 📋 버그를 찾았거나 아이디어가 있으신가요? [이슈 열기](https://github.com/lidge-jun/cli-jaw/issues)\n\n---\n\n\u003cdiv align=\"center\"\u003e\n\n**⭐ CLI-JAW가 도움이 됐다면 Star 한 번 눌러주세요!**\n\nMade with ❤️ by the CLI-JAW community\n\n[ISC License](LICENSE)\n\n\u003c/div\u003e\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flidge-jun%2Fcli-jaw","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flidge-jun%2Fcli-jaw","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flidge-jun%2Fcli-jaw/lists"}