Skip to content

CLI Reference

Wave CLI commands for pipeline orchestration.

Quick Reference

CommandPurpose
wave initInitialize a new project
wave runExecute a pipeline
wave doRun an ad-hoc task
wave statusCheck pipeline status
wave logsView execution logs
wave cancelCancel running pipeline
wave chatInteractive analysis of pipeline runs
wave artifactsList and export artifacts
wave listList adapters, runs, pipelines, personas, contracts
wave validateValidate configuration
wave cleanClean up workspaces
wave cleanupRemove orphaned worktrees from .wave/workspaces/
wave composeValidate and execute pipeline sequences
wave decisionsShow decision log for a pipeline run
wave doctorDiagnose project configuration and health
wave forkFork a run from a checkpoint
wave mergeMerge a pull request using forge CLI
wave personaPersona management (create, list)
wave pipelinePipeline management (create, list)
wave retroView and manage run retrospectives
wave rewindRewind a run to an earlier checkpoint
wave skillManage skill templates and install from remote sources
wave suggestSuggest impactful pipeline runs
wave serveStart the web dashboard server
wave migrateDatabase migrations
wave benchRun and analyze SWE-bench benchmarks

wave init

Initialize a new Wave project.

bash
wave init

Output:

Created wave.yaml
Created .wave/personas/navigator.md
Created .wave/personas/craftsman.md
Created .wave/personas/summarizer.md
Created .wave/pipelines/default.yaml

Project initialized. Run 'wave validate' to check configuration.

Options

bash
wave init --adapter opencode    # Use different adapter
wave init --force               # Overwrite existing files
wave init --merge               # Merge into existing config
wave init --reconfigure         # Re-run onboarding wizard with current settings as defaults
wave init --all                 # Include all pipelines regardless of release status
wave init --workspace ./ws      # Custom workspace directory path
wave init --output config.yaml  # Custom output path for wave.yaml
wave init -y                    # Answer yes to all confirmation prompts

wave run

Execute a pipeline. Arguments can be provided as positional args or flags.

bash
# Positional arguments (recommended for quick usage)
wave run ops-pr-review "Review auth module"

# Flag-based (explicit)
wave run --pipeline ops-pr-review --input "Review auth module"

# Mixed
wave run ops-pr-review --input "Review auth module"

Output:

[run-abc123] Starting pipeline: ops-pr-review
[run-abc123] Step: analyze (navigator) - started
[run-abc123] Step: analyze (navigator) - completed (45s)
[run-abc123] Step: review (auditor) - started
[run-abc123] Step: review (auditor) - completed (1m12s)
[run-abc123] Pipeline completed in 1m57s

Options

Flags are organized into four tiers by usage frequency.

Essential (Tier 1)

FlagDescription
--pipelinePipeline name to run
--inputInput data for the pipeline
--modelModel override (tier name or literal)
--adapterOverride adapter (claude, gemini, opencode, codex)

Execution (Tier 2)

FlagDescription
--from-stepStart execution from specific step
--forceSkip validation checks when using --from-step
--dry-runShow what would be executed without running
--timeoutTimeout in minutes (0 = no timeout)
--stepsRun only named steps (comma-separated)
-x, --excludeSkip named steps (comma-separated)
--on-failureFailure policy: halt (default) or skip
--detachRun as detached background process

Continuous (Tier 3)

FlagDescription
--continuousRun in continuous mode
--sourceWork item source URI
--max-iterationsMaximum iterations (0 = unlimited)
--delayDelay between iterations (e.g., 5s, 1m)

Dev/Debug (Tier 4)

FlagDescription
--mockUse mock adapter (testing)
--preserve-workspaceKeep workspace from previous run
--auto-approveAuto-approve approval gates
--no-retroSkip retrospective generation
--force-modelForce model on all steps
--runResume from specific run ID
--manifestPath to manifest file

Examples

