cli-jaw

mcp
Guvenlik Denetimi
Basarisiz
Health Gecti
  • License Ò€” License: MIT
  • Description Ò€” Repository has a description
  • Active repo Ò€” Last push 0 days ago
  • Community trust Ò€” 61 GitHub stars
Code Basarisiz
  • process.env Ò€” Environment variable access in bin/cli-jaw.ts
  • network request Ò€” Outbound network request in bin/commands/browser.ts
  • spawnSync Ò€” Synchronous process spawning in bin/commands/chat.ts
  • process.env Ò€” Environment variable access in bin/commands/chat.ts
  • network request Ò€” Outbound network request in bin/commands/chat.ts
  • execSync Ò€” Synchronous shell command execution in bin/commands/clone.ts
  • os.homedir Ò€” User home directory access in bin/commands/clone.ts
  • process.env Ò€” Environment variable access in bin/commands/clone.ts
  • execSync Ò€” Synchronous shell command execution in bin/commands/doctor.ts
  • fs.rmSync Ò€” Destructive file system operation in bin/commands/doctor.ts
  • os.homedir Ò€” User home directory access in bin/commands/doctor.ts
  • process.env Ò€” Environment variable access in bin/commands/doctor.ts
  • process.env Ò€” Environment variable access in bin/commands/employee.ts
  • network request Ò€” Outbound network request in bin/commands/employee.ts
  • execSync Ò€” Synchronous shell command execution in bin/commands/launchd.ts
  • process.env Ò€” Environment variable access in bin/commands/launchd.ts
  • execSync Ò€” Synchronous shell command execution in bin/commands/mcp.ts
  • exec() Ò€” Shell command execution in bin/commands/mcp.ts
Permissions Gecti
  • Permissions Ò€” No dangerous permissions requested
Purpose
This tool is a personal AI assistant and MCP server that acts as a unified interface for five major AI engines (Claude, Codex, Gemini, OpenCode, Copilot), bundling 108 distinct skills into a single command-line interface.

Security Assessment
Overall Risk: High. The application heavily modifies the system and accesses sensitive data to achieve its functionality. It frequently executes synchronous shell commands (`execSync`, `spawnSync`) across multiple modules, including chat, clone, doctor, launchd, and MCP configurations. The `doctor` command performs destructive file system operations (`fs.rmSync`), while the `clone` and `doctor` commands explicitly access the user's home directory. Additionally, outbound network requests are made in the chat, browser, and employee modules. While no hardcoded secrets were detected, the tool accesses system environment variables extensively. Because it relies heavily on executing system commands blindly, the overall security risk is elevated, especially if deployed outside a sandboxed environment.

Quality Assessment
Overall Quality: High. The project appears to be highly maintained and professionally structured. It utilizes strict TypeScript, is compatible with Docker for safe isolation, and claims an impressive automated test suite with 888 passing tests. It is licensed under the permissive MIT license. With active development (last pushed 0 days ago) and 61 GitHub stars, it demonstrates a solid baseline of community trust and ongoing engagement.

Verdict
Use with caution. While the project is well-coded and actively maintained, developers should run this tool inside an isolated environment like Docker due to its aggressive use of system shell executions and destructive file operations.
SUMMARY

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

README.md

🦈 CLI-JAW

Your Personal AI Assistant β€” Powered by 5 AI Engines

One assistant. Five brains. Always on.

Tests
TypeScript
Node
License
npm
Docker
Platforms

English / ν•œκ΅­μ–΄ / δΈ­ζ–‡

Quick Links

πŸͺŸ Are you on Windows? β€” WSL One-Click Setup

Step 1: Install WSL (PowerShell as Admin β€” one time only)

wsl --install

Restart your computer when prompted. After reboot, open Ubuntu from the Start Menu.

Step 2: Install CLI-JAW (in the Ubuntu/WSL terminal)

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

The script automatically installs prerequisites (curl, unzip, git), Node.js 22+, and CLI-JAW.

