Root CLI Subcommands

The jaw binary exposes 21 subcommands for server lifecycle, setup, orchestration, automation, and service management. These run directly from the terminal -- separate from the in-chat slash commands described in other command pages.

Global flags: Every subcommand accepts --help / -h for its own help text. Use --home <path> before any subcommand to target a different data directory (default: ~/.cli-jaw). Machine-readable JSON output is available on most commands via --json.
jaw <command> [args] [--flags]
jaw --home <path> <command>
jaw --version
jaw --help

Table of Contents

Server & Dashboard

jaw serve

Server

Start the CLI-JAW server in the foreground. The server must be running before chat, dispatch, browser, and most other commands can operate.

jaw serve [--port <N>] [--no-open] [--lan] [--remote]
OptionDefaultDescription
--port <N>3457Server port (also reads PORT env)
--no-open-Do not auto-open browser on start
--host <addr>0.0.0.0Bind address
--lanfalseEnable LAN access mode
--remotefalseEnable remote access mode (direct)
--trust-proxyfalseTrust proxy headers (for reverse proxies)
--trust-forwardedfalseTrust X-Forwarded-For header

Examples

# Start with defaults (port 3457, auto-opens browser)
jaw serve

# Custom port, no browser
jaw serve --port 3458 --no-open

# LAN mode for local network access
jaw serve --lan --port 3460

# Use a separate data directory
jaw --home ~/.cli-jaw-work serve --port 3458
~해줘 Tip: "서버 시작해줘" -- the agent cannot start jaw serve for you (it requires a foreground process). Run it manually or use jaw service install for background auto-start.

jaw dashboard

Server

Multi-instance manager. Start the dashboard server, list/start/stop instances, manage persistent services, and perform L2 cross-instance memory federation searches.

jaw dashboard <command> [options] [--json]
SubcommandDescription
serve [--port] [--from] [--count] [--no-open]Start dashboard server (default port 24576, scans from 3457)
statusDashboard health check
lsList all discovered instances
start <port> [--home]Start an instance on the given port
stop <port>Gracefully stop an instance
restart <port>Restart an instance
perm <port> [--home]Register instance as persistent service
unperm <port>Unregister persistent service
service [install|status|unset]Dashboard auto-start management
memory <search|read|instances>L2 cross-instance memory federation (read-only)
OptionDefaultDescription
--port <N>24576Dashboard port (also reads DASHBOARD_PORT env)
--from <N>3457Start scanning instances from this port
--count <N>50Number of ports to scan
--no-open-Do not auto-open browser
--json-Machine-readable JSON output
--home <path>-Data directory for start/perm subcommands

Examples

# Start the dashboard
jaw dashboard serve

# List online instances as JSON
jaw dashboard ls --json | jq '.[] | select(.status == "online")'

# Start a new instance on port 3458
jaw dashboard start 3458 --home ~/.jaw-work

# Stop an instance
jaw dashboard stop 3457

# Cross-instance memory search
jaw dashboard memory search "JWT authentication"

# List all memory instances
jaw dashboard memory instances

# Register for persistent auto-start
jaw dashboard perm 3458 --home ~/.jaw-work
~해줘 Tip: "대시보드 상태 확인해줘" -- the agent can run jaw dashboard status --json for you and report which instances are online.

jaw status

Server

Check if the jaw server is running by pinging the API. Optionally check the dashboard server too.

jaw status [--port <N>] [--json] [--dashboard]
OptionDefaultDescription
--port <N>3457Target server port
--jsonfalseMachine-readable JSON output
--dashboardfalseAlso check dashboard server (port 24576)

Exit code 0 = server running, 1 = server not running or error.

Examples

# Quick health check
jaw status

# JSON output for scripting
jaw status --json
# → {"status":"running","port":"3457","cli":"claude"}

# Check both server and dashboard
jaw status --dashboard

# Check a specific port
jaw status --port 3458
~해줘 Tip: "서버 상태 확인해줘" -- the agent runs jaw status --json to determine if the server is healthy and reports the CLI, port, and active heartbeat jobs.