bash
wave run impl-hotfix --dry-run                 # Preview without executing
wave run impl-speckit --from-step implement    # Start from step (auto-recovers input)
wave run impl-speckit --from-step implement --force  # Skip validation for --from-step
wave run impl-recinq --from-step report --run impl-recinq-20260219-fa19  # Recover input from specific run
wave run migrate --timeout 60                  # Custom timeout (minutes)
wave run test --mock                           # Use mock adapter for testing
wave run build -o json                         # NDJSON output to stdout (pipe-friendly)
wave run deploy -o text                        # Plain text progress to stderr
wave run review -o text -v                     # Plain text with real-time tool activity
wave run check -o quiet                        # Only final result to stderr
wave run build --model haiku                   # Override adapter model for this run
wave run impl-issue --adapter opencode --model "zai-coding-plan/glm-5-turbo"  # Override adapter and model
wave run ops-debug --preserve-workspace        # Preserve workspace from previous run (for debugging)
wave run --detach impl-issue "fix login bug"   # Detach: run in background, survive shell exit
wave run impl-issue --steps fetch,implement    # Run only specific steps
wave run impl-issue -x validate               # Skip the validate step
wave run impl-issue --on-failure skip          # Continue on step failure
wave run impl-issue --continuous --source "https://github.com/org/repo/issues" --delay 5m  # Continuous mode

Detached Mode

The --detach flag spawns the pipeline as a background process that survives shell exit. The command prints the run ID and returns immediately. Use wave logs and wave cancel to manage it.

bash
wave run --detach impl-issue -- "https://github.com/org/repo/issues/42"
# → Pipeline 'impl-issue' launched (detached)
# → Run ID:  impl-issue-20260317-...
# → Logs:    wave logs impl-issue-20260317-...
# → Cancel:  wave cancel impl-issue-20260317-...

This is the same mechanism the TUI uses internally — the subprocess runs in its own session group (setsid), so killing the parent terminal has no effect on the pipeline.


wave do

Run an ad-hoc task without a pipeline file.

bash
wave do "fix the typo in README.md"

Output:

[run-xyz789] Generated 2-step pipeline: navigate -> execute
[run-xyz789] Step: navigate (navigator) - started
[run-xyz789] Step: navigate (navigator) - completed (23s)
[run-xyz789] Step: execute (craftsman) - started
[run-xyz789] Step: execute (craftsman) - completed (1m05s)
[run-xyz789] Task completed in 1m28s

Options

bash
wave do "audit auth" --persona auditor         # Use specific persona
wave do "test" --dry-run                       # Preview only
wave do "deploy" --mock                        # Use mock adapter for testing
wave do "audit" --model opus                   # Override adapter model for this run

wave meta

Generate and execute a custom multi-step pipeline dynamically using the philosopher persona.

bash
wave meta "implement user authentication"

Output:

Invoking philosopher to generate pipeline...
This may take a moment while the AI designs your pipeline.

Generated pipeline: implement-auth
Steps:
  1. navigate [navigator]
  2. specify [philosopher]
  3. implement [craftsman]
  4. review [auditor]

Meta pipeline completed (3m28s)
  Total steps: 4, Total tokens: 45k

Options

bash
wave meta "build API" --save api-pipeline.yaml  # Save generated pipeline
wave meta "refactor code" --dry-run             # Preview without executing
wave meta "add tests" --mock                    # Use mock adapter for testing
wave meta "refactor" --model opus               # Override adapter model for this run

The --save flag is particularly useful for turning dynamically generated pipelines into reusable templates:

bash
# Generate, save, and later re-run the same pipeline
wave meta "implement OAuth2 flow" --save .wave/pipelines/oauth2.yaml
wave run oauth2 "add Google provider"

wave status

Check pipeline run status.

bash
wave status

Output:

RUN_ID          PIPELINE      STATUS     STEP        ELAPSED    TOKENS
run-abc123      ops-pr-review   running    review      2m15s      12k
run-xyz789      impl-hotfix        completed  -           5m23s      28k

Detailed Status

bash
wave status run-abc123

Output:

Run ID:     run-abc123
Pipeline:   ops-pr-review
Status:     running
Step:       review
Started:    2026-02-03 14:30:22
Elapsed:    2m15s
Input:      Review auth module

Steps:
  analyze   completed   45s
  review    running     1m30s

Options

bash
wave status --all                # Show all recent runs
wave status --format json        # JSON output for scripting

wave logs

View execution logs.

bash
wave logs run-abc123

Output:

[14:30:22] started    analyze (navigator) Starting analysis
[14:31:07] completed  analyze (navigator) 45.0s 2.1k tokens Found 5 relevant files
[14:31:08] started    review (auditor) Beginning review
[14:32:20] completed  review (auditor) 72.0s 1.5k tokens Checking security patterns

Options

bash
wave logs --step analyze         # Filter by step
wave logs --errors               # Show only errors
wave logs --tail 20              # Last 20 entries
wave logs --follow               # Stream in real-time
wave logs --since 10m            # Last 10 minutes
wave logs --level error          # Log level filter (all, info, error)
wave logs --format json          # Output as JSON for scripting

Logs vs Progress Output

Wave has two distinct observability mechanisms that serve different purposes:

  • wave logs reads the event history from the state database after events have been recorded. It works on both running and completed pipelines and is the primary tool for post-hoc debugging.
  • --output modes (text, json, quiet) control how real-time progress is rendered to the terminal during execution. They determine what you see while a pipeline runs.

Comparison

wave logs--output modes
MechanismReads recorded events from SQLite state DBRenders progress events to terminal in real-time
Data source.wave/state.db (persisted)Live event stream (ephemeral)
TimingDuring or after executionOnly during execution
Typical usePost-hoc debugging, audit trail, scriptingWatching progress, CI output formatting

Use-Case Examples

1. Debugging a failed step

After a pipeline fails, use wave logs to inspect what happened:

bash
wave logs impl-issue-20260320-abc123 --errors
wave logs impl-issue-20260320-abc123 --step implement --format json

The logs are persisted in the state database, so you can inspect them long after the run finishes.

2. Watching a pipeline run live

To see real-time progress with tool activity while a pipeline executes:

bash
wave run impl-issue -o text -v -- "https://github.com/org/repo/issues/42"

The -o text flag renders plain-text progress to stderr, and -v adds real-time tool activity lines. This output is ephemeral — once the terminal is closed, it is gone.

3. Scripting and CI integration

For machine-readable output, combine both mechanisms:

bash
# Real-time: stream structured JSON events during execution
wave run impl-issue -o json -- "https://github.com/org/repo/issues/42"

# Post-hoc: query the state DB after completion
wave logs impl-issue-20260320-abc123 --format json

Use -o json when you need to process events as they happen (e.g., updating a CI dashboard). Use wave logs --format json when you need to analyze a completed run (e.g., extracting step durations for metrics).


wave cancel

Cancel a running pipeline.

bash
wave cancel run-abc123

Output:

Cancellation requested for run-abc123 (ops-pr-review)
Pipeline will stop after current step completes.

Force Cancel

bash
wave cancel run-abc123 --force
wave cancel run-abc123 -f              # Short flag for --force

Output:

Force cancellation sent to run-abc123 (ops-pr-review)
Process terminated.

Options

bash
wave cancel --format json       # Output cancellation result as JSON
wave cancel -f --format text    # Force cancel with text output (default)

wave artifacts

List and export artifacts.

bash
wave artifacts run-abc123

Output:

STEP      ARTIFACT        TYPE    SIZE      PATH
analyze   analysis.json   json    2.1 KB    .wave/workspaces/.../analysis.json
review    findings.md     md      4.5 KB    .wave/workspaces/.../findings.md

Export Artifacts

bash
wave artifacts run-abc123 --export ./output

Output:

Exported 2 artifacts to ./output/
  ./output/analyze/analysis.json
  ./output/review/findings.md

Options

bash
wave artifacts --step analyze    # Filter by step
wave artifacts --format json     # JSON output

wave list

List Wave configuration, resources, and execution history.

bash
wave list                  # Show all categories
wave list adapters         # List configured adapters
wave list runs             # List recent pipeline runs
wave list pipelines        # List available pipelines
wave list personas         # List configured personas
wave list contracts        # List contract schemas

Adapters

bash
wave list adapters

Output:

Adapters
────────────────────────────────────────────────────────────

  ✓ claude
    binary: claude • mode: headless • format: json

Runs

bash
wave list runs

Output:

Recent Pipeline Runs
────────────────────────────────────────────────────────────────────────────────
  RUN_ID                    PIPELINE          STATUS        STARTED             DURATION
  run-abc123                ops-pr-review       completed     2026-02-03 14:30    5m23s
  run-xyz789                impl-hotfix            failed        2026-02-03 09:30    2m15s