Step 3: Reload your shell (important β€” picks up PATH changes)

source ~/.bashrc

Step 4: Authenticate an AI Engine (pick one)

copilot login    # GitHub Copilot (Free)
opencode         # OpenCode (Free models available)
claude auth      # Anthropic Claude
codex login      # OpenAI Codex
gemini           # Google Gemini

Step 5: Start Chatting

jaw serve
# β†’ http://localhost:3457

πŸ’‘ The script uses fnm for Node.js management. If you already have nvm, it will use that instead.

πŸ”§ Troubleshooting WSL
Problem Fix
unzip: command not found Rerun the installer β€” it now auto-installs unzip
jaw: command not found after install Run source ~/.bashrc to reload PATH
Still can't find jaw Run export PATH="$(npm config get prefix)/bin:$PATH"
Permission errors with npm install -g Run sudo chown -R $USER $(npm config get prefix)
🍎 New to the terminal? β€” One-click Node.js + CLI-JAW install

Step 1: Open Terminal

Open Finder β†’ Applications β†’ Utilities β†’ Terminal.app
(or press ⌘ Space and type Terminal)

Step 2: Paste this and hit Enter

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

This installs Node.js + CLI-JAW automatically. Just wait until you see πŸŽ‰.

Step 3: Login & Launch

copilot login    # or: claude auth / codex login / gemini login
jaw serve

Open http://localhost:3457 in your browser. That's it! 🦈


πŸš€ Install & Run (30 seconds)

npm install -g cli-jaw
jaw serve

That's it. Open http://localhost:3457 and start chatting. 🦈

πŸ• Want it running 24/7? jaw service install β€” auto-detects systemd, launchd, or Docker.

Requires Node.js β‰₯ 22 (download) and at least 1 AI CLI authenticated below.