Setup & Diagnostics

jaw init

Setup

Interactive setup wizard for first-time configuration. Creates ~/.cli-jaw/settings.json, configures the default CLI backend, messaging channels, and skills directory.

jaw init [options]
OptionDescription
--non-interactiveSkip prompts, use defaults
--safeAsk before optional installs
--dry-runShow what would be done without changes
--forceOverwrite existing settings
--working-dir <path>Set working directory
--cli <name>Default CLI backend (claude, codex, gemini, etc.)
--channel <ch>Active channel (telegram or discord)
--telegram-token <t>Telegram bot token
--allowed-chat-ids <ids>Comma-separated Telegram chat IDs
--discord-token <t>Discord bot token
--discord-guild-id <id>Discord guild (server) ID
--discord-channel-ids <ids>Comma-separated Discord channel IDs
--skills-dir <path>Custom skills directory

Examples

# Interactive wizard (recommended for first run)
jaw init

# Non-interactive with defaults
jaw init --non-interactive --cli claude

# Re-initialize with force
jaw init --force --cli gemini --channel telegram

# Dry run to see what would be created
jaw init --dry-run
~해줘 Tip: "초기 설정 해줘" -- run jaw init interactively; the wizard asks questions and writes your settings. For CI/CD, use --non-interactive.

jaw doctor

Setup

Diagnose installation and configuration health. Checks Node.js version, CLI binary resolution, settings file validity, MCP server connectivity, employee CLI availability, and port availability.

jaw doctor [--json] [--fix] [--tcc] [--prime]
OptionDescription
--jsonMachine-readable diagnostic output
--fixAttempt automatic fixes for detected issues
--tccCheck macOS TCC (Transparency, Consent, Control) permissions
--primePrime installation (pre-warm caches)
--repair-shared-pathsRepair contaminated shared MCP paths

Examples

# Run diagnostics
jaw doctor

# Machine-readable output
jaw doctor --json

# Auto-fix detected issues
jaw doctor --fix

# Check macOS accessibility permissions
jaw doctor --tcc
~해줘 Tip: "설치 상태 진단해줘" -- the agent can run jaw doctor --json and interpret the results, flagging any failing checks with recommended fixes.

jaw reset

Setup

Factory reset: performs MCP sync, skill reset, employee reset, and session clear. Prompts for confirmation unless --yes is passed. Requires a running server.

jaw reset [--yes] [--port <N>]
OptionDefaultDescription
--yes, -yfalseSkip confirmation prompt
--port <N>3457Target server port

Examples

# Reset with confirmation prompt
jaw reset

# Skip confirmation (scripting)
jaw reset --yes

# Reset a specific instance
jaw reset --port 3458 --yes
Warning: This resets MCP servers, skills (back to 25 defaults), employees, and the current session. Memory files are preserved.
~해줘 Tip: "전부 초기화해줘" -- the agent can trigger jaw reset --yes via the server API when authorized.

Orchestration

jaw chat

Orchestration

Interactive terminal REPL. Connects to the running server via WebSocket for real-time conversation. Supports a rich TUI mode with persistent footer, a raw JSON protocol mode for UI integration, and a minimal plain readline mode.

jaw chat [--port <N>] [--raw] [--simple]
OptionDefaultDescription
--port <N>3457Server port to connect to
--rawfalseJSON protocol mode (for programmatic UI integration)
--simplefalsePlain readline mode (minimal, no TUI)

Examples

# Default rich TUI
jaw chat

# Simple mode (works in dumb terminals)
jaw chat --simple

# Connect to a different instance
jaw chat --port 3458

# Raw JSON mode for piping
jaw chat --raw
~해줘 Tip: "채팅 시작해줘" -- jaw chat is a foreground terminal process. Inside it, use slash commands like /status, /model, /skill.

jaw dispatch

Orchestration