Pipelines

bash
wave list pipelines

Output:

Pipelines
────────────────────────────────────────────────────────────

  ops-pr-review [4 steps]
    Automated code review workflow
    ○ analyze → review → report → notify

  impl-speckit [5 steps]
    Feature development pipeline
    ○ navigate → specify → plan → implement → validate

Personas

bash
wave list personas

Output:

Personas
────────────────────────────────────────────────────────────

  navigator
    adapter: claude • temp: 0.1 • allow:3
    Read-only codebase exploration

  craftsman
    adapter: claude • temp: 0.7 • allow:5
    Implementation and testing

Contracts

bash
wave list contracts

Output:

Contracts
────────────────────────────────────────────────────────────

  navigation [json-schema]
    used by:
      • impl-speckit → navigate (navigator)

  specification [json-schema]
    used by:
      • impl-speckit → specify (philosopher)

  validation-report [json-schema]
    (unused)

Options

bash
wave list runs --run-status failed       # Filter by status
wave list runs --limit 20                # Show more runs
wave list runs --run-pipeline impl-hotfix     # Filter by pipeline
wave list --format json                  # JSON output

wave validate

Validate configuration.

bash
wave validate

Output (success):

Validating wave.yaml...
  Adapters: 1 defined
  Personas: 5 defined
  Pipelines: 3 discovered

All validation checks passed.

Output (errors):

Validating wave.yaml...
ERROR: Persona 'craftsman' references undefined adapter 'opencode'
ERROR: System prompt file not found: .wave/personas/missing.md

Validation failed with 2 errors.

Options

bash
wave validate -v                     # Show all checks (global --verbose flag)
wave validate --pipeline impl-hotfix.yaml # Validate specific pipeline

wave clean

Clean up workspaces.

bash
wave clean --dry-run

Output:

Would delete:
  .wave/workspaces/run-abc123/  (ops-pr-review, 145 MB)
  .wave/workspaces/run-xyz789/  (impl-hotfix, 23 MB)
Total: 168 MB across 2 runs

Run without --dry-run to delete.

Options

bash
wave clean --all                     # Clean all workspaces
wave clean --older-than 7d           # Clean runs older than 7 days
wave clean --status completed        # Clean only completed runs
wave clean --keep-last 5             # Keep 5 most recent
wave clean --force                   # Skip confirmation
wave clean --dry-run                 # Preview what would be deleted
wave clean --quiet                   # Suppress output for scripting

wave serve

Start the web dashboard server. Provides real-time pipeline monitoring, execution control, DAG visualization, and artifact browsing through a web interface.

Note: wave serve requires the webui build tag. Install with go install -tags webui or use a release binary that includes the web UI.

bash
wave serve

Output:

Starting Wave dashboard on http://127.0.0.1:8080

Options

FlagDefaultDescription
--port8080Port to listen on
--bind127.0.0.1Address to bind to
--token""Authentication token (required for non-localhost binding)
--db.wave/state.dbPath to state database
--manifestwave.yamlPath to manifest file

Authentication

When binding to a non-localhost address (--bind 0.0.0.0), authentication is required. The token can be provided via:

  1. --token flag
  2. WAVE_SERVE_TOKEN environment variable
  3. Auto-generated (printed to stderr on startup)
bash
# Local development (no auth required)
wave serve

# Custom port
wave serve --port 9090

# Expose on all interfaces with explicit token
wave serve --bind 0.0.0.0 --token mysecret

# Use custom database path
wave serve --db .wave/state.db

wave compose

Validate artifact compatibility between adjacent pipelines in a sequence and optionally execute them in order.

bash
wave compose impl-speckit wave-evolve wave-review

Output:

Validating pipeline sequence: impl-speckit → wave-evolve → wave-review
  impl-speckit → wave-evolve: compatible (3 artifacts)
  wave-evolve → wave-review: compatible (2 artifacts)

Executing pipeline sequence...
[run-abc123] impl-speckit completed (2m15s)
[run-def456] wave-evolve completed (3m42s)
[run-ghi789] wave-review completed (1m08s)

Sequence completed in 7m05s

Options