πŸ”’ Shared path policy: cli-jaw uses ~/.cli-jaw/* by default. It does not modify shared harness paths (~/.agents/*, ~/.agent/*, ~/.claude/*) unless you explicitly opt in. See jaw doctor --repair-shared-paths to detect or fix contamination from older versions.


πŸ”‘ Authenticate Your AI Engines

You only need one β€” pick whichever you have:

# ── Free options ──
copilot login                # GitHub Copilot (free tier)
opencode                     # OpenCode β€” auto-auth on first run (free models available)

# ── Paid options ──
claude auth                  # Anthropic Claude
codex login                  # OpenAI Codex
gemini                       # Google Gemini β€” first run triggers auth

Check what's ready: jaw doctor

πŸ“‹ Example jaw doctor output
🦈 CLI-JAW Doctor β€” 12 checks

 βœ… Node.js        v22.15.0
 βœ… npm             v10.9.4
 βœ… 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

πŸ’‘ You don't need all 5. Even one CLI is enough. Your assistant auto-detects which engines are available and falls back gracefully.


What is CLI-JAW?

CLI-JAW is a personal AI assistant that lives on your machine and works from the interfaces you already use β€” Web, Terminal, Telegram, and Discord. Ask it anything, delegate tasks, automate your workflows.
1772128366759

πŸ’¬ "Summarize today's schedule" β†’ answer on Telegram
πŸ’¬ "Refactor this module and write tests" β†’ sub-agents handle it while you grab coffee
πŸ’¬ "Download that PDF and put the key points in Notion" β†’ browser + Notion skill, done

Unlike single-model assistants, CLI-JAW orchestrates 5 AI engines (Claude, Codex, Gemini, OpenCode, Copilot) through their official CLIs β€” giving you the best of every provider in one unified experience. If one engine is busy, it automatically falls back to the next. 116 built-in skills handle everything from browser automation to document generation.

Why CLI-JAW?
πŸ›‘οΈTOS-Safe Uses official CLIs only β€” no API key scraping, no reverse engineering, no ban risk.
πŸ€–Verified Agent Tools 5 battle-tested coding agents (Claude, Codex, Gemini, OpenCode, Copilot) under one roof.
⚑Multi-Agent Fallback One engine down? The next picks up automatically. Zero downtime.
🎭PABCD Orchestration DB-persisted FSM pipeline β€” Plan β†’ Audit β†’ Build β†’ Check β†’ Done. Workers are read-only. You approve every phase.
πŸ“¦116 Built-in Skills Browser automation, document generation, Telegram/Discord, memory β€” ready out of the box.
πŸ–₯️Cross-Platform macOS, Linux, Windows β€” ENOENT-safe CLI spawn, auto-detection,.cmd shim support, and native install all work across platforms.

CLI-JAW Terminal


πŸ†• What's New (v1.4.0)

Feature Description
🧠 Advanced Memory 5-tier hierarchical storage (Profile, Episodes, Semantic, Procedures, Sessions). Hybrid retrieval: FTS5 + semantic search with query expansion. Gemini Flash-Lite powered embeddings. Full UI ops dashboard with reindex/audit controls.
🎨 Modular Dev Skills dev-frontend (1,428 lines, 13 files) and dev-backend (1,275 lines, 9 files) expanded from single SKILL.md into modular structures with core references (aesthetics, anti-slop, security, architecture) and stack-specific guides (React, Next.js, Node, Python, PostgreSQL).
πŸ“„ Office Suite Expansion HWP (Korean word processor) support added. Enhanced PPTX generation. 21 active skills (up from 18).
⚑ ACP Progress Heartbeat Real-time stderr_activity events during long agent runs. Conditional heartbeat scheduling with UI modal controls.
πŸ”„ Skill Reset jaw skill reset with --soft (reload) and --hard (full reinstall) modes. workingDir auto-correction when JAW_HOME differs from settings.json.
🎬 Video Skill Remotion-based programmatic video rendering from JSON timeline definitions. TTS integration with per-cut narration sync.
πŸ“ 1M Context Toggle Enable/disable 1M token context window with config.toml injection for supported models.
πŸš€ Preview Releases Automated preview release pipeline with timestamped versions (v1.4.0-preview.YYYYMMDD). GitHub prerelease integration.

What can your assistant do?

graph LR
    YOU["πŸ‘€ You"] -->|Web / Terminal / Telegram| JAW["🦈 CLI-JAW"]
    JAW -->|spawn| C["Claude"]
    JAW -->|spawn| X["Codex"]
    JAW -->|spawn| G["Gemini"]
    JAW -->|spawn| O["OpenCode"]
    JAW -->|spawn| P["Copilot"]
    JAW -->|inject| SK["πŸ“¦ Skills"]
    JAW -->|control| BR["🌐 Chrome"]
    JAW -->|send| TG["πŸ“± Telegram"]
  
    style JAW fill:#f5e6d3,stroke:#d4a574,stroke-width:2px,color:#5c4033
  • πŸ€– 5 AI engines, 1 assistant β€” Claude Β· Codex Β· Gemini Β· OpenCode Β· Copilot. Switch with /cli.
  • ⚑ Auto fallback β€” If one engine is down, the next picks up seamlessly.
  • 🎭 Multi-agent orchestration β€” Complex tasks get split across specialized sub-agents automatically.
  • 🎀 Voice input β€” Mic button on the web + Telegram voice messages. Multi-provider STT (OpenAI, Vertex AI).
  • πŸ“ Prompt templates β€” Create, manage, and reuse prompt templates with a visual node-map editor.
  • πŸ“¦ 116 skills β€” Browser control, file editing, image generation, web search, and much more.
  • 🧠 Persistent memory β€” Your assistant remembers past conversations and preferences across sessions.
  • πŸ“± Telegram bot β€” Chat with your assistant from your phone, send voice/photos/files.
  • 🌐 Browser automation β€” Your assistant can navigate the web, click, type, and screenshot.
  • πŸ”Œ MCP ecosystem β€” Install once, available to all 5 AI engines instantly.
  • πŸ” Web search β€” Real-time information via MCP tools.
  • ⏰ Heartbeat jobs β€” Schedule recurring tasks that run automatically.

πŸ“¦ Skill System

116 skills out of the box β€” browser, github, notion, telegram, memory, pdf, image generation, and much more.

View all skills
Tier Count How it works
Active Skills 22 Auto-injected into every AI prompt. Always available.
Reference Skills 94 AI reads them on-demand when you ask for a relevant task.

Active Skills (always on)

Skill What it does
browser Chrome automation β€” snapshot, click, navigate, screenshot
github Issues, PRs, CI, code review via gh CLI
notion Create/manage Notion pages and databases
memory Persistent long-term memory across sessions
telegram-send Send photos, documents, voice messages to Telegram
vision-click Screenshot β†’ AI finds coordinates β†’ clicks (one command)
pdf / pdf-expert / docx / xlsx / pptx / hwp Read, create, edit office & PDF documents (incl. Korean HWP)
screen-capture macOS screenshot and camera capture
video Remotion-based programmatic video rendering from JSON
dev / dev-frontend / dev-backend / dev-data / dev-testing Development guidelines for sub-agents
dev-pabcd / dev-scaffolding / dev-code-reviewer Orchestration, scaffolding, and code review guides

Reference Skills (on-demand)

94 more skills ready to use β€” imagegen, openai-docs, spotify, weather, deep-research, tts, video-downloader, apple-reminders, 1password, terraform, postgres, jupyter-notebook, sentry, whatsapp, and more.

jaw skill install <name>    # Activate a reference skill permanently

πŸ“± Telegram β€” Your Assistant in Your Pocket

Your assistant isn't tied to your desk. Chat from anywhere via Telegram:

πŸ“± Telegram ←→ 🦈 CLI-JAW ←→ πŸ€– AI Engines
πŸ“‹ Telegram setup (3 steps)
  1. Create a bot β€” Message @BotFather β†’ /newbot β†’ copy the token
  2. Configure β€” Run jaw init --telegram-token YOUR_TOKEN or edit settings in the Web UI
  3. Start chatting β€” Send any message to your bot. Your chat ID is auto-saved on first message.

What you can do from Telegram:

  • πŸ’¬ Chat with your assistant (any of 5 AI engines)
  • 🎀 Send voice messages (auto-transcribed via multi-provider STT)
  • πŸ“Ž Send files and photos for processing
  • πŸŽ™οΈ Combine voice + text + attachments in a single message
  • ⚑ Run commands (/cli, /model, /status)
  • πŸ”„ Switch AI engines on the fly

What your assistant sends back:

  • AI responses with markdown formatting
  • Generated images, PDFs, documents
  • Scheduled task results (heartbeat jobs)
  • Browser screenshots

Telegram Bot


🎀 Voice & STT β€” Speech-to-Text

CLI-JAW supports voice input across all interfaces with multi-provider STT:

Provider How to enable
OpenAI-compatible Settings UI β†’ STT β†’ OpenAI endpoint + API key
Google Vertex AI Settings UI β†’ STT β†’ Vertex AI credentials
Custom endpoint Any OpenAI-compatible STT API URL

Where you can use voice:

  • 🌐 Web UI β€” Click the mic button to record and transcribe in real-time
  • πŸ“± Telegram β€” Send voice messages; auto-transcribed before reaching the AI
  • πŸŽ™οΈ Multimodal β€” Combine voice + text + file attachments in a single message

All STT settings (provider, API keys, language) are managed in the Settings UI β€” no config files to edit.


🎭 Multi-Agent Orchestration β€” PABCD

For complex tasks, CLI-JAW uses PABCD β€” a finite state machine that enforces a strict 5-phase pipeline:

 β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
 β”‚  P          A            B           C          D       β”‚
 β”‚  Plan  β†’  Audit  β†’    Build   β†’  Check  β†’    Done      β”‚
 β”‚  πŸ“        πŸ”          πŸ”¨          βœ…          🏁       β”‚
 β”‚            ↑            ↑                               β”‚
 β”‚            └── reject β”€β”€β”˜β”€β”€ reject (self-heal loop)     β”‚
 β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
Phase Name What happens
P Plan Boss AI writes a diff-level implementation plan. Stops and waits for your approval.
A Audit A read-only worker verifies the plan is feasible β€” imports resolve, signatures match, no integration risks.
B Build Boss implements the code directly. A read-only worker verifies the result. Self-heals on failure.
C Check Final verification β€” tsc --noEmit, docs update, consistency check.
D Done Summary of all changes. State returns to IDLE.

Key design decisions:

  • DB-persisted FSM β€” state survives server restarts, CLI and Web UI share the same state
  • Hard STOP at every phase β€” the AI cannot self-advance; you approve each transition
  • Workers are READ-ONLY β€” audit and verify phases can never accidentally modify files
  • Parallel-safe β€” independent subtasks run concurrently via Promise.all with file-overlap detection
graph TD
    USER["πŸ‘€ Your Request"] --> TRIAGE["πŸ” Triage β€” Simple or Complex?"]
  
    TRIAGE -->|Simple| DIRECT["⚑ Direct Response"]
    TRIAGE -->|Complex| P["πŸ“ P: Plan"]
  
    P -->|approved| A["πŸ” A: Audit"]
    A -->|pass| B["πŸ”¨ B: Build"]
    A -->|fail| P
    B -->|verified| C["βœ… C: Check"]
    B -->|needs fix| B
    C --> D["🏁 D: Done"]
    D --> IDLE["πŸ’€ IDLE"]

    style USER fill:#f5e6d3,stroke:#d4a574,stroke-width:2px,color:#5c4033
    style P fill:#fdf2e9,stroke:#d4a574,color:#5c4033
    style A fill:#fdf2e9,stroke:#d4a574,color:#5c4033
    style B fill:#f5e6d3,stroke:#d4a574,stroke-width:2px,color:#5c4033
    style C fill:#f5e6d3,stroke:#d4a574,stroke-width:2px,color:#5c4033
    style D fill:#f5e6d3,stroke:#d4a574,stroke-width:2px,color:#5c4033

Activate manually with jaw orchestrate or let the assistant decide automatically. The Web UI shows a live roadmap bar with phase indicators and a 🦈 runner animation.

Orchestration Log


πŸ”Œ MCP β€” One Config, Six AI Engines

jaw mcp install @anthropic/context7    # Install once
# β†’ Automatically syncs to Claude, Codex, Gemini, OpenCode, Copilot, Antigravity
graph LR
    MJ["πŸ“„ mcp.json"] -->|auto-sync| CL["Claude"]
    MJ -->|auto-sync| CX["Codex"]
    MJ -->|auto-sync| GM["Gemini"]
    MJ -->|auto-sync| OC["OpenCode"]
    MJ -->|auto-sync| CP["Copilot"]
    MJ -->|auto-sync| AG["Antigravity"]
  
    style MJ fill:#f5e6d3,stroke:#d4a574,stroke-width:2px,color:#5c4033

No more editing 5 different config files. Install once β†’ all AI engines get it.


⌨️ CLI Commands

jaw serve                         # Start server
jaw service install               # Auto-start on boot (systemd/launchd/docker auto-detected)
jaw service status                # Check daemon status
jaw service unset                 # Remove auto-start
jaw service logs                  # View service logs
jaw chat                          # Terminal TUI
jaw doctor                        # Diagnostics (12 checks)
jaw skill install <name>          # Install a skill
jaw mcp install <package>         # Install MCP β†’ syncs to all 6 CLIs
jaw memory search <query>         # Search memory
jaw browser start                 # Launch Chrome (CDP)
jaw browser vision-click "Login"  # AI-powered click
jaw clone ~/my-project            # Clone instance for a separate project
jaw --home ~/my-project serve --port 3458  # Run a second instance
jaw reset                         # Full reset

πŸ—οΈ Multi-Instance β€” Separate Projects, Separate Contexts

Run multiple isolated instances of CLI-JAW β€” each with its own settings, memory, skills, and database.

# Clone your default instance to a new project
jaw clone ~/my-project

# Run it on a different port
jaw --home ~/my-project serve --port 3458

# Or auto-start both on boot
jaw service                                    # default β†’ port 3457 (auto-detect backend)
jaw --home ~/my-project service --port 3458    # project β†’ port 3458

Each instance is fully independent β€” different working directory, different memory, different MCP config. Perfect for separating work/personal contexts or per-project AI setups.

Flag / Env What it does
--home <path> Use a custom home directory for this run
--home=<path> Same, with = syntax
CLI_JAW_HOME=<path> Set via environment variable
jaw clone <target> Clone current instance to a new directory
--port <port> Custom port for serve / service

πŸ€– Models

Each CLI comes with preconfigured presets, but you can type any model ID directly.

View all presets
CLI Default Notable Models
Claude claude-sonnet-4-6 opus-4-6, haiku-4-5, extended thinking variants
Codex gpt-5.3-codex spark, 5.2, 5.1-max, 5.1-mini
Gemini gemini-2.5-pro 3.0-pro-preview, 3-flash-preview, 2.5-flash
OpenCode claude-opus-4-6-thinking πŸ†“ big-pickle, GLM-5, MiniMax, Kimi, GPT-5-Nano
Copilot gpt-4.1 πŸ†“ πŸ†“ gpt-5-mini, claude-sonnet-4.6, opus-4.6

πŸ”§ To add models: edit src/cli/registry.ts β€” one file, auto-propagates everywhere.


🐳 Docker β€” Container Isolation

Run CLI-JAW in a Docker container for security isolation β€” AI agents cannot access host files.

# Quick start (after npm publish)
docker compose up -d
# β†’ http://localhost:3457

# Or build manually
docker build -t cli-jaw .
docker run -d -p 3457:3457 --env-file .env --name jaw cli-jaw
πŸ“‹ Docker details

Two Dockerfiles:

File Purpose Use Case
Dockerfile Installs from npm registry Production / deployment
Dockerfile.dev Builds from local source Development / testing
# Dev build (local source)
docker build -f Dockerfile.dev -t cli-jaw:dev .
docker run -d -p 3457:3457 --env-file .env cli-jaw:dev

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

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

Security:

  • Non-root jaw user β€” Chromium sandbox enabled by default
  • No ipc: host or seccomp=unconfined β€” full container isolation
  • --no-sandbox only via explicit CHROME_NO_SANDBOX=1 opt-in
  • Build-time feature guard prevents outdated image deployment

Volumes: Data persists in jaw-data named volume (/home/jaw/.cli-jaw).
To use existing host config: -v ~/.cli-jaw:/home/jaw/.cli-jaw


πŸ› οΈ Development

Build, run, and project structure
# Build (TypeScript β†’ JavaScript)
npm run build          # tsc β†’ dist/

# Run from source (development)
npm run dev            # tsx server.ts (hot-reload friendly)
npx tsx bin/cli-jaw.ts serve   # Run CLI directly from .ts

# Run from build (production)
node dist/bin/cli-jaw.js serve

Project structure:

src/
β”œβ”€β”€ agent/          # AI agent lifecycle & spawning
β”œβ”€β”€ browser/        # Chrome CDP automation
β”œβ”€β”€ cli/            # CLI registry & model presets
β”œβ”€β”€ core/           # DB, config, logging
β”œβ”€β”€ http/           # Express server & middleware
β”œβ”€β”€ memory/         # Persistent memory system
β”œβ”€β”€ orchestrator/   # Multi-agent orchestration pipeline
β”œβ”€β”€ prompt/         # Prompt injection & AGENTS.md generation
β”œβ”€β”€ routes/         # REST API endpoints (40+)
β”œβ”€β”€ security/       # Input sanitization & guardrails
└── telegram/       # Telegram bot integration

TypeScript with strict: true, NodeNext module resolution, targeting ES2022.


πŸ§ͺ Tests

888 pass Β· 2 skipped Β· zero external dependencies
npm test

All tests run via tsx --test (native Node.js test runner + TypeScript).


πŸ“– Documentation

Document What's inside
ARCHITECTURE.md System design, module graph, REST API (40+ endpoints)
TESTS.md Test coverage and test plan

❓ Troubleshooting

Common issues
Problem Solution
cli-jaw: command not found Run npm install -g cli-jaw again. Check npm bin -g is in your $PATH.
Error: node version Upgrade to Node.js β‰₯ 22:nvm install 22 or download from nodejs.org
Agent timeout / no response Run jaw doctor to check CLI auth. Re-authenticate with claude auth / codex login.
EADDRINUSE: port 3457 Another instance is running. Stop it or use jaw serve --port 3458.
Telegram bot not responding Check token with jaw doctor. Ensure jaw serve is running.
Telegram βœ“βœ“ delayed Normal β€” Telegram server-side delivery ack can take a few minutes under load. Not a bug.
Skills not loading Run jaw skill reset then jaw mcp sync.
Browser commands fail Install Chrome/Chromium. Run jaw browser start first.
πŸ”„ Fresh start β€” clean reinstall for legacy / cli-claw users

If you previously used cli-claw or an older version of cli-jaw and want a completely clean slate:

# ── 1. Uninstall ──
npm uninstall -g cli-jaw

# Verify removal
which jaw && echo "⚠️  jaw still found" || echo "βœ… jaw removed"

# ── 2. Back up & remove data ──
# Back up current data (just in case)
[ -d ~/.cli-jaw ] && mv ~/.cli-jaw ~/.cli-jaw.bak.$(date +%s)

# Remove work instances
[ -d ~/.jaw-work ] && rm -rf ~/.jaw-work

# ── 3. Remove launchd daemons (macOS) ──
launchctl list | grep com.cli-jaw | awk '{print $3}' | \
  xargs -I{} launchctl bootout gui/$(id -u) system/{}  2>/dev/null
rm -f ~/Library/LaunchAgents/com.cli-jaw.*

# ── 4. Remove legacy artifacts ──
rm -f ~/AGENTS.md ~/CLAUDE.md          # postinstall symlinks
# Do not remove shared harness paths (~/.agents, ~/.agent) unless you explicitly
# created them for cli-jaw. Use: jaw doctor --repair-shared-paths
rm -rf ~/.cli-claw                     # old cli-claw data
rm -f ~/.copilot/mcp-config.json       # MCP config synced by jaw

# ── 5. Verify clean state ──
echo "=== Clean State Check ==="
which jaw; which cli-jaw               # should be "not found"
ls ~/.cli-jaw ~/.cli-claw 2>&1         # should be "No such file"

# ── 6. Reinstall ──
npm install -g cli-jaw
jaw init
jaw doctor

πŸ’‘ Your backup is at ~/.cli-jaw.bak.<timestamp> β€” copy back settings.json or jaw.db if you want to restore previous config or conversation history.


🀝 Contributing

Contributions are welcome! Here's how to get started:

  1. Fork the repo and create your branch from master
  2. Run npm run build && npm test to make sure everything works
  3. Submit a PR β€” we'll review it promptly

πŸ“‹ Found a bug or have a feature idea? Open an issue


⭐ If CLI-JAW helps you, give it a star β€” it means a lot!

Made with ❀️ by the CLI-JAW community

ISC License

Yorumlar (0)

Sonuc bulunamadi