Send a task to an employee agent. The employee runs asynchronously via the server API and returns results via stdout. Pipe-compatible for scripting workflows. Requires JAW_BOSS_TOKEN (inherited from the server process).

jaw dispatch --agent <name> --task <text> [--json] [--port <N>]
OptionDescription
--agent <name>Employee name (case-sensitive, must match settings.json employees)
--task <text>Task instruction to send
--jsonJSON output
--port <N>Target server port

Examples

# Dispatch a frontend task
jaw dispatch --agent "Frontend" --task "Fix CSS bug in the header component"

# Dispatch a backend task
jaw dispatch --agent "Backend" --task "Add rate limiting to /api/chat endpoint"

# JSON output for piping
jaw dispatch --agent "Data" --task "Optimize the slow query in reports" --json
Note: Employee sessions cannot dispatch other employees (nested dispatch is blocked). Only the boss session has dispatch authority.
~해줘 Tip: "프론트엔드 직원한테 헤더 버그 고치라고 해줘" -- the agent dispatches via the API: the target employee runs in its own CLI instance and returns results.

jaw employee

Orchestration

Employee management utilities. Currently supports resetting employees to the default 5 profiles (Frontend, Backend, Data, Docs, QA).

jaw employee <subcommand> [--port <N>]
SubcommandDescription
resetReset employees to default 5 profiles

Examples

# Reset all employees to defaults
jaw employee reset

# Reset on a specific instance
jaw employee reset --port 3458
~해줘 Tip: "직원 초기화해줘" -- the agent calls /employee reset in-chat or runs jaw employee reset via the server API.

jaw orchestrate

Orchestration

PABCD state machine transitions. Drives the workflow through Interview, Planning, Audit, Build, Check, and Done phases. Calls the running server's API so WebSocket broadcasts reach all connected clients in real-time.

jaw orchestrate <phase> [--force] [--json] [--port <N>]
PhaseDescription
IEnter Interview (from IDLE)
PEnter Planning (from IDLE or I)
AEnter Plan Audit (from P)
BEnter Build (from A)
CEnter Check (from B)
DEnter Done (from C, returns to IDLE)
statusShow current phase, scope, audit status
resetReturn to IDLE from any state

Valid transitions: IDLE → I → P → A → B → C → D → IDLE. Interview is optional: IDLE → P is also valid.

Examples

# Start planning phase
jaw orchestrate P

# Force transition (skip validation)
jaw orchestrate B --force

# Check current state
jaw orchestrate status

# Reset to IDLE
jaw orchestrate reset

# JSON output
jaw orchestrate status --json
~해줘 Tip: "PABCD 상태 확인해줘" or "빌드 단계로 넘어가줘" -- the agent uses the in-chat /orchestrate command or calls the API to transition phases.

jaw goal

Orchestration

Persistent goal lifecycle management. Set objectives, track progress with checkpoints, and manage goal state (pause, resume, cancel, complete). Goals survive across sessions and server restarts.

jaw goal <subcommand> [args...] [--port <N>]
SubcommandDescription
set <objective>Set a new goal
statusShow active goal (default when no subcommand)
update <summary>Add a progress checkpoint
done [note]Mark goal complete
cancel [reason]Cancel goal
pausePause active goal
resumeResume paused goal
clearClear active goal
resetReset entire goal store
history [limit]Show goal history (default: 10)

Examples

# Set a new goal
jaw goal set "Implement keyboard shortcuts for the editor"

# Check current goal
jaw goal status

# Add a progress checkpoint
jaw goal update "K0: shortcut registry done, K1: in progress"

# Mark complete
jaw goal done "All phases complete, PR merged"

# View past goals
jaw goal history 5

# Pause and resume
jaw goal pause
jaw goal resume

# Cancel with reason
jaw goal cancel "Deprioritized in favor of auth refactor"
~해줘 Tip: "키보드 단축키 구현 목표 설정해줘" -- the agent calls the goal API to set and track the objective. Use "목표 완료해줘" to mark it done.

Automation & Tools

jaw memory

Automation