FlagDefaultDescription
--validate-onlyfalseCheck compatibility without executing
--input""Input data passed to every pipeline in the sequence
--mockfalseUse mock adapter (for testing)
--parallelfalseEnable parallel execution (use -- to separate stages)
--fail-fasttrueStop on first failure
bash
# Validate without executing
wave compose impl-speckit wave-evolve --validate-only

# Pass input to all pipelines
wave compose pipeline-a pipeline-b --input "build feature X"

# Parallel execution with stage separator
wave compose --parallel A B -- C

# Use mock adapter for testing
wave compose impl-speckit wave-evolve --mock

wave doctor

Run diagnostic checks on Wave project configuration, tools, and environment.

bash
wave doctor

Output:

Wave Doctor
────────────────────────────────────────
  ✓ Manifest valid
  ✓ Adapters configured
  ✓ Personas resolved
  ⚠ 2 pipelines reference missing contracts

Checks: 12 passed, 1 warning, 0 errors

Options

FlagDefaultDescription
--fixfalseAuto-install missing dependencies where possible
--optimizefalseScan project and propose wave.yaml improvements
--dry-runfalseShow proposed changes without writing (requires --optimize)
--skip-aifalseSkip AI-powered analysis, deterministic scan only (requires --optimize)
--skip-codebasefalseSkip forge API codebase analysis
--yes, -yfalseAccept all proposed changes without confirmation (requires --optimize)
--jsonfalseOutput in JSON format
bash
# Auto-fix issues
wave doctor --fix

# Propose manifest optimizations
wave doctor --optimize

# Preview optimizations without applying
wave doctor --optimize --dry-run

# Non-interactive optimization
wave doctor --optimize --yes

# JSON output for scripting
wave doctor --json

Exit Codes

CodeMeaning
0All checks passed
1Warnings detected (non-blocking)
2Errors detected (action required)

wave suggest

Analyze codebase health and suggest pipeline runs that would be most impactful.

bash
wave suggest

Output:

Suggested pipelines:

  1. [P1] wave-test-hardening
     Reason: Test coverage below threshold in internal/pipeline/
     Input:  internal/pipeline/

  2. [P2] wave-security-audit
     Reason: 3 packages have no input validation
     Input:  internal/adapter/ internal/workspace/

  3. [P3] wave-evolve
     Reason: 5 TODOs found in production code

Options

FlagDefaultDescription
--limit5Maximum number of suggestions
--dry-runfalseShow what would be suggested without executing
--jsonfalseOutput in JSON format
bash
# Limit suggestions
wave suggest --limit 3

# JSON output
wave suggest --json

# Preview mode
wave suggest --dry-run

wave chat

Interactive analysis and exploration of pipeline runs. Opens a conversational session where you can investigate step outputs, artifacts, and execution details.

bash
wave chat run-abc123

Options

FlagDefaultDescription
--step""Focus context on a specific step
--modelsonnetModel to use for the chat session
--listfalseList recent runs
--continue""Continue work in a step's workspace (read-write)
--rewrite""Re-execute a step with modified prompt
--extend""Add supplementary instructions to a step
bash
# List recent runs
wave chat --list

# Chat about a specific step
wave chat run-abc123 --step implement

# Continue working in a step's workspace
wave chat run-abc123 --continue implement

# Re-execute a step with a new prompt
wave chat run-abc123 --rewrite implement

# Add supplementary instructions to a step
wave chat run-abc123 --extend implement

wave migrate

Database migration commands.

bash
wave migrate status

Output:

Current version: 3
Available migrations: 5
Pending: 2

  v1  core_tables      applied   2026-01-15 10:00:00
  v2  add_artifacts    applied   2026-01-20 14:30:00
  v3  add_metrics      applied   2026-02-01 09:00:00
  v4  add_checkpoints  pending
  v5  add_relay        pending

Apply Migrations

bash
wave migrate up

Output:

Applying migration v4: add_checkpoints... done
Applying migration v5: add_relay... done

Migrations complete. Current version: 5

Validate

Verify that applied migrations match their expected checksums and are in a consistent state.

bash
wave migrate validate

Rollback

bash
wave migrate down 3

Output:

Rolling back to version 3...
  Reverting v5: add_relay... done
  Reverting v4: add_checkpoints... done

