CLI Reference
Complete command-line interface documentation for Soothe.
Command Structure
All Soothe commands follow a consistent 2-level nested pattern:
soothe <subcommand> <action> [options]
Benefits:
- Explicit actions - no ambiguity about what will happen
- Better discoverability - all actions visible in
--help - Consistent pattern across all commands
- Industry standard (matches git, docker, kubectl)
Main Entry Points
# Interactive TUI mode (default)
soothe
# Headless single-prompt mode
soothe -p "Analyze the data"
# Use custom config
soothe --config custom.yml
# Headless mode with JSONL output
soothe -p "Analyze data" --format jsonl
# Set progress verbosity
soothe -p "Complex task" --verbosity debug
Thread Management
Manage conversation threads with explicit actions.
soothe loop list
List all conversation threads.
Usage: soothe loop list [options]
Options:
--status <status>- Filter by status (active, archived)--config <file>- Use custom configuration file
Examples:
# List all threads
soothe loop list
# Filter by status
soothe loop list --status active
soothe loop list --status archived
soothe loop show
Show detailed loop information including status, branches, and checkpoint anchors.
Usage: soothe loop show <loop-id> [options]
Options:
--verbose, -v- Show detailed branch analysis
Examples:
soothe loop show loop_abc123
soothe loop show loop_abc123 --verbose
soothe loop continue
Continue a conversation thread in the TUI.
Usage: soothe loop continue [thread-id] [options]
Arguments:
thread-id- Optional. Thread ID to continue. Omit to continue last active thread.
Options:
--new- Create a new thread instead of continuing--config <file>- Use custom configuration file
Requirements:
- Requires a running daemon. Start daemon with
soothed startfirst.
Examples:
# Start daemon first
soothed start
# Continue specific thread
soothe loop continue abc123
# Start a new thread
soothe loop continue --new
# Continue last active thread
soothe loop continue
soothe loop archive
Archive a thread.
Usage: soothe loop archive <thread-id> [options]
Options:
--config <file>- Use custom configuration file
Examples:
soothe loop archive abc123
soothe loop delete
Permanently delete a thread.
Usage: soothe loop delete <thread-id> [options]
Options:
--yes, -y- Skip confirmation prompt--config <file>- Use custom configuration file
Examples:
# Delete with confirmation
soothe loop delete abc123
# Delete without confirmation
soothe loop delete abc123 --yes
soothe loop stats
Show thread execution statistics.
Usage: soothe loop stats <thread-id> [options]
Options:
--config <file>- Use custom configuration file
Examples:
soothe loop stats abc123
soothe loop tag
Add or remove tags from a thread.
Usage: soothe loop tag <thread-id> <tags...> [options]
Arguments:
thread-id- Thread IDtags- One or more tags to add/remove
Options:
--remove- Remove tags instead of adding--config <file>- Use custom configuration file
Examples:
# Add tags
soothe loop tag abc123 research analysis
# Remove tags
soothe loop tag abc123 research --remove
Status Commands
Client-side status checks that query the running daemon over WebSocket and
render a unified table. (For the fast local soothed status check that does
no RPC, see Daemon Management.)
soothe status
Show overall daemon and connection status (the default when no subcommand is given).
Usage: soothe status [options]
Options:
--json- Output as JSON.--config <file>- Use custom configuration file.
Examples:
# Default: unified table
soothe status
# JSON output
soothe status --json
Output (running daemon):
Soothe Status
┏━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Section ┃ Setting ┃ Value ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
│ Connection│ WebSocket URL │ ws://127.0.0.1:8765 │
│ │ Soothe Home │ /home/user/.soothe │
│ Daemon │ Status │ Running │
│ │ PID │ 12345 │
│ │ Started │ 2026-07-28T08:46:22+00:00 │
│ │ Active Threads │ 3 │
│ │ Daemon Version │ 0.7.0 │
│ │ Core Version │ 0.7.0 │
│ │ Readiness │ ready │
└───────────┴────────────────────┴──────────────────────────────┘
The Started row is the daemon process start time (ISO-8601 UTC timestamp,
captured when the daemon enters the running state). In JSON output it is the
started_at field under daemon; it is null until the daemon has started
successfully and is omitted from the table when the daemon is not live.
soothe status daemon
Check daemon status from the client side. Validates that the daemon is running and responsive over WebSocket.
Usage: soothe status daemon [options]
Options:
--json- Output as JSON.--config <file>- Use custom configuration file.
Examples:
soothe status daemon
soothe status daemon --json
JSON output includes: status, websocket_url, running, port_live,
active_threads, daemon_pid, started_at, daemon_version,
core_version, readiness_state, and readiness_message (when present).
soothe status connection
Check client-daemon connection settings (WebSocket URL, Soothe Home). Does not require the daemon to be running.
Usage: soothe status connection [options]
Options:
--json- Output as JSON.
Examples:
soothe status connection
soothe status connection --json
Configuration Management
soothe config reload
Reload configuration from disk without restarting the daemon.
Usage: soothe config reload [options]
Options:
--config <file>- Use custom configuration file
Examples:
# Reload default config
soothe config reload
# Reload custom config
soothe config reload --config custom.yml
Cron Management
Manage scheduled cron jobs via natural language. Requires a running daemon
(soothed start). Cron jobs are daemon-side; the CLI sends commands over
WebSocket.
soothe cron add
Add a scheduled cron job via natural language.
Usage: soothe cron add <text> [options]
Arguments:
text- Natural language schedule and task (e.g. “every day at 9am check for updates”)
Options:
--priority, -p <n>- Job priority (0–100)
Examples:
soothe cron add "every weekday at 8am summarize overnight logs"
soothe cron add "daily standup at 9am" --priority 80
soothe cron list
List all scheduled cron jobs.
Usage: soothe cron list
soothe cron show
Show details for a specific cron job.
Usage: soothe cron show <job-id>
soothe cron cancel
Cancel a scheduled cron job.
Usage: soothe cron cancel <job-id>
Daemon Management
Manage the Soothe daemon process.
soothed setup
Scaffold nano.yml / soothe.yml / daemon.yml from packaged templates and configure an LLM provider (endpoint, API key, default model).
Usage: soothed setup [options]
Options:
--config-dir <path>- Target config directory (default:$SOOTHE_HOME/config)--yes/-y- Non-interactive: scaffold only; merge provider from env keys if present--force- Overwrite existing YAML files with packaged templates--skip-provider- Skip the interactive provider wizard--skip-doctor- Skip the post-setup provider health check
Examples:
# Interactive first-time setup
soothed setup
# CI / scripts
export OPENAI_API_KEY=sk-...
soothed setup --yes
soothed start
Start the Soothe daemon.
Usage: soothed start [options]
Options:
--foreground- Run in foreground (don’t daemonize)--config <file>- Use custom configuration file
Examples:
# Start daemon in background
soothed start
# Start in foreground
soothed start --foreground
Output (background):
Starting daemon...
Daemon started successfully (PID: 12345, ws://127.0.0.1:8765)
soothed stop
Stop the running Soothe daemon.
Usage: soothed stop
Examples:
soothed stop
soothed status
Fast local daemon status check (no daemon imports, no RPC). Reads the PID file and probes the WebSocket port directly.
Usage: soothed status
Examples:
soothed status
Output (running):
Daemon status: running
PID: 12345
WebSocket: ws://127.0.0.1:8765
When the daemon is not running it prints Daemon status: stopped; if the PID
file is missing but the port is live it prints
Daemon status: running (orphan — PID file missing).
For a richer status view (PID, start time, active threads, versions, readiness), use
soothe status— see Status commands.
soothed restart
Restart the Soothe daemon.
Usage: soothed restart [options]
Options:
--config <file>- Use custom configuration file
Examples:
soothed restart
Autopilot Mode
Run tasks in autonomous mode without user interaction. Submit tasks to the
daemon’s autopilot scheduler and manage goals/jobs. Requires a running daemon
(soothed start). Alias: soothe ap ....
soothe autopilot submit
Submit a task for asynchronous autonomous execution.
Usage: soothe autopilot submit [task] [options]
Arguments:
task- Task description (omit to use--fileorGOAL.mdin cwd;-for stdin)
Options:
--file, -f <path>- Read task from a file (default:GOAL.mdwhen task omitted)--priority, -p <n>- Goal priority (0–100, default: 50)--workspace, -w <dir>- Workspace directory (default: cwd)--rail <id>- LoopRail id (e.g.feature-dev,greenfield-system,spike)--wait- Wait until the goal completes (synchronous)
Examples:
soothe autopilot submit "Refactor the auth module and add tests"
soothe ap submit --file goal.md --rail feature-dev
soothe autopilot submit "Run benchmarks" --wait
soothe autopilot status
Show autopilot state and job summary.
Usage: soothe autopilot status
soothe autopilot jobs
List all autopilot jobs.
Usage: soothe autopilot jobs
soothe autopilot goals
List all autopilot goals.
Usage: soothe autopilot goals
soothe autopilot job
Show job details and goal DAG for a specific job.
Usage: soothe autopilot job <job-id>
soothe autopilot goal
Show details for a specific goal.
Usage: soothe autopilot goal <goal-id>
soothe autopilot stop
Stop a goal, a job subtree, or all open goals. Specify exactly one of:
goal-id, --all, or --job <id>.
Usage: soothe autopilot stop [goal-id] [options]
Options:
--all- Stop all open goals--job <job-id>- Stop a job and its descendants
soothe autopilot resume
Resume a suspended or blocked goal.
Usage: soothe autopilot resume <goal-id>
soothe autopilot guide
Absorb operator guidance into ContextEngine for the next dispatch. Does not create or inject goals.
Usage: soothe autopilot guide <job-id> <text> [options]
Options:
--goal, -g <goal-id>- Optional goal under the job (default: job-wide scope)
Global Options
These options apply to all commands:
--config <file>- Path to YAML configuration file--help, -h- Show help message--version- Show version information
Common Patterns
Quick Analysis
soothe -p "Analyze the performance bottlenecks in this codebase"
Autonomous Optimization
soothe autopilot submit "Optimize the database queries"
Resume Previous Work
# List threads
soothe loop list
# Continue specific thread
soothe loop continue abc123
# Continue last active thread
soothe loop continue
Background Processing
# Start daemon
soothed start
# Run in detached mode
soothe -p "Long running task" &
# Check status later
soothed status
Thread Management
# List active threads
soothe loop list --status active
# Export thread for backup
soothe loop show abc123 --output backup.json
# Tag thread for organization
soothe loop tag abc123 research important
Migration from Old Syntax
If you were using the old flat command syntax, here’s how to migrate:
| Old Command | New Command |
|---|---|
soothe thread |
soothe loop list |
soothe thread -l |
soothe loop list |
soothe thread <id> |
soothe loop show <id> |
soothe thread -c <id> |
soothe loop continue <id> |
soothe thread -a <id> |
soothe loop archive <id> |
soothe thread -d <id> |
soothe loop delete <id> |
soothe thread -e <id> |
soothe loop show <id> |
soothe config |
soothe config reload |
soothe autopilot "task" |
soothe autopilot submit "task" |
Related Guides
- Getting Started - Basic installation and usage
- TUI Guide - Interactive terminal interface
- Configuration Guide - Customize Soothe’s behavior
- Thread Management - Working with conversation threads