Vibestrate
Vibestrate
docs
Documentation

CLI commands

Every vibe command, every option, every default - generated from the commander program tree.

Source: src/cli/index.ts 45 top-level commands

The full vibe CLI is the surface for working with Vibestrate from a terminal. This page is generated from the live commander tree exported by buildVibestrateProgram() in the Vibestrate source - when a command changes, this page changes after the next docs regeneration.

For a guided tour of how the CLI is organised, see CLI overview.

vibe init

Initialize Vibestrate in the current project (.vibestrate/ scaffold).

Options
  • -f, --force - re-scaffold / overwrite existing config files to repair a broken project (runs are preserved)
  • --yes - non-interactive: use safe detected defaults, never wait for input
  • --interactive - force the flowd wizard even when --yes would default to non-interactive
  • --git-init - if the directory isn't a git repo, create one (starter .gitignore; initial commit only when no secret-like files would be swept). Never implied by --yes.
vibe setup

Flowd wizard for provider, validation commands, and run defaults.

vibe provider

Inspect, configure, and test local coding-CLI providers.

Subcommands
vibe provider detect

Scan PATH for known local coding CLIs (claude/codex/opencode/aider/ollama).

Options
  • --json - emit JSON
vibe provider list

Show providers configured in this project.

Options
  • --json - emit JSON
vibe provider test

Send a tiny no-op prompt to a configured provider and look for the magic token.

Arguments
  • [name() { return this._name; }]
Options
  • --yes - skip confirmation prompt (non-interactive)
vibe provider set

Assign every default agent to use the given provider.

Arguments
  • <name() { return this._name; }>
Options
  • --yes - skip confirmation prompts when adding a detected provider
vibe provider setup

Flowd provider setup wizard.

vibe provider remove

Remove a provider from project.yml (refuses if a role still uses it).

Arguments
  • <name() { return this._name; }>
Options
  • --yes - skip the confirmation prompt (non-interactive)
vibe provider catalog

Show the provider capability catalog (built-in + your .vibestrate/providers-catalog.yml overlay).

Options
  • --json - emit JSON
vibe provider refresh

Detect each provider's real models/efforts (codex `debug models` JSON, else --help scraping) and write them to the catalog overlay. Refreshes stale built-in lists; local only.

Arguments
  • [name() { return this._name; }]
Options
  • --force - replace existing overlay/built-in entries instead of gap-filling
  • --dry-run - show what would be written without writing
vibe config

Show and edit .vibestrate/project.yml without hand-editing YAML.

Subcommands
vibe config view

Readable, grouped view of the config - each section shows where it's editable.

Options
  • --json - emit the structured view as JSON
vibe config show

Print the raw config YAML and validate it.

Options
  • --json - emit parsed JSON instead of YAML
vibe config get

Print a single config value (dot-path, e.g. commands.validate).

Arguments
  • <name() { return this._name; }>
Options
  • --json - emit JSON
vibe config set

Set a config value. Booleans/numbers/strings parsed automatically; arrays/objects via JSON (e.g. 'vibe config set commands.validate "[\"pnpm test\"]"').

Arguments
  • <name() { return this._name; }>
  • <name() { return this._name; }>
vibe config keys

List every settable config key with its type, allowed values, and default (from the schema).

Arguments
  • [name() { return this._name; }]
vibe config validate

Validate the project.yml file against the Vibestrate schema.

Options
  • --json - emit JSON
vibe skills

List, inspect, and assign skills (.vibestrate/skills and .claude/skills).

Subcommands
vibe skills list

Show every discovered skill and which agents use it.

Options
  • --json - emit JSON
vibe skills show

Print a skill's full SKILL.md body.

Arguments
  • <name() { return this._name; }>
vibe skills assign

Attach a skill to an agent (writes to .vibestrate/project.yml).

Arguments
  • <name() { return this._name; }>
  • <name() { return this._name; }>
vibe skills unassign

Remove a skill from an agent.

Arguments
  • <name() { return this._name; }>
  • <name() { return this._name; }>
vibe skills fetch

Fetch a skill markdown from an http(s) URL into .vibestrate/skills/ (guarded + secret-redacted).

Arguments
  • <name() { return this._name; }>
Options
  • --name <name> - skill filename (default: derived from the URL)
  • --assess - read-only AI overview: helpful / already-present / conflicting
  • --overwrite - replace an existing skill of the same name
vibe flows

List and inspect Flow run recipes from built-ins and .vibestrate/flows.

Subcommands
vibe flows list

Show every discovered Flow.

Options
  • --json - emit JSON
vibe flows show

Print a Flow's seats, ordered steps, and crew seat-coverage.

Arguments
  • <name() { return this._name; }>
Options
  • --json - emit JSON
  • --crew <id> - check coverage against this crew (default: project default)
vibe flows use

Set the default Flow applied to runs without --flow (always shown), or --clear it.

Arguments
  • [name() { return this._name; }]
Options
  • --clear - clear the default flow so the orchestrator selects per task
vibe flows suggest

Suggest a Flow from task risk signals and local Flow outcomes.

Arguments
  • <name() { return this._name; }...>
Options
  • --file <path> - known touched file path; repeat for more default: []
  • --risk <level> - task risk level: low, medium, or high
  • --json - emit JSON
vibe flows export

Export a Flow as canonical YAML (for sharing / backup).

Arguments
  • <name() { return this._name; }>
Options
  • --out <file> - write the YAML to a file instead of stdout
  • --json - emit JSON { flowId, source, yaml }
vibe flows import

Import a Flow from a local file path or an http(s) URL into .vibestrate/flows/.

Arguments
  • <name() { return this._name; }>
Options
  • --overwrite - replace an existing project flow with the same id
  • --json - emit JSON
vibe flows export-arbitration

Export a Quality Arbitration run as local JSON evidence for later evaluation.

Arguments
  • <name() { return this._name; }>
Options
  • --out <file> - write the JSON export to a local file
vibe flows hub