Persistent memory store CLI. Search, read, save, and list memory files. Memory is stored as markdown files in ~/.cli-jaw/memory/ and indexed for semantic search.

jaw memory <subcommand> [args...]
SubcommandDescription
search <query>Semantic search across all memory files
read <file> [--lines N]Read a specific memory file
save <file> <content>Write content to a memory file
listList all memory files with sizes and dates

Examples

# Search memory
jaw memory search "JWT authentication patterns"

# Read a specific file
jaw memory read structured/profile.md

# Save a new memory entry
jaw memory save structured/profile.md "- User prefers concise Korean summaries"

# Save an episode log
jaw memory save structured/episodes/live/2026-05-29.md "## 14:30\n- Completed CLI docs page"

# List all files
jaw memory list
~해줘 Tip: "JWT 관련 메모리 찾아줘" -- the agent searches memory via the API. "프로필에 한국어 선호 추가해줘" saves to structured/profile.md.

jaw browser

Automation

Chrome browser control via CDP (Chrome DevTools Protocol). Open pages, take screenshots, click elements, type text, manage tabs, and perform web AI-powered browsing. Requires the server to be running.

jaw browser <subcommand> [args...]
SubcommandDescription
statusShow browser connection status and active tabs
tabsList open browser tabs
open <url>Open a URL in the browser
screenshot [--clip]Take a screenshot of the current page
snapshotGet accessibility tree snapshot (ref-based)
click <ref>Click an element by ref ID
type <ref> <text>Type text into an element
fetch <url>Adaptive fetch (browser or HTTP, auto-selected)
web-ai <subcommand>Web AI commands (intelligent page parsing)
closeClose browser session
resetReset browser state and cache

Examples

# Check browser status
jaw browser status

# Open a page and take a screenshot
jaw browser open https://example.com
jaw browser screenshot

# Get page snapshot for element refs
jaw browser snapshot

# Click and type using refs
jaw browser click ref:42
jaw browser type ref:15 "search query"

# Adaptive fetch
jaw browser fetch https://example.com/api/data
~해줘 Tip: "브라우저로 구글 열어줘" or "스크린샷 찍어줘" -- the agent uses the browser skill to control Chrome via CDP.

jaw skill

Automation

Skill management: list installed skills, install from reference/Codex/GitHub, remove skills, and view skill details. Skills are injected into the agent's system prompt.

jaw skill [subcommand] [name...]
SubcommandDescription
(none) / listList all installed (active) skills
install <name> [name...]Install skill from reference dir, Codex, or GitHub
remove <name>Remove (deactivate) a skill
info <name>Show SKILL.md content and metadata
resetReset all skills to the 25 defaults

Examples

# List installed skills
jaw skill

# Install a skill
jaw skill install cloudflare
jaw skill install docker kubernetes terraform

# Remove a skill
jaw skill remove cloudflare

# View skill details
jaw skill info dev-frontend

# Reset to defaults
jaw skill reset
~해줘 Tip: "cloudflare 스킬 설치해줘" or "스킬 목록 보여줘" -- the agent manages skills via /skill in-chat or the CLI command.

jaw mcp

Automation

MCP (Model Context Protocol) server management. Install npm/PyPI MCP packages, sync configuration to all 6 CLI backends, list registered servers, or reset to defaults.

jaw mcp [subcommand] [package]
SubcommandDescription
(none) / listList registered MCP servers
install <pkg>Install npm/PyPI package, add to mcp.json, sync
syncSync mcp.json to all 6 CLI backend configs
reset [--force]Reset mcp.json to defaults and re-sync

Package ecosystem is auto-detected: @scope/name is npm; mcp-server-* is PyPI. Use --pypi or --npm to override.

Examples

# List all MCP servers
jaw mcp

# Install an npm MCP package
jaw mcp install @anthropic/mcp-server-fetch

# Install a PyPI MCP package
jaw mcp install mcp-server-git

# Sync configuration to all CLIs
jaw mcp sync

