npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

cli-jaw

v2.0.4

Published

Personal AI assistant powered by 5 engines (Claude, Codex, Gemini, OpenCode, Copilot) — Web, Terminal, Telegram, and Discord interfaces with 107 built-in skills

Readme

CLI-JAW

你已有的 AI 订阅,一个助手统一使用。

npm TypeScript Node License Docker

English / 한국어 / 中文 / 日本語

CLI-JAW manager dashboard


快速链接


Manager dashboard

Dashboard 现在是本地运行 CLI-JAW 的主控制面。实例发现、预览、设置、员工和 Notes 都在一个地方;每个实例仍然保留自己的主目录、数据库、记忆、生命周期元数据和工作目录。

| 区域 | 作用 | |---|---| | Navigator | 按活跃/运行中/离线分组实例,显示 CLI 与模型标签、自定义名称、端口,并提供预览/打开/启动/停止/重启操作 | | Live preview | 通过 Manager 预览代理嵌入所选实例的 Web UI,带刷新/打开控件和预览开关 | | Runtime settings | 显示所选实例的当前 CLI、模型、推理深度、权限模式、工作目录、员工、技能和设置 | | Notes | 仪表盘本地的 markdown 仓库,支持文件夹树、手动保存、拖拽到文件夹、重命名、分屏预览、KaTeX、Mermaid 和代码高亮 |

发布打磨还需要补齐的截图:

  1. 同样三栏布局的深色主题 dashboard。
  2. 展示文件夹树、分屏编辑器/预览、已渲染 KaTeX/Mermaid/代码块的 Notes 模式。
  3. 展示 responsive navigation 的 mobile 或 narrow viewport dashboard。

步骤 1:安装 WSL(以管理员身份打开 PowerShell)

wsl --install

重启后,从 Start Menu 打开 Ubuntu

步骤 2:安装 CLI-JAW

curl -fsSL https://raw.githubusercontent.com/lidge-jun/cli-jaw/master/scripts/install-wsl.sh | bash

步骤 3:重新加载 shell 并启动

source ~/.bashrc
copilot login    # or: claude auth / codex login / gemini
jaw serve        # → http://localhost:3457

| 问题 | 解决办法 | |---|---| | unzip: command not found | 重新运行 installer | | jaw: command not found | source ~/.bashrc | | Permission errors | sudo chown -R $USER $(npm config get prefix) |

  1. 打开 TerminalCmd + Space → 输入 Terminal
  2. 粘贴下面的命令并按 Enter:
curl -fsSL https://raw.githubusercontent.com/lidge-jun/cli-jaw/master/scripts/install.sh | bash
  1. 认证并启动:
copilot login
jaw serve        # → http://localhost:3457

🚀 安装与运行

npm install -g cli-jaw
jaw serve

打开 http://localhost:3457。需要 Node.js 22+,并且至少完成下面一个 AI CLI 的认证。

jaw service install — 开机自启(自动检测 systemd、launchd 或 Docker)。