Rollback complete. Current version: 3

TUI Guided Workflow

When launched without --no-tui, Wave provides an interactive terminal UI with a guided workflow that progresses through four phases:

Phases

PhaseViewDescription
HealthHealth checksInfrastructure health checks run automatically on startup
ProposalsSuggest viewShows recommended pipeline runs based on codebase analysis
FleetPipelines viewMonitors active pipeline runs and their step progress
AttachedLive outputShows real-time output from a running pipeline step

Phase Progression

  1. Health — Runs automatically on startup. If all checks pass, transitions to Proposals after a brief delay. If errors are detected, the user can choose to continue or address issues first.
  2. Proposals — Displays pipeline suggestions from wave suggest. Press Tab to switch to Fleet view.
  3. Fleet — Shows active runs. Press Tab to switch back to Proposals. Select a run to attach.
  4. Attached — Shows live output from the selected pipeline. Tab is blocked during attachment. Detaching returns to Fleet view.

Key Bindings

KeyAction
TabToggle between Proposals and Fleet views
EnterSelect/attach to a pipeline run
EscDetach from live output (returns to Fleet)
qQuit

To disable the TUI and use plain text output, pass --no-tui or -o text.

Key source: internal/tui/content.go


wave bench

Run and analyze SWE-bench benchmarks. Compare Wave pipeline performance against standalone Claude Code.

bench run

Execute a pipeline against each task in a JSONL benchmark dataset.

bash
wave bench run --dataset swe-bench-lite.jsonl --pipeline bench-solve
wave bench run --dataset tasks.jsonl --pipeline bench-solve --limit 10
wave bench run --dataset tasks.jsonl --mode claude --label baseline-v1
wave bench run --dataset tasks.jsonl --pipeline bench-solve --results-path results.json
FlagDefaultDescription
--datasetPath to JSONL dataset file (required)
--pipelinePipeline name to execute per task (required unless --mode=claude)
--modewaveExecution mode: wave or claude
--labelHuman-readable label for this run
--limit0Maximum number of tasks to run (0 = all)
--timeout0Per-task timeout in seconds (0 = no limit)
--concurrency1Number of tasks to run in parallel
--offset0Skip the first N tasks in the dataset
--results-pathPath to write JSON results file
--datasets-dir.wave/bench/datasetsDirectory to search for dataset files
--keep-workspacesfalsePreserve task worktrees after completion

bench report

Generate a summary from a previous benchmark run's results file.

bash
wave bench report --results results.json
wave bench report --results results.json --json

bench compare

Compare two benchmark result files to show per-task differences.

bash
wave bench compare --base baseline.json --compare wave-run.json
wave bench compare --base baseline.json --compare wave-run.json --json
FlagDefaultDescription
--basePath to base/baseline results JSON (required)
--comparePath to comparison results JSON (required)

bench list

List available benchmark datasets in the datasets directory.

bash
wave bench list
wave bench list --datasets-dir ./my-datasets

wave cleanup

Remove orphaned worktrees from .wave/workspaces/ that have no corresponding running pipeline.

bash
wave cleanup              # Remove orphaned worktrees (with confirmation)
wave cleanup --dry-run    # Show what would be removed without deleting
wave cleanup --force      # Skip confirmation prompt
FlagDefaultDescription
--dry-runfalseShow what would be removed without deleting anything
--forcefalseSkip confirmation prompt

wave decisions

Show the structured decision log from pipeline runs. Decisions record model routing choices, retry attempts, contract validations, budget allocations, and composition selections.

bash
wave decisions                          # Decisions from most recent run
wave decisions impl-issue-20240315-abc  # Decisions for a specific run
wave decisions --step plan              # Filter to a specific step
wave decisions --category model_routing # Filter by category
wave decisions --format json            # JSON output
FlagDefaultDescription
--stepFilter by step ID
--categoryFilter by category: model_routing, retry, contract, budget, composition
--formattextOutput format: text, json
--manifestwave.yamlPath to manifest file

wave fork

Create a new independent run branching from a specific step of an existing run. The forked run starts from the selected checkpoint with a fresh execution context.