# Reset to default MCP servers
jaw mcp reset --force
~해줘 Tip: "MCP 서버 목록 보여줘" or "fetch MCP 서버 설치해줘" -- the agent manages MCP servers via /mcp in-chat.

jaw connector

Automation

Dashboard connector CLI -- a unified entry point for the kanban board, notes, reminders, and audit log. Provides direct CLI access to dashboard features without the web UI.

jaw connector <surface> <subcommand> [options]
SurfaceSubcommandsDescription
boardadd, update, listKanban board tasks (backlog/ready/active/review/done)
noteswrite, listDashboard markdown notes
remindersadd, list, donePriority-based reminders
audit(none)Connector audit log
OptionDescription
--jsonJSON output
--title <text>Task/reminder title
--summary <text>Task summary
--lane <name>Kanban lane (backlog, ready, active, review, done)
--path <path>Note file path
--body <text>Note content
--priority <p>Reminder priority (low, normal, high)
--due <date>Due date for reminders

Examples

# Add a kanban task
jaw connector board add --title "Implement auth flow" --lane backlog

# Move task to done
jaw connector board update task-id-123 --lane done

# List board tasks
jaw connector board list --json

# Write a note
jaw connector notes write --path "meeting/standup.md" --body "# Standup Notes\n- Auth PR merged"

# List notes
jaw connector notes list

# Add a reminder
jaw connector reminders add --title "Review PR #42" --priority high --due 2026-06-01
~해줘 Tip: "보드에 인증 구현 태스크 추가해줘" or "노트에 회의록 저장해줘" -- the agent uses the connector API to manage dashboard surfaces.

jaw reminders

Automation

Priority-based reminders with Eisenhower-style categorization. Shortcut for jaw connector reminders.

jaw reminders <subcommand> [options]
SubcommandDescription
list / lsList all reminders (default)
add <title>Add a new reminder
done <id>Mark a reminder as done
OptionDescription
--title <text>Reminder title (alternative to positional arg)
--notes <text>Additional notes
--priority <p>Priority: low, normal, high (default: normal)
--due <date>Due date
--remind <date>Reminder notification time
--jsonJSON output

Examples

# List reminders
jaw reminders list

# Add a reminder
jaw reminders add "Review PR #42" --priority high --due 2026-06-01

# Add with notes
jaw reminders add --title "Deploy staging" --notes "After QA sign-off" --priority normal

# Mark done
jaw reminders done reminder-id-abc

# JSON output
jaw reminders list --json
~해줘 Tip: "내일까지 PR 리뷰하라고 리마인더 추가해줘" -- the agent creates a reminder with the appropriate due date and priority.

jaw project

Automation

Manage project workspace directories. Set which directories the agent should consider as active project roots. Changes are applied via the server API and persist across sessions.

jaw project <subcommand> [paths...]
SubcommandDescription
set <path>[, <path>...]Set active project directories (comma-separated)
resetClear all project directories
clearAlias for reset
listShow current project directories (default)

Examples

# Set project directories
jaw project set ~/Dev/frontend, ~/Dev/backend

# Set a single absolute path
jaw project set /Users/jun/projects/my-app

# List current directories
jaw project list

# Clear all
jaw project reset
~해줘 Tip: "프로젝트 디렉토리 설정해줘" or "프로젝트 목록 보여줘" -- the agent uses /project in-chat to manage workspace directories.

Service Management

jaw service

Service

Cross-platform auto-start management. Detects the OS and installs the server as a background daemon (launchd on macOS, systemd on Linux, Docker entrypoint in containers). One-step install + start.

jaw service [subcommand] [--port <N>] [--backend <type>]
SubcommandDescription
(none)Auto-detect OS, install + start (one-step)
installInstall as system service
statusCheck service status
unsetRemove the service
logsView service logs
OptionDefaultDescription
--port <N>3457Server port to register
--backend <type>(auto)Force backend: launchd, systemd, or docker

Examples

# One-step install + start (auto-detects OS)
jaw service