Claude Code 说明:如果需要 Anthropic computer-use MCP,建议使用原生 Claude installer(curl -fsSL https://claude.ai/install.sh | bashclaude install)。当 claude 看起来由 npm/bun 管理时,jaw doctor 现在会提示警告。


🔑 认证

只需要一个。选择你已经订阅的服务:

# Free
copilot login        # GitHub Copilot
opencode             # OpenCode — free models available

# Paid (monthly subscription)
claude auth          # Anthropic Claude Max (computer-use MCP users: native Claude install recommended)
codex login          # OpenAI ChatGPT Pro (npm/bun installs are fine)
gemini               # Google Gemini Advanced

检查状态:jaw doctor

🦈 CLI-JAW Doctor — 12 checks

 ✅ Node.js        v22.15.0
 ✅ Claude CLI      installed
 ✅ Codex CLI       installed
 ⚠️ Gemini CLI      not found (optional)
 ✅ OpenCode CLI    installed
 ✅ Copilot CLI     installed
 ✅ Database        jaw.db OK
 ✅ Skills          22 active, 94 reference
 ✅ MCP             3 servers configured
 ✅ Memory          MEMORY.md exists
 ✅ Server          port 3457 available

🖥️ 使用入口

CLI-JAW 有五个使用入口。每个入口使用同一个助手、同一份记忆、同一组 skills。

| Surface | 你得到什么 | |---|---| | Web PWA | 完整 UI:markdown/KaTeX/Mermaid rendering、virtual scroll、WS streaming、drag-and-drop file upload、voice recording、PABCD roadmap bar、i18n(English, Korean, Chinese, Japanese)、dark/light theme、基于 IndexedDB 的 offline message cache | | Mac WebView app | 把 jaw serve 包在原生 macOS app shell 中。不打开浏览器也能从 Dock 访问 | | Terminal TUI | multiline editing、slash-command autocomplete、overlay selectors、session persistence、resume classification | | Telegram | 语音消息(multi-provider STT)、照片、文件。scheduled task 结果会自动送达。支持 model/CLI 切换 slash commands | | Discord | 文本和文件消息、command sync、channel/thread routing、agent result forwarder |


🔀 引擎路由

五个 CLI backend 通过你已有的 OAuth 订阅进行路由。没有按 token 的 API 账单。

| CLI | 默认模型 | 认证 | 费用模式 | |---|---|---|---| | Claude | opus-4-6 | claude auth | Claude Max subscription | | Codex | gpt-5.5 | codex login | ChatGPT Pro subscription | | Gemini | gemini-3.1-pro-preview | gemini | Gemini Advanced subscription | | OpenCode | minimax-m2.7 | opencode | Free models available | | Copilot | gpt-5-mini | copilot login | Free tier available |

Fallback chain:某个引擎 rate-limited 或不可用时,下一个引擎会自动接上。使用 /fallback [cli1 cli2...] 配置。

OpenCode wildcard:接入任意模型 endpoint,包括 OpenRouter、local LLMs 或任何 OpenAI-compatible API。

切换引擎:/cli codex。切换模型:/model gpt-5.5。Web、Terminal、Telegram、Discord 都支持。


🧠 记忆

三层记忆分别负责不同的回忆范围。

| 层 | 存什么 | 如何工作 | |---|---|---| | History Block | 最近的会话上下文 | buildHistoryBlock() — 最近 10 个会话,最多 8000 字符,按工作目录限定范围。注入到提示开头 | | Memory Flush | 从对话中提取的结构化知识 | 达到阈值后触发(默认 10 轮)。抽取提示汇总为事件记录、每日日志(YYYY-MM-DD.md)、实时笔记,并保存为 markdown 文件 | | Soul + Task Snapshot | 身份和语义检索 | soul.md 定义核心价值、语调、边界。Task Snapshot 每次提示都从 FTS5 index 中搜索最多 4 条语义相关命中(每条 700 字符) |

三层都会自动进入系统提示。记忆可搜索:jaw memory search <query>,或在任意界面使用 /memory <query>

高级记忆功能包括资料摘要、初始化/迁移、重建索引流程,可从 Web UI 设置访问。


🎭 编排 — PABCD

复杂任务使用 CLI-JAW 的 5 阶段状态机。每次状态切换都需要你确认。

P (Plan) → A (Audit) → B (Build) → C (Check) → D (Done) → IDLE
   ⛔         ⛔          ⛔         auto        auto

| Phase | 发生什么 | |---|---| | P | Boss AI 写出 diff-level plan,并停下来等你 review | | A | read-only worker 验证 plan 是否可执行 | | B | Boss 实现。read-only worker 验证结果 | | C | type-check、docs update、consistency check | | D | 汇总所有变更,然后回到 idle |

状态持久化在 DB 中,server restart 后仍然保留。Workers 不能修改文件。使用 jaw orchestrate/pabcd 启用。


📦 技能

100+ skills,按用途组织。

| Category | Skills | 覆盖范围 | |---|---|---| | Office | pdf, docx, xlsx, pptx, hwp | 读取、创建、编辑文档。通过 OfficeCLI 支持 Korean HWP/HWPX | | Automation | browser, vision-click, screen-capture, desktop-control | Chrome CDP、AI coordinate click、macOS screenshot/camera、Computer Use | | Media | video, imagegen, lecture-stt, tts | Remotion video rendering、OpenAI image generation、lecture transcription、text-to-speech | | Integration | github, notion, telegram-send, memory | issues/PRs/CI、Notion pages、Telegram media delivery、persistent memory | | Visualization | diagram | 在 chat 中渲染 SVG diagrams、charts、interactive visualizations | | Dev guides | dev, dev-frontend, dev-backend, dev-data, dev-testing, dev-pabcd, dev-code-reviewer | 注入 sub-agent prompts 的 engineering guidelines |

22 个 active skills 始终注入。94+ reference skills 按需加载。

jaw skill install <name>    # activate a reference skill

🌐 浏览器与桌面自动化

| Capability | 工作方式 | |---|---| | Chrome CDP | 通过 DevTools Protocol 执行导航、点击、输入、截图、执行 JS、滚动、聚焦、按键等 10 个操作 | | Vision-click | 截屏后由 AI 提取目标坐标并点击。一个命令即可:jaw browser vision-click "Login button" | | DOM reference | ChatGPT、Grok、Gemini Web UI 的选择器映射文档,覆盖模型选择、停止按钮、工具抽屉 | | Computer Use | 通过 Codex App Computer Use MCP 自动化桌面应用。DOM 目标走 CDP,桌面应用走 Computer Use | | Diagram skill | 生成 SVG 图表和交互式 HTML 可视化,并在带复制/保存控件的沙箱化 iframe 中渲染 |


🔌 MCP

Model Context Protocol 让 AI agents 使用外部工具。CLI-JAW 用一个文件管理五个引擎的 MCP config。

jaw mcp install @anthropic/context7
# → syncs to Claude, Codex, Gemini, OpenCode, Copilot config files

不用再分别编辑五个 JSON 文件。安装一次,所有引擎都会同步。

jaw mcp sync       # re-sync after manual edits

💬 消息

Telegram

📱 Telegram ←→ 🦈 CLI-JAW ←→ 🤖 AI Engines
  1. 创建 bot — 给 @BotFather 发消息 → /newbot → 复制 token
  2. 配置 — jaw init --telegram-token YOUR_TOKEN,或使用 Web UI settings
  3. 给 bot 发送任意消息。Chat ID 会在第一条消息时自动保存

Telegram 支持:text chat、voice messages(通过 multi-provider STT 自动转写)、file/photo upload、slash commands(/cli/model/status)、scheduled task result delivery。

Discord

能力与 Telegram 相同 — text、files、commands。支持 channel/thread routing,并带有用于 agent result broadcast 的 forwarder。通过 Web UI settings 设置。

语音 & STT

语音输入支持 Web(mic button)、Telegram(voice messages)和 Discord。Providers:OpenAI-compatible、Google Vertex AI 或任意 custom endpoint。通过 Web UI settings 配置。


⏰ 调度 & heartbeat

| Feature | 做什么 | |---|---| | Heartbeat jobs | 按 cron schedule 运行 unattended tasks。结果发送到 Telegram/Discord | | Service auto-start | jaw service install — 自动检测 systemd(Linux)、launchd(macOS)或 Docker | | Memory auto-reflect | 用于 structured knowledge extraction 的 optional post-flush reflection |


⌨️ CLI 命令

jaw serve                         # start server → http://localhost:3457
jaw chat                          # terminal TUI
jaw doctor                        # 12-point diagnostics
jaw service install               # auto-start on boot
jaw skill install <name>          # activate a skill
jaw mcp install <package>         # install MCP → syncs to 5 engines
jaw memory search <query>         # search memory
jaw browser start                 # launch Chrome (CDP)
jaw browser vision-click "Login"  # AI-powered click
jaw clone ~/project               # clone instance
jaw --home ~/project serve --port 3458  # run second instance
jaw orchestrate                   # enter PABCD
jaw dispatch --agent Backend --task "..." # dispatch employee
jaw reset                         # full reset

🏗️ 多实例

运行彼此隔离的实例。每个实例都有独立 settings、memory 和 database。

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

每个实例完全独立 — working directory、memory、MCP config 都不同。


🔗 远程访问(Tailscale)

jaw serve --lan                       # bind 0.0.0.0 + allow tailnet peers
# settings.json: network.bindHost=0.0.0.0, lanBypass=true

lanBypass=true 时支持的 peer addresses:

  • 100.64.0.0/10 — Tailscale CGNAT (RFC 6598)
  • fd7a:115c:a1e0::/48 — Tailscale ULA
  • *.ts.net — MagicDNS hostnames(Host + Origin both pass)

注意事项:

  • Tailnet peers 已通过 WireGuard + IdP 认证 — 把它们当作 LAN,而不是 public。
  • Shared tailnets:结合 Tailscale ACL(acl.tailnet)限制谁能访问 node。
  • Subnet router / exit node:SNAT 会把 peer IP 折叠成 router 的 100.x,trust boundary 会变模糊。建议使用 direct tailnet membership。
  • Production:尽量把 bindHost 缩到 tailscale0 interface address,而不是 0.0.0.0
  • lanBypass=true 时,tailnet peers 会跳过 Bearer token(与 RFC 1918 一样按 LAN 处理)。如需让所有非 loopback peer 都提供 JAW_AUTH_TOKEN,设置 lanBypass=false

🐳 Docker

docker compose up -d       # → http://localhost:3457

使用非 root 的 jaw 用户,并启用 Chromium sandbox。包含两个 Dockerfile:Dockerfile(npm install)和 Dockerfile.dev(local source)。数据保存在 jaw-data named volume 中。

# Dev build
docker build -f Dockerfile.dev -t cli-jaw:dev .
docker run -d -p 3457:3457 --env-file .env cli-jaw:dev

# Pin version
docker build --build-arg CLI_JAW_VERSION=1.0.1 -t cli-jaw:1.0.1 .

# If Chromium sandbox fails
docker run -e CHROME_NO_SANDBOX=1 -p 3457:3457 cli-jaw

📖 文档

| 文档 | 内容 | |---|---| | CHANGELOG.md | Release log,包括覆盖 v1.2.0 到 v1.5.1 的 v1.6.0 catch-up | | ARCHITECTURE.md | System design、module graph、94 个 endpoints 上的 95 个 API handlers | | TESTS.md | Test coverage、counts、test plan | | memory-architecture.md | 3-layer memory model、indexing、runtime behavior | | env-vars.md | Environment variable reference | | skill-router-plan.md | Skill routing architecture | | officecli-integration.md | 面向 HWP/HWPX 和 Office documents 的 OfficeCLI setup | | devlog/structure/ | Internal architecture reference — prompt pipeline、agent spawn、frontend、server API、commands、Telegram、memory |


⚖️ 对比

| | CLI-JAW | Hermes Agent | Claude Code | |---|---|---|---| | Model access | OAuth subscriptions(Claude Max、ChatGPT Pro、Copilot、Gemini)+ OpenCode wildcard | API keys(OpenRouter 200+、Nous Portal) | Anthropic only | | Cost model | 你已经支付的 monthly subscriptions | Per-token API billing | Anthropic subscription | | Primary UI | Web PWA + Mac app + TUI | TUI only | CLI + IDE plugins | | Messaging | Telegram(voice)+ Discord | Telegram/Discord/Slack/WhatsApp/Signal | None | | Memory | 3-layer(History/Flush/Soul)+ FTS5 | Self-improving learning loop + Honcho | File-based auto-memory | | Browser automation | Chrome CDP + vision-click + DOM ref | Limited | Via MCP | | Orchestration | PABCD 5-phase FSM | Subagent spawn | Task tool | | Execution | Local + Docker | Local/Docker/SSH/Daytona/Modal/Singularity | Local | | Skills | 100+ bundled | Self-creating + agentskills.io | User-configured | | i18n | English, Korean, Chinese, Japanese | English | English |

CLI-JAW 源自 OpenClaw harness architecture(hybrid search manager、fallback patterns、session indexing)。如果从 OpenClaw 迁移,slash-command surface 和 memory model 会很熟悉。


🛠️ 开发

npm run build          # tsc → dist/
npm run dev            # tsx server.ts (hot-reload)
npm test               # native Node.js test runner

Architecture 和 test details 见 ARCHITECTURE.mdTESTS.mddevlog/structure/


❓ 故障排查

| 问题 | 解决办法 | |---|---| | 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 mismatch | npm run ensure:native(auto-rebuild) | | EADDRINUSE: port 3457 | 另一个 instance 正在运行。使用 --port 3458 | | Telegram or agent auth fails | 运行 jaw doctor,然后重启 jaw serve | | Browser commands fail | 安装 Chrome。先运行 jaw browser start |


🤝 参与贡献

  1. master fork 并创建 branch
  2. npm run build && npm test
  3. 提交 PR

发现 bug 或有想法?Open an issue


MIT License