bash
wave fork impl-issue-20240315-abc123 --from-step plan
wave fork impl-issue-20240315-abc123 --list       # List available fork points
wave fork impl-issue-20240315-abc123 --from-step plan --input "updated input"
FlagDefaultDescription
--from-stepFork from after this step (required unless --list)
--listfalseList available fork points
--allow-failedfalseAllow forking non-completed (failed/cancelled) runs
--inputOverride input for the forked run
--modelOverride adapter model for the forked run
--manifestwave.yamlPath to manifest file

wave merge

Merge a pull request by number or URL. Detects the forge type (GitHub, GitLab, Gitea, Bitbucket) and uses the appropriate forge CLI with API fallback.

bash
wave merge 123
wave merge https://github.com/owner/repo/pull/123
wave merge --all              # Merge all approved open PRs (oldest first)
wave merge --all --yes        # Skip confirmation
FlagDefaultDescription
--allfalseMerge all approved open PRs (oldest first)
--yesfalseSkip confirmation prompt (use with --all)

wave persona

Create and manage Wave personas.

persona create

Scaffold a new persona from a built-in template.

bash
wave persona create --name my-reviewer --template reviewer
FlagDefaultDescription
--nameName for the new persona (required)
--templateBuilt-in persona template to use (required)

persona list

List available persona templates.

bash
wave persona list

wave pipeline

Create and manage Wave pipelines.

pipeline create

Scaffold a new pipeline YAML from a built-in template.

bash
wave pipeline create --name my-pipeline --template impl-issue
FlagDefaultDescription
--nameName for the new pipeline (required)
--templateBuilt-in pipeline template to use (required)

pipeline list

List available pipelines (alias for wave list pipelines).

bash
wave pipeline list

wave retro

View, list, and generate retrospectives for pipeline runs.

bash
wave retro                          # Retrospective for most recent run
wave retro impl-issue-20240315-abc  # Retrospective for a specific run
wave retro --narrate                # Generate LLM narrative
wave retro --json                   # JSON output
FlagDefaultDescription
--narratefalseGenerate or regenerate LLM narrative
--jsonfalseOutput in JSON format

retro list

List retrospectives across runs.

bash
wave retro list
wave retro list --pipeline impl-issue
wave retro list --since 7d
FlagDefaultDescription
--pipelineFilter by pipeline name
--sinceShow retros since duration (e.g. 7d, 24h)

retro stats

Show aggregate retrospective statistics.

bash
wave retro stats

wave rewind

Reset a run's state to an earlier checkpoint (destructive). The run can be resumed from the rewound point.

bash
wave rewind impl-issue-20240315-abc123 --to-step plan
wave rewind impl-issue-20240315-abc123 --to-step plan --confirm
FlagDefaultDescription
--to-stepRewind to after this step (required)
--confirmfalseSkip confirmation prompt
--manifestwave.yamlPath to manifest file

wave skill

Manage skill templates shipped with Wave and install skills from remote sources. Skills are SKILL.md files that extend persona capabilities.

skill list

List available and installed skill templates.

bash
wave skill list
wave skill list --format json
wave skill list --remote          # Show available remote sources
FlagDefaultDescription
--formattableOutput format: table, json
--remotefalseShow available remote sources

skill install

Install a skill from bundled templates, GitHub, Tessl, or URL.

bash
wave skill install reviewer          # Bundled template
wave skill install github:owner/repo # From GitHub
wave skill install tessl:my-skill    # From Tessl registry
FlagDefaultDescription
--formattableOutput format: table, json

skill check

Run check commands for installed skills in .wave/skills/.

bash
wave skill check
FlagDefaultDescription
--formattableOutput format: table, json

Global Options

All commands support:

FlagShortDescription
--help-hShow help
--versionShow version
--manifest-mPath to manifest file (default: wave.yaml)
--debug-dEnable debug mode
--output-oOutput format: auto, json, text, quiet (default: auto)
--verbose-vInclude real-time tool activity
--jsonOutput in JSON format (equivalent to --output json)
--quiet-qSuppress non-essential output (equivalent to --output quiet)
--no-colorDisable colored output
--no-tuiDisable TUI and use text output

Exit Codes

CodeMeaning
0Success
1General error (includes pipeline failures, timeouts, validation errors)
2Usage error (invalid arguments or configuration)

Next Steps

Released under the MIT License.