Browse + install Flows from the community hub (vibestrate.com/api/hub).

Subcommands
vibe flows hub list

List (or search) Flows in the hub.

Arguments
  • [name() { return this._name; }...]
Options
  • --base-url <url> - override the hub base URL
  • --json - emit JSON
vibe flows hub install

Pull + verify + install a hub Flow (by ref) into .vibestrate/flows/.

Arguments
  • <name() { return this._name; }>
Options
  • --base-url <url> - override the hub base URL
  • --overwrite - replace an existing project flow with the same id
vibe flows hub publish

Publish a project flow to the hub (public, immutable).

Arguments
  • <name() { return this._name; }>
Options
  • --version <semver> - the release version, e.g. 1.2.0
  • --name <slug> - hub name (defaults to the flow id)
  • --handle <login> - your GitHub login (must match the token account)
  • --base-url <url> - override the hub base URL
  • --allow-token-to-custom-host - send the token to a non-default origin (local testing)
  • --yes - skip the confirmation prompt
  • --json - emit JSON
vibe supervisor

Supervisor personas (the orchestrator's judgment posture). See orchestrator-personas.md.

Subcommands
vibe supervisor list

List the resolved supervisor personas (built-ins + project).

Options
  • --json - emit JSON
vibe supervisor archetypes

List the curated supervisor archetypes you can adopt.

Options
  • --json - emit JSON
vibe supervisor adopt

Adopt a curated archetype into this project's personas.

Arguments
  • <name() { return this._name; }>
vibe supervisor default

Set the project's default supervisor (built-in or a project persona).

Arguments
  • <name() { return this._name; }>
vibe supervisor remove

Remove a project persona (not a built-in or the active default).

Arguments
  • <name() { return this._name; }>
vibe profile

Runtime presets (provider + model/power) that Crew roles run on.

Subcommands
vibe profile list

List profiles, grouped by provider, with how many roles use each.

Options
  • --json - emit JSON
vibe profile add

Create a new profile.

Arguments
  • <name() { return this._name; }>
Options
  • --provider <id> - raw provider id this profile runs on
  • --label <label> - human label
  • --model <model> - provider model id (e.g. sonnet, opus)
  • --power <level> - provider-specific power/effort (e.g. balanced)
  • --max-tokens <n> - hard cap on output tokens per turn
  • --timeout <ms> - per-turn wall-clock timeout (ms)
vibe profile set

Edit an existing profile's fields.

Arguments
  • <name() { return this._name; }>
Options
  • --label <label> - human label
  • --model <model> - provider model id (e.g. sonnet, opus)
  • --power <level> - provider-specific power/effort (e.g. balanced)
  • --max-tokens <n> - hard cap on output tokens per turn
  • --timeout <ms> - per-turn wall-clock timeout (ms)
  • --provider <id> - move the profile to a different provider
vibe profile duplicate

Copy a profile under a new id (e.g. claude -> claude-cheap).

Arguments
  • <name() { return this._name; }>
  • <name() { return this._name; }>
vibe profile remove

Delete a profile (refuses if a role uses it, unless --force).

Arguments
  • <name() { return this._name; }>
Options
  • --force - delete even if roles still reference it
vibe params

Durable project parameters: typed param answers persisted + reused across runs.

Subcommands
vibe params list

List every stored param answer (secrets shown as env refs).

Options
  • --json - emit JSON
vibe params get

Print one stored value (secrets shown as env refs).

Arguments
  • <name() { return this._name; }>
vibe params set

Set one or more values: `vibe params set --flow <id> name=Acme niche=SaaS`. With --flow, keys are flow params (type-checked, secret-aware). Without it, keys are raw param keys (bare = project-global).

Arguments
  • <name() { return this._name; }...>
Options
  • --flow <id> - interpret keys as the flow's declared params (recommended)
vibe params generate

Draft a value for a `generate`-enabled param via a provider (optional, user-initiated, reviewed). Prints a suggestion; --accept stores it.

Arguments
  • <name() { return this._name; }>
Options
  • --flow <id> - the flow that declares the param
  • --accept - store the suggestion (setBy: generated) without asking
vibe params unset

Remove stored values by key (explicit, never automatic).

Arguments
  • <name() { return this._name; }...>
vibe crew

List crews, show a crew's roles, and set the default ("active") crew.

Subcommands
vibe crew list

List configured crews (the default is marked).

Options
  • --json - emit JSON
vibe crew show

Show a crew's roles, profiles, and seats (default crew if omitted).

Arguments
  • [name() { return this._name; }]
Options
  • --json - emit JSON
vibe crew use

Set the default ("active") crew - runs without --crew use it.

Arguments
  • <name() { return this._name; }>
vibe crew presets

Ready-made crews (fast / thorough) tuned by provider effort.

Subcommands
vibe crew presets list

List available presets and whether they're installed.

Options
  • --json - emit JSON
vibe crew presets add

Install a preset crew (fast / thorough) into project.yml.

Arguments
  • <name() { return this._name; }>
vibe approvals

Inspect and resolve human-approval requests for a paused run.

Subcommands
vibe approvals list

Show all approval requests for a run.

Arguments
  • <name() { return this._name; }>
Options
  • --json - emit JSON
vibe approvals show

Show a single approval request in detail.

Arguments
  • <name() { return this._name; }>
  • <name() { return this._name; }>
Options
  • --json - emit JSON
vibe approvals approve

Approve a pending approval. Resumes the run if it is waiting.

Arguments
  • <name() { return this._name; }>
  • <name() { return this._name; }>
Options
  • --note <text> - decision note recorded in approvals.json
vibe approvals reject

Reject a pending approval. The run will be marked `blocked`.

Arguments
  • <name() { return this._name; }>
  • <name() { return this._name; }>
Options
  • --note <text> - decision note recorded in approvals.json
vibe roadmap

Manage local roadmap items (.vibestrate/roadmap/roadmap.json).

Subcommands
vibe roadmap init

Create the .vibestrate/roadmap/ scaffold if missing.

vibe roadmap add

Add a roadmap item.

Arguments
  • <name() { return this._name; }>
Options
  • -d, --description <text> - longer description
  • -p, --priority <level> - low | medium | high default: medium
  • --json - emit JSON
vibe roadmap list

List roadmap items.

Options
  • --json - emit JSON
vibe roadmap show

Show a single roadmap item.

Arguments
  • <name() { return this._name; }>
Options
  • --json - emit JSON
vibe roadmap update

Update a roadmap item.

Arguments
  • <name() { return this._name; }>
Options
  • --title <text>
  • --description <text>
  • --status <s>
  • --priority <p>
vibe roadmap archive

Archive a roadmap item (keeps history).

Arguments
  • <name() { return this._name; }>
vibe roadmap proposals

List roadmap proposals stored in .vibestrate/roadmap/proposals/.

Options
  • --json - emit JSON
vibe roadmap proposal

Inspect, parse, and accept individual proposals.

Subcommands
vibe roadmap proposal show

Print a proposal's raw Markdown body.

Arguments
  • <name() { return this._name; }>
vibe roadmap proposal parse

Parse a proposal and print the typed preview.

Arguments
  • <name() { return this._name; }>
Options
  • --json - emit JSON
vibe roadmap accept

Accept a parsed proposal (creates roadmap items + tasks atomically).

Arguments
  • <name() { return this._name; }>
Options
  • --dry-run - preview without writing
  • --allow-unresolved-dependencies - skip DEPENDS_ON entries that point at unknown task titles instead of failing
  • --json - emit JSON
vibe roadmap plan

Run the configured local planner provider on a broad goal and save the output as a proposal draft.

Arguments
  • <name() { return this._name; }...>
Options
  • --id <proposalId> - explicit proposal id; default is timestamp + slug
  • --provider <providerId> - override the provider id (default: planner agent's provider)
vibe spec-up

Plan as a CTO: discovery -> spec -> architecture -> roadmap (a chain of read-only runs).

Subcommands
vibe spec-up start

Start spec-up: launch the intake run that asks the gap questions.

Arguments
  • <name() { return this._name; }...>
Options
  • --persona <id> - supervisor persona (judgment posture) for the run
  • --flow <id> - the flow to BUILD once the spec is approved (carried to `spec-up build`)
vibe spec-up questions

Show the intake run's gap questions (and their ids).

Arguments
  • <name() { return this._name; }>
Options
  • --json - emit the questions as JSON
vibe spec-up answer

Answer a round's questions; loops to a gap-check round or builds the spec.

Arguments
  • <name() { return this._name; }>
Options
  • --answer <id=value> - answer for a question id (repeatable) default: []
  • --proceed - stop questioning and build the spec now (skip further gap-checks)
vibe spec-up simplify

Explain a question in plain language (what it asks + what it affects).

Arguments
  • <name() { return this._name; }>
  • <name() { return this._name; }>
Options
  • --for-non-developer - add an everyday-life analogy (no jargon)
vibe spec-up suggest

Draft an answer grounded in your prior answers (you still decide). --all for every blank.

Arguments
  • <name() { return this._name; }>
  • [name() { return this._name; }]
Options
  • --all - suggest a draft for every question in the round
vibe spec-up approve

Approve the spec-up draft and launch the roadmap synthesis run.

Arguments
  • <name() { return this._name; }>
vibe spec-up build

Approve the spec-up draft and BUILD it: run the chosen flow seeded with the approved spec.

Arguments
  • <name() { return this._name; }>
Options
  • --flow <id> - build flow override (default: the flow carried from the spec-up run)
vibe spec-up roadmap

Turn a finished spec-up-roadmap run into a reviewable proposal.

Arguments
  • <name() { return this._name; }>
vibe spec-up edit

Edit a spec-up section (scope/spec/architecture/risks) before the build, via $EDITOR or --file. Guarded: secret-refusing, blocked after approve.

Arguments
  • <name() { return this._name; }>
  • <name() { return this._name; }>
Options
  • --file <path> - read the new content from a file instead of opening $EDITOR
vibe tasks

Manage local tasks: backlog → queued → running → done.

Subcommands
vibe tasks add

Create a task.

Arguments
  • <name() { return this._name; }>
Options
  • -d, --description <text>
  • -p, --priority <p> - low | medium | high default: medium
  • --roadmap <id> - link to a roadmap item id
  • --skills <list> - comma-separated skill names
  • --files <list> - comma-separated likely-touched files
  • --provider <id> - override the provider for runs spawned from this task.
  • --read-only - investigation-only: runs spawned from this task skip executor + fix loop and refuse apply/validate/revert.
  • --supervised - create a supervised task: its steps are sequenced by the Conductor (per-step review, supervisor, budget, clean-halt) instead of running once.
  • --json - emit JSON
vibe tasks list

List tasks.

Options
  • --status <s> - filter by status
  • --json - emit JSON
vibe tasks suggest

Suggest which backlog card to pick up next (ready + priority).

Options
  • --all - show the full ranked backlog, not just the top few
  • --json - emit JSON
vibe tasks show

Show a task with comments and run history.

Arguments
  • <name() { return this._name; }>
Options
  • --json - emit JSON
vibe tasks comment

Add a comment to a task.

Arguments
  • <name() { return this._name; }>
  • <name() { return this._name; }>
vibe tasks ready

Mark a task ready to run.

Arguments
  • <name() { return this._name; }>
vibe tasks cancel

Cancel a task.

Arguments
  • <name() { return this._name; }>
vibe tasks archive

Archive a task (files it into the board's Archived column).

Arguments
  • <name() { return this._name; }>
vibe tasks unarchive

Un-archive a task.

Arguments
  • <name() { return this._name; }>
vibe tasks delete

Permanently remove a task card (refuses while its run is live).

Arguments
  • <name() { return this._name; }>
Options
  • -y, --yes - skip the confirmation prompt
vibe tasks queue

Add a task to the scheduler queue.

Arguments
  • <name() { return this._name; }>
vibe tasks run

Run this task now (foreground). A supervised task sequences its steps (the Conductor); a plain task runs the default flow once.

Arguments
  • <name() { return this._name; }>
vibe tasks sequence

Sequence a supervised task's steps in order (the Conductor). The stable entry the scheduler spawns; `run` delegates here for supervised tasks.

Arguments
  • <name() { return this._name; }>
Options
  • --json - emit JSON
vibe tasks status

Show a supervised task's live conductor status (lifecycle, steps, invariants, halt).

Arguments
  • <name() { return this._name; }>
Options
  • --json - emit JSON
vibe tasks pause

Pause a supervised task's live run (between steps).

Arguments
  • <name() { return this._name; }>
vibe tasks resume

Resume a paused supervised task, or re-sequence a halted one from the clean tip.

Arguments
  • <name() { return this._name; }>
vibe tasks pickup

Execute the task's checklist item-by-item (pick-up flow). Continuous by default; --step pauses between items.

Arguments
  • <name() { return this._name; }>
Options
  • --step - pause between items for review (step-by-step)
vibe tasks checklist

Manage a task's in-card checklist (the ordered breakdown of items).

Subcommands
vibe tasks checklist list

List a task's checklist items.

Arguments
  • <name() { return this._name; }>
Options
  • --json - emit JSON
vibe tasks checklist add

Append a checklist item (a step). Add --objective/--acceptance/--files to author a structured step for a supervised task.

Arguments
  • <name() { return this._name; }>
  • <name() { return this._name; }...>
Options
  • --objective <text> - the scoped brief an executor receives for this step
  • --acceptance <text> - plain-language done-when check for this step
  • --files <list> - comma-separated file hints (primary context for this step)
vibe tasks checklist check

Mark a checklist item done.

Arguments
  • <name() { return this._name; }>
  • <name() { return this._name; }>
vibe tasks checklist uncheck

Reset a checklist item to pending.

Arguments
  • <name() { return this._name; }>
  • <name() { return this._name; }>
vibe tasks checklist status

Set an item status: pending | in_progress | done | blocked.

Arguments
  • <name() { return this._name; }>
  • <name() { return this._name; }>
  • <name() { return this._name; }>
vibe tasks checklist edit

Edit a checklist item's text.

Arguments
  • <name() { return this._name; }>
  • <name() { return this._name; }>
  • <name() { return this._name; }...>
vibe tasks checklist remove

Remove a checklist item.

Arguments
  • <name() { return this._name; }>
  • <name() { return this._name; }>
vibe tasks checklist move

Move a checklist item to a 1-based position.

Arguments
  • <name() { return this._name; }>
  • <name() { return this._name; }>
  • <name() { return this._name; }>
vibe tasks checklist promote

Promote a checklist item to its own card (keeps a derived-from link).

Arguments
  • <name() { return this._name; }>
  • <name() { return this._name; }>
vibe tasks enhance

Propose a checklist for a task with an AI assist (read-only). Add --apply to append the items.

Arguments
  • <name() { return this._name; }>
Options
  • --apply - append the proposed items to the task's checklist
  • --profile <id> - profile to run the assist on (default: crew planner)
  • --json - emit JSON
vibe tasks report

Generate a Markdown task report at .vibestrate/roadmap/tasks/<id>-report.md.

Arguments
  • <name() { return this._name; }>
vibe integrate

Preview + integrate merge-ready run branches into a dedicated branch (never main, never push).

Subcommands
vibe integrate list

List merge-ready runs (integration candidates).

vibe integrate preview

Dry-run merge the selected (or all) merge-ready branches; show conflicts.

Arguments
  • [name() { return this._name; }...]
vibe integrate advise

Read-only merge advice for the selected (or all) merge-ready runs: risk flags, assurance lanes, topology, dry-run conflicts, and a deterministic recommendation. Mutates nothing.

Arguments
  • [name() { return this._name; }...]
Options
  • --json - emit the advice as JSON
vibe integrate analyze

Optional read-only LLM pass over the run's redacted diff vs main: semantic risk narrative (never a merge verdict). Spawns a local provider; caches markdown under the run.

Arguments
  • <name() { return this._name; }>
Options
  • --json - emit the full analysis result as JSON
vibe integrate apply

Integrate the selected (or all) merge-ready branches into --into <branch>.

Arguments
  • [name() { return this._name; }...]
Options
  • --into <branch> - the integration branch to create (never main)
vibe integrate finish

Merge a complete, clean integration branch into main - locally, with explicit confirmation, never pushed. Refuses partial integrations, dirty trees, and conflicts.

Arguments
  • <name() { return this._name; }>
Options
  • --confirm <token> - non-interactive consent: must be exactly "merge-to-main"
vibe queue

Manage the local task scheduler queue.

Subcommands
vibe queue list

Show the queue and running tasks.

Options
  • --json - emit JSON
vibe queue add

Add a task to the queue.

Arguments
  • <name() { return this._name; }>
Options
  • --source <name> - origin label for fairness / per-source quotas (default: user)
vibe queue remove

Remove a task from the queue.

Arguments
  • <name() { return this._name; }>
vibe queue run

Start the local scheduler loop and process queued tasks.

Options
  • --exit-when-drained - exit once the queue is empty (useful in scripts)
vibe queue pause

Pause the scheduler (new tasks will not start).

vibe queue resume

Resume the scheduler.

vibe queue status

Print scheduler state and recent conflict warnings.

Options
  • --json - emit JSON
vibe logs

Show the captured provider stdout/stderr stream for a run (the model's live CLI output).

Arguments
  • <name() { return this._name; }> - Run id (see `vibe status`)
Options
  • --follow - tail the stream live (like `tail -f`); Ctrl+C to stop
  • --stream <promptName> - specific agent stream to read (default: newest)
vibe telemetry

Opt-in OpenTelemetry export of a run's metrics to your own collector (off by default).

Subcommands
vibe telemetry trace

Print the OTLP trace JSON for a run (no network - inspect before exporting).

Arguments
  • <name() { return this._name; }>
vibe telemetry export

Export a run's metrics as an OTLP trace to a collector (Langfuse, Tempo, Jaeger…).

Arguments
  • <name() { return this._name; }>
Options
  • --endpoint <url> - OTLP/HTTP base URL (e.g. http://localhost:4318)
  • --auth <envRef> - env reference for a bearer token, e.g. env:LANGFUSE_TOKEN
vibe workspace

Track + switch between multiple Vibestrate projects (a user-level registry).

Subcommands
vibe workspace list

List registered projects (live ● / dormant ○).

Options
  • --json - emit JSON
vibe workspace add

Register a project directory (default: the current directory).

Arguments
  • [name() { return this._name; }]
vibe workspace remove

Remove a project from the workspace registry (leaves it on disk).

Arguments
  • <name() { return this._name; }>
vibe workspace open

Open a project's dashboard, starting it (server + scheduler) if dormant.

Arguments
  • [name() { return this._name; }]
Options
  • --all - open every registered project
  • --no-open - start the dashboard(s) but don't open a browser tab
vibe workspace close

Shut down a project's dashboard + scheduler (refuses if busy unless --force).

Arguments
  • [name() { return this._name; }]
Options
  • --all - close every live registered project
  • --force - shut down even if runs/queue are busy
vibe workspace overview

Cross-project rollup: runs + cost across every registered project.

Options
  • --range <range> - window: 24h|7d|30d|90d default: 7d
  • --json - emit JSON
vibe notifications

Inspect and manage local Vibestrate notifications.

Subcommands
vibe notifications list

Show notifications.

Options
  • --unread-only - only show unread
  • --attention-only - only show items that need action
  • --json - emit JSON
vibe notifications read

Mark a notification read.

Arguments
  • <name() { return this._name; }>
vibe notifications resolve

Mark a notification resolved.

Arguments
  • <name() { return this._name; }>
vibe notifications read-all

Mark every unread notification as read.

vibe notifications settings

Show current notification settings and configured gateways.

vibe notifications test

Send a tiny test notification through a configured gateway.

Arguments
  • <name() { return this._name; }>
vibe gateways

Inspect and toggle notification delivery gateways.

Subcommands
vibe gateways list

Show available gateways and their enabled/valid status.

Options
  • --json - emit JSON
vibe gateways test

Send a test message through a gateway (no real notification persisted).

Arguments
  • <name() { return this._name; }>
vibe gateways enable

Enable a configured gateway.

Arguments
  • <name() { return this._name; }>
vibe gateways disable

Disable a gateway. Existing config is preserved.

Arguments
  • <name() { return this._name; }>
vibe editor

Configure and test the local editor handoff used by the dashboard.

Subcommands
vibe editor detect

Probe known editors (code, code-insiders, cursor) for availability.

vibe editor set

Enable editor handoff and store the command (default args use --goto path:line:column).

Arguments
  • <name() { return this._name; }>
Options
  • --args <args...> - override the default args (use {file}/{line}/{column} placeholders)
vibe editor test

Open a file (default: README.md) using the configured editor command.

Arguments
  • [name() { return this._name; }]
Options
  • --line <n> - line number
vibe suggestions

Inspect and act on review suggestions captured for a run.

Subcommands
vibe suggestions list

List every suggestion attached to a run.

Arguments
  • <name() { return this._name; }>
Options
  • --json - emit JSON instead of a human-readable table
vibe suggestions show

Show one suggestion in detail (including any proposed patch).

Arguments
  • <name() { return this._name; }>
  • <name() { return this._name; }>
vibe suggestions approve

Approve a suggestion (creates and resolves an approval record).

Arguments
  • <name() { return this._name; }>
  • <name() { return this._name; }>
Options
  • --note <text> - decision note recorded with the approval
vibe suggestions reject

Reject a suggestion. Records a rejection in approvals.json.

Arguments
  • <name() { return this._name; }>
  • <name() { return this._name; }>
Options
  • --note <text> - decision note recorded with the approval
vibe suggestions apply

Apply an approved suggestion's proposedPatch inside the run's worktree (git apply, never push/merge).

Arguments
  • <name() { return this._name; }>
  • <name() { return this._name; }>
Options
  • --validate - after applying, run commands.validate inside the worktree
  • --auto-revert-on-fail - if validation fails, revert the patch (only valid with --validate)
  • --profile <name> - validation profile to run after apply (only meaningful with --validate)
vibe suggestions validate

Run the project's commands.validate inside the run's worktree against an applied suggestion.

Arguments
  • <name() { return this._name; }>
  • <name() { return this._name; }>
Options
  • --profile <name> - named validation profile from commands.validationProfiles
vibe suggestions revert

Revert a previously-applied suggestion using the captured patch (git apply -R).

Arguments
  • <name() { return this._name; }>
  • <name() { return this._name; }>
vibe suggestions profile

Read or edit a suggestion's validation profile metadata.

Subcommands
vibe suggestions profile show

Print the suggestion's current validation profile (if any).

Arguments
  • <name() { return this._name; }>
  • <name() { return this._name; }>
vibe suggestions profile set

Set the suggestion's validation profile. Future validation runs use this profile. Does NOT re-run validation.

Arguments
  • <name() { return this._name; }>
  • <name() { return this._name; }>
  • <name() { return this._name; }>
vibe suggestions profile clear

Clear the suggestion's validation profile back to default (commands.validate).

Arguments
  • <name() { return this._name; }>
  • <name() { return this._name; }>
vibe bundles

Group reviewed suggestions into a review pass that applies, validates, and reverts as a unit.

Subcommands
vibe bundles list

List every bundle (review pass) attached to a run.

Arguments
  • <name() { return this._name; }>
Options
  • --json - emit JSON
vibe bundles create

Create a new review pass (bundle) for a run.

Arguments
  • <name() { return this._name; }>
Options
  • --title <text> - human-readable title
  • --description <text> - optional longer description
  • --suggestion <ids...> - initial suggestion ids to include (must belong to this run)
vibe bundles add

Add a suggestion to a draft bundle.

Arguments
  • <name() { return this._name; }>
  • <name() { return this._name; }>
  • <name() { return this._name; }>
vibe bundles remove

Remove a suggestion from a draft bundle.

Arguments
  • <name() { return this._name; }>
  • <name() { return this._name; }>
  • <name() { return this._name; }>
vibe bundles approve

Approve a review pass (gate before apply).

Arguments
  • <name() { return this._name; }>
  • <name() { return this._name; }>
Options
  • --note <text> - decision note
vibe bundles reject

Reject a review pass.

Arguments
  • <name() { return this._name; }>
  • <name() { return this._name; }>
Options
  • --note <text> - decision note
vibe bundles apply

Apply every suggestion in the review pass to the run worktree (all-or-nothing with rollback).

Arguments
  • <name() { return this._name; }>
  • <name() { return this._name; }>
Options
  • --validate - after applying, run commands.validate
  • --auto-revert-on-fail - if validation fails, revert the bundle (only valid with --validate)
  • --profile <name> - validation profile to run after apply (only meaningful with --validate)
vibe bundles smart-apply

Apply suggestions one-by-one in order. Earlier successes stay applied if a later step fails.

Arguments
  • <name() { return this._name; }>
  • <name() { return this._name; }>
Options
  • --stop-on-validation-fail - validate after each step; stop at the first failing validation
  • --auto-revert-failing - when --stop-on-validation-fail is set, revert ONLY the failing step (prior steps stay applied)
  • --profile <name> - force every step to use this named validation profile
  • --use-suggestion-profiles - let each step use its own VALIDATION_PROFILE (falls back to bundle/default)
vibe bundles validate

Run commands.validate against the run worktree, attached to a bundle.

Arguments
  • <name() { return this._name; }>
  • <name() { return this._name; }>
Options
  • --profile <name> - named validation profile from commands.validationProfiles
vibe bundles revert

Revert every suggestion in the review pass via git apply -R (worktree only).

Arguments
  • <name() { return this._name; }>
  • <name() { return this._name; }>
vibe bundles preflight

Run a static-only preflight without modifying the worktree.

Arguments
  • <name() { return this._name; }>
  • <name() { return this._name; }>
vibe bundles profile

Read or edit a review pass's validation profile metadata.

Subcommands
vibe bundles profile show

Print the bundle's current validation profile (if any).

Arguments
  • <name() { return this._name; }>
  • <name() { return this._name; }>
vibe bundles profile set

Set the bundle's validation profile. Future validation runs use this profile. Does NOT re-run validation.

Arguments
  • <name() { return this._name; }>
  • <name() { return this._name; }>
  • <name() { return this._name; }>
vibe bundles profile clear

Clear the bundle's validation profile back to default (commands.validate).

Arguments
  • <name() { return this._name; }>
  • <name() { return this._name; }>
vibe validation

Inspect validation profiles configured under commands.validationProfiles.

Subcommands
vibe validation profiles

List the implicit default + every named validation profile.

Options
  • --json - emit JSON
vibe validation usage

Show how often each validation profile has actually run (`commands.validate` use counts as 'default').

Options
  • --json - emit JSON
vibe validation profile

Inspect, manage, and migrate validation profile references.

Subcommands
vibe validation profile show

Show the resolved commands for a named profile (or 'default').

Arguments
  • <name() { return this._name; }>
Options
  • --json - emit JSON
vibe validation profile migrate

Rewrite suggestion and bundle records that reference <fromProfile> to point at <toProfile>. Use --clear to migrate to the default profile.

Arguments
  • <name() { return this._name; }>
  • <name() { return this._name; }>
Options
  • --dry-run - preview affected records; write nothing
  • --clear - interpret <toProfile> as a placeholder for clear-to-default
  • --all - scan every run instead of the recent 50
  • --run <runId> - limit to a single run
vibe validation profile clear-references

Clear every suggestion/bundle that references <profileName> back to the default profile.

Arguments
  • <name() { return this._name; }>
Options
  • --dry-run - preview affected records; write nothing
  • --all - scan every run instead of the recent 50
  • --run <runId> - limit to a single run
vibe validation profile rename

Rename a validation profile in project.yml AND migrate every suggestion/bundle reference in one atomic operation. Preserves the profile's description and commands. Refuses if <toProfile> already exists.

Arguments
  • <name() { return this._name; }>
  • <name() { return this._name; }>
Options
  • --dry-run - preview the project.yml rename + affected references; write nothing
  • --all - scan every run instead of the recent 50
  • --run <runId> - limit the reference scan to a single run
vibe validation profile doctor

Audit every suggestion + bundle for stale validation-profile references. Default scope matches `vibe doctor` (recent 50 runs); use --all to lift the cap.

Options
  • --all - scan every run instead of the recent 50
  • --run <runId> - limit the audit to a single run
  • --json - emit JSON (machine-readable; includes didYouMean per record)
vibe validation profile migrations

List previously-applied profile migrations.

Options
  • --json - emit JSON
vibe terminal

Inspect and close dashboard terminal sessions. Sessions are user-launched from the dashboard; this CLI never spawns one.

Subcommands
vibe terminal list

List every terminal session ever opened in this project (live + closed).

Options
  • --json - emit JSON
vibe terminal close

Mark a terminal session as closed. Only affects live sessions in the running dashboard process; closed sessions are already terminal.

Arguments
  • <name() { return this._name; }>
vibe policies

The project's rule surface: owner-authored tiered policies (advise = reviewer-checked; block = deterministic merge-cap) plus the hard, fail-closed security gates in .vibestrate/policies/.

Subcommands
vibe policies add

Add a project policy (active immediately). advise by default; --block for a deterministic merge-cap.

Arguments
  • <name() { return this._name; }>
  • <name() { return this._name; }>
Options
  • --fix <text> - the correction the reviewer should name (advise)
  • --lens <lenses...> - scope an advise rule to review lenses (default: every run)
  • --block - make this a deterministic hard merge-block (requires --matcher)
  • --matcher <regex> - regex matched against added diff lines (block only)
vibe policies remove

Remove a project policy.

Arguments
  • <name() { return this._name; }>
vibe policies confirm

Confirm a pending (supervisor-proposed) policy - it goes live.

Arguments
  • <name() { return this._name; }>
vibe policies reject

Reject a pending (supervisor-proposed) policy - removes it.

Arguments
  • <name() { return this._name; }>
vibe policies migrate

Lift legacy persona-scoped preferences into project policies and remove the old keys.

vibe policies draft

Turn an English rule into an editable policy draft (supervisor-assisted). Draft only - never writes; adopt it with `policies add`.

Arguments
  • <name() { return this._name; }>
Options
  • --json - emit JSON
vibe policies suggest

Propose candidate policies from recent runs' diffs (supervisor-assisted). Draft only - never writes.

Options
  • --limit <n> - how many recent runs to scan (1-10)
  • --json - emit JSON
vibe policies test

Dry-run a matcher against a diff snippet or recent runs (read-only). Give an existing block-policy id, or --regex.

Arguments
  • [name() { return this._name; }]
Options
  • --regex <pattern> - regex to test (instead of a policy id)
  • --flags <flags> - regex flags (subset of gimsuy)
  • --glob <glob> - touched-file glob to test
  • --snippet <file> - path to a diff/patch file to test against
  • --recent - test against recent runs' diffs
  • --limit <n> - recent runs to scan (1-10)
  • --surface <surface> - apply surface (suggestion-apply | bundle-apply) default: suggestion-apply
  • --json - emit JSON
vibe policies list

List the project's policies (owner-authored tiered rules) and the hard security gates in .vibestrate/policies/*.yml.

Options
  • --json - emit JSON
vibe policies check

Apply the loaded policy rules to a patch file (unified diff). Read-only - never applies, never executes.

Arguments
  • <name() { return this._name; }>
Options
  • --surface <surface> - which apply surface to simulate (suggestion-apply | bundle-apply) default: suggestion-apply
  • --json - emit JSON
vibe policies doctor

Validate rule YAML, list malformed files, surface duplicate ids and empty-rule files.

Options
  • --json - emit JSON
vibe policies config

Show or set the safety behavior toggles (strict apply-only, terminal, forbid-* guards).

Options
  • --json - emit JSON
  • --strict-apply-only <bool> - agents propose diffs; gateway applies
  • --harden-read-only <bool> - read-only claude seats run --permission-mode plan
  • --allow-terminal <bool> - enable the dashboard terminal panel
  • --forbid-main-writes <bool> - block writes to the main branch
  • --forbid-secrets <bool> - block reads/writes of secret files
  • --forbid-push <bool> - block auto-push
  • --forbid-merge <bool> - block auto-merge
vibe assurance

Show a run's Run Assurance verdict (evidence-backed; from the Action Broker log + review/verification).

Arguments
  • <name() { return this._name; }> - the run id or display name (see `vibe status`)
Options
  • --json - emit JSON
vibe audit

Show a run's audit tree (flow steps, per-step attempts incl. retries/fallbacks, control events).

Arguments
  • <name() { return this._name; }> - the run id or display name (see `vibe status`)
Options
  • --json - emit JSON
vibe path

Show a run's workspace (worktree path + branch) so you can cd into it.

Arguments
  • <name() { return this._name; }> - the run id (see `vibe status`)
Options
  • --cd - print only the absolute worktree path (for `cd "$(...)"`)
  • --json - emit JSON
vibe rename

Give a run a friendly display name (the run id stays the same).

Arguments
  • <name() { return this._name; }> - the run id (see `vibe status`)
  • <name() { return this._name; }...> - the new display name
vibe ledger

Show the project continuity brief (what shipped, what's open).

Options
  • --json - emit the structured ledger state as JSON
  • --limit <n> - max entries per section (default 5)
vibe consult

Ask the project orchestrator a question, answered from controlled project context (read-only).

Arguments
  • <name() { return this._name; }> - the question to ask about this project
Options
  • --task <id> - include a task's context (title, status, checklist)
  • --run <id> - focus a recent run by id
  • --file <path> - include a project file's content (repeatable) default: []
  • --profile <id> - answer with a specific profile (default: the crew's read-only planner)
  • --provider <id> - answer ad-hoc with this provider (overrides --profile)
  • --model <id> - model for the ad-hoc provider (requires --provider)
  • --effort <level> - effort/power for the ad-hoc provider (requires --provider)
  • --json - emit the full structured result as JSON
vibe guide

Manage VIBESTRATE.md (the agent's operating guide for this project) and its proposals.

Subcommands
vibe guide show

Print the project's VIBESTRATE.md (or note that there is none).

vibe guide init

Scaffold a starter VIBESTRATE.md at the project root (refuses if one exists).

vibe guide proposals

List open VIBESTRATE.md proposals (e.g. from consult).

Options
  • --all - include applied/rejected proposals
Subcommands
vibe guide proposals show

Show a proposal's full suggested text.

Arguments
  • <name() { return this._name; }>
vibe guide apply

Apply a proposal - append its text to VIBESTRATE.md (guarded write).

Arguments
  • <name() { return this._name; }>
vibe guide reject

Reject a proposal (keeps it on record, marked rejected).

Arguments
  • <name() { return this._name; }>
vibe budget

View or configure the daily spend cap (and what happens when it's hit).

Subcommands
vibe budget show

Show the configured cap, action, and today's spend so far.

vibe budget set

Set the daily spend cap and/or the action taken when it's reached.

Options
  • --cap <usd> - daily cap in USD (e.g. 5)
  • --action <action> - what to do at the cap: stop | downgrade-model | reduce-effort
  • --warn <pct> - warn threshold as a fraction 0..1 (default 0.8)
  • --fallback <providerId> - cheaper Profile to switch to on downgrade-model
  • --max-turns-run <n|off> - max agent turns in one run (count ceiling)
  • --max-time-run <min|off> - max wall-clock minutes for one run
  • --max-turns-day <n|off> - max agent turns across all runs today
  • --max-time-day <min|off> - max wall-clock minutes across all runs today
  • --on-limit <stop|pause> - what to do when a count/time ceiling is hit (pause = attended)
vibe budget off

Remove the daily spend cap.

vibe replay

Read-only inspector for a persisted run (mirrors the Replay tab in the dashboard).

Arguments
  • <name() { return this._name; }> - id of the run to replay
Options
  • --json - emit the full replay projection as JSON
vibe pause

Request that an active run pause at the next stage boundary.

Arguments
  • <name() { return this._name; }> - id of the run to pause
vibe resume

Clear a pending pause request or resume a paused run.

Arguments
  • <name() { return this._name; }> - id of the run to resume
vibe shell

Interactive terminal panel. For the full dashboard + scheduler + browser in one shot, use `vibe ui` instead.

Options
  • --refresh <ms> - snapshot refresh interval in ms (default 1000)
  • --once - print one snapshot as JSON and exit (useful for scripts / smoke tests)
vibe run

Run the default plan→architect→implement→review→verify workflow.

Arguments
  • [name() { return this._name; }...]
Options
  • --ui - start the local supervisor dashboard alongside the run
  • --ui-port <port> - port for the supervisor dashboard (default 4317)
  • --task <taskId> - link this run to a roadmap task; updates task status and runIds.
  • --crew <id> - crew to resolve the flow's seats against (default: project.defaultCrew).
  • --profile <id> - run-wide Profile override applied to every seated step in this run.
  • --read-only - investigation-only run: skip executor + fix loop; refuse apply/validate/revert; force readOnly permissions on every role.
  • --permission-mode <mode> - permission mode: read-only | ask (approve each change) | accept-edits (auto-apply, then hold for your sign-off before completing) | auto (default). --read-only is the alias for read-only.
  • --unattended - never pause for a human: forces budget onLimit->stop and resilience onExhausted->fail, so the run always terminates on its own.
  • --skills <list> - comma-separated skill ids to attach to every agent for this single run (merged with each agent's configured skills).
  • --concise - ask agents to produce token-efficient output (prefer diffs, bullets, no preamble).
  • --flow <id> - resolve and run a Flow recipe for this run.
  • --supervisor <id> - supervisor persona (judgment posture) for this run; default = project.defaultPersona.
  • --select - let the orchestrator pick the Flow even when a default flow is set.
  • --step-profile <stepId=profileId> - override the Profile for a Flow step (same Role, different runtime). Repeat for multiple steps. default: []
  • --seat-role <seat=roleId> - pin a Role to a Seat when the crew has more than one role filling it. Repeat for multiple seats. default: []
  • --flow-brief <text> - extra brief for the Flow task packet.
  • --flow-context <policy> - Flow context policy (balanced|compact|artifact-heavy).
  • --flow-skip <step> - skip an optional Flow step for this run. Repeat for multiple steps. default: []
  • --param <key=value> - set a flow parameter (for a flow that declares `params:`). Repeatable. default: {}
  • -i, --interactive - interactively pick the Flow and Crew you didn't pass (horizontal selector), then run. With --flow, opens that flow's detailed setup instead.
  • --resume-from <runId> - rewind: fork from a prior run, reusing its plan (+ architecture) instead of regenerating them.
  • --resume-stage <stage> - stage to resume at with --resume-from: planning | architecting | executing (regenerate code) | reviewing | fixing | verifying (restore the source run's code snapshot). Default: executing.
  • --preview - dry-run a downstream rewind: print the files the restore would overwrite/remove (vs the worktree base), then exit without starting a run. Use with --resume-from.
  • --checklist <mode> - pick-up execution over the linked task's checklist: continuous | step. Needs --task and a checklist-aware flow (--flow pickup).
  • --context-file <path> - attach a project file as context for every agent (repeatable; path-guarded, secrets redacted). default: []
  • --context-url <url> - attach an http(s) URL as context (repeatable; SSRF-guarded, bounded, secrets redacted). default: []
vibe ui

Start the local supervisor dashboard for this project.

Options
  • --port <port> - port to bind (default 4317)
  • --host <host> - bind host (default 127.0.0.1). A non-loopback host exposes the API on the network and requires VIBESTRATE_API_TOKEN.
  • --no-open - don't open the dashboard in your default browser on startup (default: open).
  • --no-scheduler - don't start the managed scheduler subprocess (default: on; the UI owns its lifecycle).
vibe status

List Vibestrate runs in this project.

Options
  • --json - emit JSON instead of a human-readable table
vibe abort

Mark a run as aborted (does not delete the worktree).

Arguments
  • <name() { return this._name; }>
vibe runs

Manage runs and their rewind snapshots.

Subcommands
vibe runs prune

Delete rewind-snapshot refs you choose to drop: orphans (run dir gone), beyond a keep-N window, or one run. Shows the plan and confirms first; never purges on its own.

Options
  • --keep <n> - keep the N most-recent runs' snapshots, prune the rest
  • --orphans - prune refs whose run directory is gone (default when no other scope is given)
  • --run <runId> - prune one specific run's snapshots
  • --dry-run - show what would be pruned, delete nothing
  • -y, --yes - skip the confirmation prompt
vibe doctor

Check environment, config, providers, and recommend next steps.

Options
  • --json - emit JSON
  • --fix - apply safe fixes (create missing dirs/templates, add Claude provider if detected, suggest validation)
© 2026 Vibestrate · v0.68.0 Shonshon - Evolving Technologies