# Custom port
jaw service --port 3458

# Check service status
jaw service status

# View logs
jaw service logs

# Remove service
jaw service unset

# Force a specific backend
jaw service --backend systemd --port 3457
~해줘 Tip: "서비스로 등록해줘" or "백그라운드에서 실행되게 해줘" -- the agent runs jaw service to install a persistent daemon.

jaw clone

Service

Create an independent agent instance by cloning the current configuration. Copies config and skills, creates a fresh database, and regenerates AGENTS.md. Useful for running multiple isolated agents.

jaw clone <target-dir> [--from <source>] [--with-memory] [--link-ref]
OptionDescription
<target-dir>Destination directory for the new instance (required)
--from <source>Source directory to clone from (default: ~/.cli-jaw)
--with-memoryCopy memory files from source
--link-refSymlink reference skills instead of copying

Examples

# Clone to a new directory
jaw clone ~/.cli-jaw-work

# Clone with memory
jaw clone ~/.cli-jaw-research --with-memory

# Clone from a specific source
jaw clone ~/.cli-jaw-staging --from ~/.cli-jaw-prod

# Symlink reference skills to save space
jaw clone ~/.cli-jaw-dev --link-ref
After cloning: Start the new instance with jaw --home ~/.cli-jaw-work serve --port 3458 or register it via jaw dashboard perm 3458 --home ~/.cli-jaw-work.
~해줘 Tip: "인스턴스 하나 복제해줘" -- the agent runs jaw clone to create an independent copy, then optionally starts it on a new port.

jaw launchd

Service

macOS-specific LaunchAgent management (deprecated -- use jaw service instead). Manages plist files for auto-start on login. Retained for backward compatibility.

jaw launchd [subcommand] [--port <N>]
SubcommandDescription
(none)Check plist, create if missing, start (one-step)
statusShow current LaunchAgent status
unsetRemove plist and unload agent
cleanupRemove legacy plist files
OptionDefaultDescription
--port <N>3457Server port to register
Deprecated: jaw launchd is superseded by jaw service, which auto-detects launchd on macOS and also supports systemd (Linux) and Docker. Use jaw service for new installations.

Examples

# One-step install + start
jaw launchd

# Custom port
jaw launchd --port 3458

# Check status
jaw launchd status

# Remove
jaw launchd unset

# Cleanup legacy plists
jaw launchd cleanup
~해줘 Tip: "launchd 상태 확인해줘" -- use jaw service status instead for the cross-platform version.

Quick Reference

CommandCategoryServer RequiredDescription
jaw serveServer-Start server (foreground)
jaw dashboardServer-Multi-instance manager
jaw statusServerNoHealth check
jaw initSetupNoInteractive setup wizard
jaw doctorSetupNoInstallation diagnostics
jaw resetSetupYesFactory reset
jaw chatOrchestrationYesTerminal REPL
jaw dispatchOrchestrationYesSend task to employee
jaw employeeOrchestrationYesEmployee management
jaw orchestrateOrchestrationYesPABCD state machine
jaw goalOrchestrationYesPersistent goal lifecycle
jaw memoryAutomationYesPersistent memory store
jaw browserAutomationYesChrome browser control
jaw skillAutomationNoSkill management
jaw mcpAutomationNoMCP server management
jaw connectorAutomationPartialDashboard connector (board/notes/reminders)
jaw remindersAutomationNoPriority-based reminders
jaw projectAutomationYesWorkspace directories
jaw serviceServiceNoCross-platform auto-start
jaw cloneServiceNoClone instance
jaw launchdServiceNomacOS LaunchAgent (deprecated)

Environment Variables

VariableDefaultDescription
CLI_JAW_HOME~/.cli-jawOverride data directory (same as --home)
PORT3457Default server port
DASHBOARD_PORT24576Dashboard server port
JAW_BOSS_TOKEN-Auth token for employee dispatch (inherited from server)
JAW_EMPLOYEE_MODE-Set to 1 in employee sessions (prevents nested dispatch)