An open API service indexing awesome lists of open source software.

https://github.com/lidge-jun/cli-jaw

๐Ÿฆˆ 2-line install personal AI assistant. 5 engines (Claude, Codex, Gemini, OpenCode, Copilot), 108 skills, zero ban risk.
https://github.com/lidge-jun/cli-jaw

ai assistant automation claude cli codex copilot gemini mcp multi-agent opencode orchestrator telegram-bot typescript

Last synced: about 1 month ago
JSON representation

๐Ÿฆˆ 2-line install personal AI assistant. 5 engines (Claude, Codex, Gemini, OpenCode, Copilot), 108 skills, zero ban risk.

Awesome Lists containing this project

README

          

# CLI-JAW

### ์ด๋ฏธ ๊ฒฐ์ œํ•œ AI ๊ตฌ๋…, ํ•˜๋‚˜์˜ ๋น„์„œ๋กœ.

[![npm](https://img.shields.io/npm/v/cli-jaw)](https://npmjs.com/package/cli-jaw)
[![TypeScript](https://img.shields.io/badge/TypeScript-5.7-blue)](https://typescriptlang.org)
[![Node](https://img.shields.io/badge/node-%3E%3D22-blue)](https://nodejs.org)
[![License](https://img.shields.io/badge/license-MIT-yellow)](LICENSE)
[![Docker](https://img.shields.io/badge/Docker-supported-2496ED?logo=docker&logoColor=white)](#-docker)

[English](README.md) / **ํ•œ๊ตญ์–ด** / [ไธญๆ–‡](README.zh-CN.md)

๊ธฐ์กด ๊ตฌ๋…์„ ๊ทธ๋Œ€๋กœ ํ™œ์šฉClaude Max, ChatGPT Pro, Copilot, Gemini Advanced โ€” OAuth ๋ผ์šฐํŒ…. OpenCode๋กœ ์•„๋ฌด ๋ชจ๋ธ์ด๋‚˜ ์ถ”๊ฐ€ ๊ฐ€๋Šฅ. ํ† ํฐ ๊ณผ๊ธˆ ์—†์Œ.
์–ด๋””์„œ๋“  ์ ‘๊ทผ์›น PWA(๊ฐ€์ƒ ์Šคํฌ๋กค, WS ์ŠคํŠธ๋ฆฌ๋ฐ) + Mac WebView ์•ฑ + ํ„ฐ๋ฏธ๋„ TUI + Telegram(์Œ์„ฑ) + Discord โ€” 5๊ฐœ ์ธํ„ฐํŽ˜์ด์Šค, ํ•˜๋‚˜์˜ ๋Œ€ํ™”.
3๊ณ„์ธต ๋ฉ”๋ชจ๋ฆฌHistory Block(์ตœ๊ทผ ์„ธ์…˜) + Memory Flush(์—ํ”ผ์†Œ๋“œ, ์ผ์ผ ๋กœ๊ทธ) + Soul & Task Snapshot(์ •์ฒด์„ฑ, ์‹œ๋งจํ‹ฑ ๊ฒ€์ƒ‰). SQLite FTS5 ์ „๋ฌธ ๊ฒ€์ƒ‰.
๋ฉ€ํ‹ฐ์—์ด์ „ํŠธ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜PABCD โ€” DB ๊ธฐ๋ฐ˜ 5๋‹จ๊ณ„ FSM. Employee ์‹œ์Šคํ…œ๊ณผ Worker ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ. ํŒŒ์ผ ์ถฉ๋Œ ๊ฐ์ง€ ๋ณ‘๋ ฌ ์‹คํ–‰. ๋ชจ๋“  ๋‹จ๊ณ„์—์„œ ์‚ฌ์šฉ์ž ์Šน์ธ ํ•„์š”.
๋ธŒ๋ผ์šฐ์ € ๋ฐ ๋ฐ์Šคํฌํ†ฑ ์ž๋™ํ™”Chrome CDP, vision-click, ChatGPT/Grok/Gemini DOM ๋ ˆํผ๋Ÿฐ์Šค, Codex App Computer Use ํ†ตํ•ฉ, diagram ์Šคํ‚ฌ๋กœ SVG/์ธํ„ฐ๋ž™ํ‹ฐ๋ธŒ ์‹œ๊ฐํ™”.
MCP ํ•œ ๋ฒˆ ์„ค์น˜, 5๊ฐœ ์—”์ง„jaw mcp install๋กœ Claude, Codex, Gemini, OpenCode, Copilot์— ๋™์‹œ ๋™๊ธฐํ™”. ์„ค์ • ํŒŒ์ผ ํ•˜๋‚˜.
ํ•œ๊ตญ์–ด ์ง€์›ํ•œ๊ตญ์–ด/์˜์–ด/์ค‘๊ตญ์–ด README. i18n ์›น UI. OfficeCLI๋ฅผ ํ†ตํ•œ HWP/HWPX ํ•œ๊ธ€ ๋ฌธ์„œ ์ง€์›.

---

## ๋น ๋ฅธ ๋งํฌ

- [์„ค์น˜](#-์„ค์น˜--์‹คํ–‰) ยท [์ธ์ฆ](#-์ธ์ฆ) ยท [์ธํ„ฐํŽ˜์ด์Šค](#๏ธ-์–ด๋””์„œ-์“ฐ๋‚˜)
- [์—”์ง„ ๋ผ์šฐํŒ…](#-์—”์ง„-๋ผ์šฐํŒ…) ยท [๋ฉ”๋ชจ๋ฆฌ](#-๋ฉ”๋ชจ๋ฆฌ) ยท [PABCD](#-์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜--pabcd) ยท [์Šคํ‚ฌ](#-์Šคํ‚ฌ)
- [๋ธŒ๋ผ์šฐ์ € ์ž๋™ํ™”](#-๋ธŒ๋ผ์šฐ์ €--๋ฐ์Šคํฌํ†ฑ-์ž๋™ํ™”) ยท [MCP](#-mcp) ยท [๋ฉ”์‹œ์ง•](#-๋ฉ”์‹œ์ง•)
- [CLI ๋ช…๋ น์–ด](#๏ธ-cli-๋ช…๋ น์–ด) ยท [Docker](#-docker) ยท [๋ฌธ์„œ](#-๋ฌธ์„œ) ยท [๋น„๊ต](#๏ธ-๋น„๊ต)

---

## ๐Ÿš€ ์„ค์น˜ & ์‹คํ–‰

```bash
npm install -g cli-jaw
jaw serve
```

**http://localhost:3457**์„ ์—ด๋ฉด ๋. Node.js 22+ ๋ฐ ์•„๋ž˜ AI CLI ์ค‘ ํ•˜๋‚˜ ์ด์ƒ ์ธ์ฆ ํ•„์š”.

> `jaw service install` โ€” ๋ถ€ํŒ… ์‹œ ์ž๋™ ์‹œ์ž‘ (systemd, launchd, Docker ์ž๋™ ๊ฐ์ง€).

---

## ๐Ÿ”‘ ์ธ์ฆ

ํ•˜๋‚˜๋งŒ ์žˆ์–ด๋„ ๋ฉ๋‹ˆ๋‹ค. ์ด๋ฏธ ๊ตฌ๋… ์ค‘์ธ ๊ฒƒ์„ ์„ ํƒํ•˜์„ธ์š”:

```bash
# ๋ฌด๋ฃŒ
copilot login # GitHub Copilot
opencode # OpenCode โ€” ๋ฌด๋ฃŒ ๋ชจ๋ธ ์ œ๊ณต

# ์œ ๋ฃŒ (์›”์ •์•ก)
claude auth # Anthropic Claude Max
codex login # OpenAI ChatGPT Pro
gemini # Google Gemini Advanced
```

์ƒํƒœ ํ™•์ธ: `jaw doctor`

---

## ๐Ÿ–ฅ๏ธ ์–ด๋””์„œ ์“ฐ๋‚˜

5๊ฐœ ์ธํ„ฐํŽ˜์ด์Šค์—์„œ ๋™์ผํ•œ ๋น„์„œ, ๋™์ผํ•œ ๋ฉ”๋ชจ๋ฆฌ, ๋™์ผํ•œ ์Šคํ‚ฌ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

| ์ธํ„ฐํŽ˜์ด์Šค | ๊ธฐ๋Šฅ |
|---|---|
| **์›น PWA** | markdown/KaTeX/Mermaid ๋ Œ๋”๋ง, ๊ฐ€์ƒ ์Šคํฌ๋กค, WS ์ŠคํŠธ๋ฆฌ๋ฐ, ํŒŒ์ผ ๋“œ๋ž˜๊ทธ์•ค๋“œ๋กญ, ์Œ์„ฑ ๋…น์Œ, PABCD ๋กœ๋“œ๋งต ๋ฐ”, i18n(ํ•œ๊ตญ์–ด/์˜์–ด), ๋‹คํฌ/๋ผ์ดํŠธ ํ…Œ๋งˆ, IndexedDB ์˜คํ”„๋ผ์ธ ์บ์‹œ |
| **Mac WebView ์•ฑ** | `jaw serve`๋ฅผ macOS ์•ฑ ์…ธ๋กœ ๊ฐ์‹ผ ๊ฒƒ. ๋ธŒ๋ผ์šฐ์ € ์—†์ด Dock์—์„œ ๋ฐ”๋กœ ์ ‘๊ทผ |
| **ํ„ฐ๋ฏธ๋„ TUI** | ๋ฉ€ํ‹ฐ๋ผ์ธ ํŽธ์ง‘, ์Šฌ๋ž˜์‹œ ๋ช…๋ น์–ด ์ž๋™์™„์„ฑ, ์˜ค๋ฒ„๋ ˆ์ด ์…€๋ ‰ํ„ฐ, ์„ธ์…˜ ์œ ์ง€, ์žฌ๊ฐœ ๋ถ„๋ฅ˜ |
| **Telegram** | ์Œ์„ฑ ๋ฉ”์‹œ์ง€(๋ฉ€ํ‹ฐ STT ํ”„๋กœ๋ฐ”์ด๋”), ์‚ฌ์ง„, ํŒŒ์ผ. ์˜ˆ์•ฝ ์ž‘์—… ๊ฒฐ๊ณผ ์ž๋™ ์ „์†ก. `/cli`, `/model` ๋“ฑ ์Šฌ๋ž˜์‹œ ๋ช…๋ น์–ด |
| **Discord** | ํ…์ŠคํŠธ/ํŒŒ์ผ ๋ฉ”์‹œ์ง•, ๋ช…๋ น์–ด ๋™๊ธฐํ™”, ์ฑ„๋„/์Šค๋ ˆ๋“œ ๋ผ์šฐํŒ…, ์—์ด์ „ํŠธ ๊ฒฐ๊ณผ ํฌ์›Œ๋” |

---

## ๐Ÿ”€ ์—”์ง„ ๋ผ์šฐํŒ…

์ด๋ฏธ ๊ฒฐ์ œ ์ค‘์ธ OAuth ์›”์ •์•ก์„ ํ†ตํ•ด 5๊ฐœ CLI ๋ฐฑ์—”๋“œ๋ฅผ ๋ผ์šฐํŒ…ํ•ฉ๋‹ˆ๋‹ค. ํ† ํฐ ๋‹จ์œ„ ๊ณผ๊ธˆ ์—†์Œ.

| CLI | ๊ธฐ๋ณธ ๋ชจ๋ธ | ์ธ์ฆ | ๋น„์šฉ |
|---|---|---|---|
| **Claude** | `opus-4-6` | `claude auth` | Claude Max ๊ตฌ๋… |
| **Codex** | `gpt-5.5` | `codex login` | ChatGPT Pro ๊ตฌ๋… |
| **Gemini** | `gemini-3.1-pro-preview` | `gemini` | Gemini Advanced ๊ตฌ๋… |
| **OpenCode** | `minimax-m2.7` | `opencode` | ๋ฌด๋ฃŒ ๋ชจ๋ธ ์ œ๊ณต |
| **Copilot** | `gpt-5-mini` | `copilot login` | ๋ฌด๋ฃŒ ํ‹ฐ์–ด ์ œ๊ณต |

**ํด๋ฐฑ ์ฒด์ธ**: ํ•˜๋‚˜๊ฐ€ ์ œํ•œ๋˜๊ฑฐ๋‚˜ ๋‹ค์šด๋˜๋ฉด ๋‹ค์Œ ์—”์ง„์ด ์ž๋™์œผ๋กœ ์ด์–ด๋ฐ›์Œ. `/fallback [cli1 cli2...]`๋กœ ์„ค์ •.

**OpenCode ์™€์ผ๋“œ์นด๋“œ**: OpenRouter, ๋กœ์ปฌ LLM ๋“ฑ ์•„๋ฌด ๋ชจ๋ธ ์—”๋“œํฌ์ธํŠธ๋‚˜ ์—ฐ๊ฒฐ ๊ฐ€๋Šฅ.

---

## ๐Ÿง  ๋ฉ”๋ชจ๋ฆฌ

์„œ๋กœ ๋‹ค๋ฅธ ์‹œ๊ฐ„ ๋ฒ”์œ„๋ฅผ ๋‹ด๋‹นํ•˜๋Š” 3๊ณ„์ธต ๊ตฌ์กฐ.

| ๊ณ„์ธต | ์ €์žฅ ๋‚ด์šฉ | ๋™์ž‘ |
|---|---|---|
| **History Block** | ์ตœ๊ทผ ์„ธ์…˜ ์ปจํ…์ŠคํŠธ | ์ตœ๊ทผ 10๊ฐœ ์„ธ์…˜, ์ตœ๋Œ€ 8000์ž, ์ž‘์—… ๋””๋ ‰ํ† ๋ฆฌ ๊ธฐ์ค€. ํ”„๋กฌํ”„ํŠธ ์•ž์— ์ฃผ์ž… |
| **Memory Flush** | ๋Œ€ํ™”์—์„œ ์ถ”์ถœํ•œ ๊ตฌ์กฐํ™” ์ง€์‹ | ์ž„๊ณ„๊ฐ’(๊ธฐ๋ณธ 10ํ„ด) ๋„๋‹ฌ ์‹œ ํŠธ๋ฆฌ๊ฑฐ. ์—ํ”ผ์†Œ๋“œ, ์ผ์ผ ๋กœ๊ทธ(`YYYY-MM-DD.md`), ๋ผ์ด๋ธŒ ๋…ธํŠธ๋กœ ์š”์•ฝ |
| **Soul + Task Snapshot** | ์ •์ฒด์„ฑ๊ณผ ์‹œ๋งจํ‹ฑ ๊ฒ€์ƒ‰ | `soul.md`๋กœ ํ•ต์‹ฌ ๊ฐ€์น˜/ํ†ค/๊ฒฝ๊ณ„ ์ •์˜. FTS5 ์ธ๋ฑ์Šค์—์„œ ํ”„๋กฌํ”„ํŠธ๋‹น ์ตœ๋Œ€ 4๊ฐœ ๊ด€๋ จ ํžˆํŠธ(700์ž) ๊ฒ€์ƒ‰ |

์„ธ ๊ณ„์ธต ๋ชจ๋‘ ์‹œ์Šคํ…œ ํ”„๋กฌํ”„ํŠธ์— ์ž๋™ ๋ฐ˜์˜. `jaw memory search ` ๋˜๋Š” `/memory `๋กœ ๊ฒ€์ƒ‰.

---

## ๐ŸŽญ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ โ€” PABCD

๋ณต์žกํ•œ ์ž‘์—…์„ ์œ„ํ•œ 5๋‹จ๊ณ„ ์ƒํƒœ ๋จธ์‹ . ๋ชจ๋“  ์ „ํ™˜์— ์‚ฌ์šฉ์ž ์Šน์ธ ํ•„์š”.

```
P (Plan) โ†’ A (Audit) โ†’ B (Build) โ†’ C (Check) โ†’ D (Done) โ†’ IDLE
โ›” โ›” โ›” ์ž๋™ ์ž๋™
```

| ๋‹จ๊ณ„ | ๋™์ž‘ |
|---|---|
| **P** | Boss AI๊ฐ€ diff ์ˆ˜์ค€ ๊ณ„ํš ์ž‘์„ฑ. ๊ฒ€ํ† ๋ฅผ ์œ„ํ•ด ๋Œ€๊ธฐ |
| **A** | ์ฝ๊ธฐ ์ „์šฉ Worker๊ฐ€ ๊ณ„ํš์˜ ์‹คํ–‰ ๊ฐ€๋Šฅ์„ฑ ๊ฒ€์ฆ |
| **B** | Boss๊ฐ€ ๊ตฌํ˜„. ์ฝ๊ธฐ ์ „์šฉ Worker๊ฐ€ ๊ฒฐ๊ณผ ๊ฒ€์ฆ |
| **C** | ํƒ€์ž… ์ฒดํฌ, ๋ฌธ์„œ ๊ฐฑ์‹ , ์ผ๊ด€์„ฑ ๊ฒ€์‚ฌ |
| **D** | ์ „์ฒด ๋ณ€๊ฒฝ ์š”์•ฝ. IDLE๋กœ ๋ณต๊ท€ |

์ƒํƒœ๋Š” DB์— ์˜์†ํ™”๋˜์–ด ์„œ๋ฒ„ ์žฌ์‹œ์ž‘์—๋„ ์œ ์ง€. Worker๋Š” ํŒŒ์ผ ์ˆ˜์ • ๋ถˆ๊ฐ€. `jaw orchestrate` ๋˜๋Š” `/pabcd`๋กœ ํ™œ์„ฑํ™”.

---

## ๐Ÿ“ฆ ์Šคํ‚ฌ

100๊ฐœ ์ด์ƒ์˜ ์Šคํ‚ฌ, ์šฉ๋„๋ณ„ ์ •๋ฆฌ.

| ์นดํ…Œ๊ณ ๋ฆฌ | ์Šคํ‚ฌ | ๊ธฐ๋Šฅ |
|---|---|---|
| **์˜คํ”ผ์Šค** | `pdf`, `docx`, `xlsx`, `pptx`, `hwp` | ๋ฌธ์„œ ์ฝ๊ธฐ/์ƒ์„ฑ/ํŽธ์ง‘. OfficeCLI๋ฅผ ํ†ตํ•œ ํ•œ๊ธ€ HWP/HWPX |
| **์ž๋™ํ™”** | `browser`, `vision-click`, `screen-capture`, `desktop-control` | Chrome CDP, AI ์ขŒํ‘œ ํด๋ฆญ, macOS ์Šคํฌ๋ฆฐ์ƒท/์นด๋ฉ”๋ผ, Computer Use |
| **๋ฏธ๋””์–ด** | `video`, `imagegen`, `lecture-stt`, `tts` | Remotion ๋น„๋””์˜ค, OpenAI ์ด๋ฏธ์ง€ ์ƒ์„ฑ, ๊ฐ•์˜ ์ „์‚ฌ, ์Œ์„ฑ ํ•ฉ์„ฑ |
| **ํ†ตํ•ฉ** | `github`, `notion`, `telegram-send`, `memory` | ์ด์Šˆ/PR/CI, Notion ํŽ˜์ด์ง€, Telegram ๋ฏธ๋””์–ด, ์˜์† ๋ฉ”๋ชจ๋ฆฌ |
| **์‹œ๊ฐํ™”** | `diagram` | SVG ๋‹ค์ด์–ด๊ทธ๋žจ, ์ฐจํŠธ, ์ธํ„ฐ๋ž™ํ‹ฐ๋ธŒ ์‹œ๊ฐํ™”๋ฅผ ์ฑ„ํŒ…์—์„œ ๋ Œ๋”๋ง |
| **๊ฐœ๋ฐœ ๊ฐ€์ด๋“œ** | `dev`, `dev-frontend`, `dev-backend`, `dev-data`, `dev-testing`, `dev-pabcd` | ์„œ๋ธŒ์—์ด์ „ํŠธ ํ”„๋กฌํ”„ํŠธ์— ์ฃผ์ž…๋˜๋Š” ๊ฐœ๋ฐœ ๊ฐ€์ด๋“œ๋ผ์ธ |

22๊ฐœ ํ™œ์„ฑ ์Šคํ‚ฌ (ํ•ญ์ƒ ์ฃผ์ž…). 94๊ฐœ ์ด์ƒ ์ฐธ์กฐ ์Šคํ‚ฌ (์š”์ฒญ ์‹œ ๋กœ๋“œ).

---

## ๐ŸŒ ๋ธŒ๋ผ์šฐ์ € & ๋ฐ์Šคํฌํ†ฑ ์ž๋™ํ™”

| ๊ธฐ๋Šฅ | ๋™์ž‘ |
|---|---|
| **Chrome CDP** | ํƒ์ƒ‰, ํด๋ฆญ, ํƒ€์ดํ•‘, ์Šคํฌ๋ฆฐ์ƒท, JS ์‹คํ–‰, ์Šคํฌ๋กค, ํฌ์ปค์Šค, ํ‚ค ์ž…๋ ฅ โ€” DevTools Protocol 10๊ฐœ ์•ก์…˜ |
| **Vision-click** | ํ™”๋ฉด ์บก์ฒ˜ โ†’ AI๊ฐ€ ์ขŒํ‘œ ์ถ”์ถœ โ†’ ํด๋ฆญ. `jaw browser vision-click "๋กœ๊ทธ์ธ ๋ฒ„ํŠผ"` |
| **DOM ๋ ˆํผ๋Ÿฐ์Šค** | ChatGPT, Grok, Gemini ์›น UI์˜ ์…€๋ ‰ํ„ฐ ๋งต โ€” ๋ชจ๋ธ ์„ ํƒ, ์ค‘์ง€ ๋ฒ„ํŠผ, ๋„๊ตฌ ๋“œ๋กœ์–ด |
| **Computer Use** | Codex App Computer Use MCP๋ฅผ ํ†ตํ•œ ๋ฐ์Šคํฌํ†ฑ ์•ฑ ์ž๋™ํ™” |
| **Diagram ์Šคํ‚ฌ** | SVG ๋‹ค์ด์–ด๊ทธ๋žจ/์ธํ„ฐ๋ž™ํ‹ฐ๋ธŒ HTML ์‹œ๊ฐํ™”, ์ƒŒ๋“œ๋ฐ•์Šค iframe์—์„œ ๋ Œ๋”๋ง |

---

## ๐Ÿ”Œ MCP

[Model Context Protocol](https://modelcontextprotocol.io)์€ AI ์—์ด์ „ํŠธ๊ฐ€ ์™ธ๋ถ€ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. CLI-JAW๋Š” 5๊ฐœ ์—”์ง„์˜ MCP ์„ค์ •์„ ํ•˜๋‚˜์˜ ํŒŒ์ผ๋กœ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

```bash
jaw mcp install @anthropic/context7
# โ†’ Claude, Codex, Gemini, OpenCode, Copilot ์„ค์ • ํŒŒ์ผ์— ๋™์‹œ ๋™๊ธฐํ™”
```

---

## ๐Ÿ’ฌ ๋ฉ”์‹œ์ง•

### Telegram

์„ค์ • 3๋‹จ๊ณ„: BotFather์—์„œ ๋ด‡ ์ƒ์„ฑ โ†’ `jaw init --telegram-token` โ†’ ๋ฉ”์‹œ์ง€ ์ „์†ก.

ํ…์ŠคํŠธ ์ฑ„ํŒ…, ์Œ์„ฑ ๋ฉ”์‹œ์ง€(์ž๋™ STT), ํŒŒ์ผ/์‚ฌ์ง„ ์—…๋กœ๋“œ, ์Šฌ๋ž˜์‹œ ๋ช…๋ น์–ด, ์˜ˆ์•ฝ ์ž‘์—… ๊ฒฐ๊ณผ ์ „์†ก.

### Discord

Telegram๊ณผ ๋™์ผ โ€” ํ…์ŠคํŠธ, ํŒŒ์ผ, ๋ช…๋ น์–ด. ์ฑ„๋„/์Šค๋ ˆ๋“œ ๋ผ์šฐํŒ…, ์—์ด์ „ํŠธ ๊ฒฐ๊ณผ ํฌ์›Œ๋”. ์›น UI ์„ค์ •์—์„œ ๊ตฌ์„ฑ.

### ์Œ์„ฑ & STT

์›น(๋งˆ์ดํฌ ๋ฒ„ํŠผ), Telegram(์Œ์„ฑ ๋ฉ”์‹œ์ง€), Discord์—์„œ ๋™์ž‘. OpenAI ํ˜ธํ™˜, Google Vertex AI, ์ปค์Šคํ…€ ์—”๋“œํฌ์ธํŠธ ์ง€์›.

---

## โฐ ์Šค์ผ€์ค„๋ง

| ๊ธฐ๋Šฅ | ์„ค๋ช… |
|---|---|
| **Heartbeat ์ž‘์—…** | Cron ์˜ˆ์•ฝ ์ž‘์—…์„ ๋ฌด์ธ ์‹คํ–‰. Telegram/Discord๋กœ ๊ฒฐ๊ณผ ์ „๋‹ฌ |
| **์„œ๋น„์Šค ์ž๋™ ์‹œ์ž‘** | `jaw service install` โ€” systemd, launchd, Docker ์ž๋™ ๊ฐ์ง€ |

---

## โŒจ๏ธ CLI ๋ช…๋ น์–ด

```bash
jaw serve # ์„œ๋ฒ„ ์‹œ์ž‘
jaw chat # ํ„ฐ๋ฏธ๋„ TUI
jaw doctor # 12๊ฐœ ํ•ญ๋ชฉ ์ง„๋‹จ
jaw service install # ๋ถ€ํŒ… ์‹œ ์ž๋™ ์‹œ์ž‘
jaw skill install # ์Šคํ‚ฌ ํ™œ์„ฑํ™”
jaw mcp install # MCP ์„ค์น˜ โ†’ 5๊ฐœ ์—”์ง„ ๋™๊ธฐํ™”
jaw memory search # ๋ฉ”๋ชจ๋ฆฌ ๊ฒ€์ƒ‰
jaw browser start # Chrome ์‹คํ–‰ (CDP)
jaw browser vision-click "๋กœ๊ทธ์ธ" # AI ์ขŒํ‘œ ํด๋ฆญ
jaw clone ~/project # ์ธ์Šคํ„ด์Šค ๋ณต์ œ
jaw orchestrate # PABCD ์ง„์ž…
jaw reset # ์ „์ฒด ์ดˆ๊ธฐํ™”
```

---

## ๐Ÿณ Docker

```bash
docker compose up -d # โ†’ http://localhost:3457
```

๋น„root `jaw` ์‚ฌ์šฉ์ž, Chromium ์ƒŒ๋“œ๋ฐ•์Šค ๊ธฐ๋ณธ ํ™œ์„ฑํ™”. `Dockerfile`(npm ์„ค์น˜)๊ณผ `Dockerfile.dev`(๋กœ์ปฌ ์†Œ์Šค) ์ œ๊ณต.

---

## ๐Ÿ“– ๋ฌธ์„œ

| ๋ฌธ์„œ | ๋‚ด์šฉ |
|---|---|
| [CHANGELOG.md](CHANGELOG.md) | ๋ฆด๋ฆฌ์Šค ๋กœ๊ทธ (v1.6.0 ์บ์น˜์—…: v1.2.0~v1.5.1 ํฌํ•จ) |
| [ARCHITECTURE.md](docs/ARCHITECTURE.md) | ์‹œ์Šคํ…œ ์„ค๊ณ„, ๋ชจ๋“ˆ ๊ทธ๋ž˜ํ”„, 95๊ฐœ API ํ•ธ๋“ค๋Ÿฌ |
| [TESTS.md](TESTS.md) | ํ…Œ์ŠคํŠธ ์ปค๋ฒ„๋ฆฌ์ง€, ์นด์šดํŠธ, ๊ณ„ํš |
| [memory-architecture.md](docs/memory-architecture.md) | 3๊ณ„์ธต ๋ฉ”๋ชจ๋ฆฌ ๋ชจ๋ธ, ์ธ๋ฑ์‹ฑ, ๋Ÿฐํƒ€์ž„ |
| [devlog/structure/](devlog/structure/) | ๋‚ด๋ถ€ ์•„ํ‚คํ…์ฒ˜ ๋ ˆํผ๋Ÿฐ์Šค |

---

## โš–๏ธ ๋น„๊ต

| | CLI-JAW | Hermes Agent | Claude Code |
|---|---|---|---|
| **๋ชจ๋ธ ์ ‘๊ทผ** | OAuth ์›”์ •์•ก + OpenCode ์™€์ผ๋“œ์นด๋“œ | API ํ‚ค (OpenRouter 200+) | Anthropic ์ „์šฉ |
| **๋น„์šฉ** | ๊ธฐ์กด ์›”์ •์•ก | ํ† ํฐ ๋‹จ์œ„ ๊ณผ๊ธˆ | Anthropic ๊ตฌ๋… |
| **์ฃผ UI** | ์›น PWA + Mac ์•ฑ + TUI | TUI ์ „์šฉ | CLI + IDE ํ”Œ๋Ÿฌ๊ทธ์ธ |
| **๋ฉ”์‹œ์ง•** | Telegram(์Œ์„ฑ) + Discord | TG/Discord/Slack/WhatsApp/Signal | ์—†์Œ |
| **๋ฉ”๋ชจ๋ฆฌ** | 3๊ณ„์ธต + FTS5 | ์ž๊ธฐํ•™์Šต ๋ฃจํ”„ + Honcho | ํŒŒ์ผ ๊ธฐ๋ฐ˜ |
| **๋ธŒ๋ผ์šฐ์ €** | CDP + vision-click + DOM ref | ์ œํ•œ์  | MCP ๊ฒฝ์œ  |
| **์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜** | PABCD 5๋‹จ๊ณ„ FSM | ์„œ๋ธŒ์—์ด์ „ํŠธ ์Šคํฐ | Task ๋„๊ตฌ |

CLI-JAW๋Š” OpenClaw ํ•˜๋„ค์Šค ์•„ํ‚คํ…์ฒ˜(ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ๊ฒ€์ƒ‰ ๋งค๋‹ˆ์ €, ํด๋ฐฑ ํŒจํ„ด, ์„ธ์…˜ ์ธ๋ฑ์‹ฑ)๋ฅผ ๊ณ„์Šนํ•ฉ๋‹ˆ๋‹ค.

---

## ๐Ÿ—๏ธ ๋ฉ€ํ‹ฐ ์ธ์Šคํ„ด์Šค

๋ณ„๋„์˜ ์„ค์ •, ๋ฉ”๋ชจ๋ฆฌ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๊ฐ€์ง„ ๋…๋ฆฝ ์ธ์Šคํ„ด์Šค๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

```bash
jaw clone ~/my-project
jaw --home ~/my-project serve --port 3458
```

---

## ๐Ÿ› ๏ธ ๊ฐœ๋ฐœ

๋นŒ๋“œ ๋ฐ ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ

```bash
npm run build # tsc โ†’ dist/
npm run dev # tsx server.ts (ํ•ซ ๋ฆฌ๋กœ๋“œ)
```

```
src/
โ”œโ”€โ”€ agent/ # AI ์—์ด์ „ํŠธ ์ƒ๋ช…์ฃผ๊ธฐ, ์Šคํฐ, History Block
โ”œโ”€โ”€ browser/ # Chrome CDP, vision-click
โ”œโ”€โ”€ cli/ # CLI ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ, ์Šฌ๋ž˜์‹œ ๋ช…๋ น์–ด, ๋ชจ๋ธ ํ”„๋ฆฌ์…‹
โ”œโ”€โ”€ core/ # DB, ์„ค์ •, Employee, ๋กœ๊น…
โ”œโ”€โ”€ discord/ # Discord ๋ด‡, ๋ช…๋ น์–ด, ํŒŒ์ผ ์ „์†ก
โ”œโ”€โ”€ memory/ # 3๊ณ„์ธต ๋ฉ”๋ชจ๋ฆฌ, FTS5 ์ธ๋ฑ์‹ฑ, Flush, Soul
โ”œโ”€โ”€ orchestrator/ # PABCD ์ƒํƒœ ๋จธ์‹ , Worker ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ
โ”œโ”€โ”€ routes/ # REST API (95๊ฐœ ํ•ธ๋“ค๋Ÿฌ, 94๊ฐœ ์—”๋“œํฌ์ธํŠธ)
โ”œโ”€โ”€ security/ # ์ž…๋ ฅ ๊ฒ€์ฆ, ๊ฒฝ๋กœ ๋ณดํ˜ธ
โ””โ”€โ”€ telegram/ # Telegram ๋ด‡, ์Œ์„ฑ STT, ํฌ์›Œ๋”
```

---

## ๐Ÿงช ํ…Œ์ŠคํŠธ

```bash
npm test # tsx --test (Node.js ๋„ค์ดํ‹ฐ๋ธŒ ํ…Œ์ŠคํŠธ ๋Ÿฌ๋„ˆ)
```

[TESTS.md](TESTS.md)์—์„œ ํ˜„์žฌ ์ธ๋ฒคํ† ๋ฆฌ์™€ ํ†ต๊ณผ ์ˆ˜ ํ™•์ธ.

---

## โ“ ๋ฌธ์ œ ํ•ด๊ฒฐ

์ž์ฃผ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ

| ๋ฌธ์ œ | ํ•ด๊ฒฐ |
|---|---|
| `cli-jaw: command not found` | `npm install -g cli-jaw` ์žฌ์‹คํ–‰. `npm bin -g`๊ฐ€ `$PATH`์— ์žˆ๋Š”์ง€ ํ™•์ธ |
| `Error: node version` | Node.js 22+๋กœ ์—…๊ทธ๋ ˆ์ด๋“œ: `nvm install 22` |
| `NODE_MODULE_VERSION` ๋ถˆ์ผ์น˜ | `npm run ensure:native` (์ž๋™ ์žฌ๋นŒ๋“œ) |
| ์—์ด์ „ํŠธ ํƒ€์ž„์•„์›ƒ | `jaw doctor`๋กœ CLI ์ธ์ฆ ํ™•์ธ |
| `EADDRINUSE: port 3457` | ๋‹ค๋ฅธ ์ธ์Šคํ„ด์Šค ์‹คํ–‰ ์ค‘. `--port 3458` ์‚ฌ์šฉ |
| Telegram ๋ฌด์‘๋‹ต | `jaw doctor`๋กœ ํ† ํฐ ํ™•์ธ. `jaw serve` ์‹คํ–‰ ์ค‘์ธ์ง€ ํ™•์ธ |
| ์Šคํ‚ฌ ๋ฏธ๋กœ๋“œ | `jaw skill reset` ํ›„ `jaw mcp sync` |
| ๋ธŒ๋ผ์šฐ์ € ๋ช…๋ น์–ด ์‹คํŒจ | Chrome ์„ค์น˜. `jaw browser start` ๋จผ์ € ์‹คํ–‰ |

---

## ๐Ÿค ๊ธฐ์—ฌํ•˜๊ธฐ

1. `master`์—์„œ ํฌํฌ & ๋ธŒ๋žœ์น˜
2. `npm run build && npm test`
3. PR ์ œ์ถœ

๋ฒ„๊ทธ๋‚˜ ์•„์ด๋””์–ด? [์ด์Šˆ ์—ด๊ธฐ](https://github.com/lidge-jun/cli-jaw/issues)

---

**[MIT License](LICENSE)**