Vibe is a lightweight coding supervisor that integrates with Claude Code to automate complex SDLC workflows through multi-stage pipelines and intelligent retry logic. It uses a client-daemon architecture to manage long-running jobs, track status across multiple projects, and provide a persistent interface for monitoring and control.
- Client-Daemon Architecture - Run long-lived automation jobs in the background with a persistent daemon.
- Multi-stage Pipelines - Automated feature development from planning to validation.
- Claude Code Integration - Headless execution of prompts with session tracking and job-level isolation.
- Intelligent Retry Logic - Automatically calls Claude to fix failed project checks. Retry any failed job from its failure point with
vibe retry. - Job Lifecycle Control - Pause, resume, cancel, retry, or approve generated plans for full operator control.
- Real-time Monitoring - Live SSE-based log streaming with automatic reconnection and incremental event replay.
- Quota Ceiling Management - Enforce rolling-window utilization limits on Claude Code; jobs auto-pause and resume when quota recovers.
- Composable Role System - Context-aware agent personas (Architect, Developer, etc.).
- Git & GitHub Integration - Automatic branch management and PR creation.
- Graduated Quality Gates — Gate criteria support
on_failurepolicies:fail(terminate pipeline),retry(re-attempt the stage), orwarn(log a warning and continue). Exit criteria now validate stage outputs automatically. - Queue Introspection —
vibe queueshows per-project queue state with running and pending jobs. Supports--jsonfor machine-readable output. - Crash Recovery — The daemon recovers pending and in-progress jobs on restart. Queued jobs are re-enqueued in original order; running jobs are marked
interruptedfor manual resume. - Custom Run Types — Define your own pipeline shapes via YAML. The three-tier registry resolves run types from project
.vibe/run_types/, global~/.vibe/run_types/, then bundled defaults. Validate custom definitions withvibe pipeline validate. - Stage Type Classification — Stages declare a
stage_type(researchorimplementation). Research stages are restricted to read-only tools; implementation stages get full write access. All bundled pipelines annotate every stage. - Manual Gates — Any stage can require operator approval via
gate: {type: manual}. The executor pauses the job and waits forvibe approve/vibe rejectbefore continuing. - Job Priority — Promote or demote queued jobs with
vibe promoteandvibe demote. Higher-priority jobs dispatch first within each project; ties break by FIFO order. - Stage Executor Protocol — Pipelines orchestrate shell commands alongside Claude. Stages declare an
executor_type(claude,command, orchecks) and the engine routes to the appropriate backend. Command stages require acommandlist in YAML (string form rejected for safety). - Pipeline Families — Run types classify as
researchorimplementation. Research pipelines run concurrently per project; implementation pipelines get exclusive access. A security rule derives the effective family from stage metadata: any command executor or implementation stage forces the family toimplementation, preventing concurrency bypass. - Parallel Research Scheduling — Multiple research jobs (e.g., discovery runs) execute simultaneously on the same project. A read/write lock model grants shared access to research jobs and exclusive access to implementation jobs. Same-branch conflicts are detected and serialized.
- Gate Timing — Gates support a
timingfield:before(default) pauses before stage execution for plan approval;afterpauses after execution for output review. - Abandon Operation —
vibe abandonstops a job and deletes its git branch. Running jobs get a graceful stop (202); paused/queued jobs are cleaned up immediately (200); terminal jobs return 409. - Daemon API Authentication — The daemon generates a bearer token on startup. All mutating requests (POST, DELETE) require
Authorization: Bearer <token>. The CLI reads the token automatically. Unauthenticated requests currently receive a deprecation warning. - Run Type Selection —
vibe run --type <name>selects the pipeline shape (default:feature). Shorthand aliasesvibe discoveryandvibe fixremain available. - Pipeline Inspection —
vibe pipeline show <name>displays the full run type definition including stages, gates, criteria, and family.vibe pipeline initscaffolds a.vibe/run_types/directory with a documented template. - Extensible Criterion Model — The criterion type field accepts both built-in enum values and custom string types. Custom criteria carry arbitrary parameters via
extra_configfor project-specific validation.
The desktop application is a Tauri v2 native app (React + TypeScript) that provides a graphical interface for managing daemon connections, projects, and jobs.
The shell is divided into three regions:
- Top bar — Project switcher dropdown on the left (click to switch projects or register a new one); command palette search bar in the center; New Job button, theme toggle, connection indicator, and settings gear on the right.
- Sidebar — Research and Coding navigation items with keyboard shortcuts visible on hover; a separator; Settings below the separator; daemon connection status at the very bottom (click to open the connection screen).
- Main content — Renders the active screen or a live job execution/results view when a job is open.
The Research screen is a two-panel thinking workspace for conducting AI-assisted research before committing to implementation work.
- Left panel (280px): Mixed chronological list of conversations and research pipelines. Two creation buttons: "+ Chat" (starts an interactive conversation) and "+ Pipeline" (opens the prompt chain composer). Each item shows type icon, name, activity summary, cost, and relative timestamp.
- Right panel: Content view for the selected item. Conversations show a full chat thread with streaming responses. Research pipelines show the compose view (drafting), execution view (running), or results view (completed).
Research activities run with a shared read lock and do not mutate the codebase.
The Coding screen presents a three-column kanban board showing the project's job queue:
- To Do — Queued features (large cards) and one-shot jobs (compact cards), ordered by submission time.
- In Progress — Currently executing item with live elapsed time and pipeline stage name.
- Done — Completed, failed, and cancelled items in reverse chronological order with total duration and cost.
Feature cards display title, description, task and sprint counts, and a "View details" link to the Feature Detail screen. Job cards show short ID, run type badge, and status metadata. New jobs can be submitted directly from the kanban header. Toast notifications appear when jobs reach terminal states.
The Feature Detail screen is the command center for a multi-sprint feature effort, reached by clicking a feature card's "View details" link.
- Left panel (240px): Sprint timeline — vertical chronological sequence of sprint nodes and deviation check nodes. Overall progress bar at top. Clicking a sprint node loads its task list on the right. Deviation check nodes appear between sprints showing running, passed, or drift-detected states.
- Right panel: Task list for the selected sprint. Each task card shows status, pipeline stage bar, and inline approve/reject controls when the task is awaiting plan approval. Selecting a deviation check node shows the drift analysis and three-option decision flow (accept corrective task / ignore and continue / revise remaining roadmap).
| Action | Shortcut |
|---|---|
| Research screen | Cmd+1 |
| Coding screen | Cmd+2 |
| Settings screen | Cmd+, |
| Command palette | Cmd+K |
| New job | Cmd+N |
On first launch the app presents a full-screen connection gate. Enter the daemon address to connect. On subsequent launches the app reads the saved address and auto-connects, showing a spinner while the connection is established. If auto-connect fails, the gate is shown again with the error. Once connected, the last active project is restored automatically.
cd desktop
npm run tauri dev # Development with hot reload
npm run tauri build # Production build- Python >= 3.14
- uv package manager
- Claude Code CLI installed and configured
-
Initialize project:
git clone https://github.com/deti/vibe.git cd vibe make init -
Start the daemon:
vibe daemon start
-
Register your project (path must be absolute and accessible by the daemon):
vibe project add my-project /path/to/your/project
-
Run a pipeline:
# Feature development (default run type) vibe run --project my-project "Implement async support for the database layer" # Explicit run type selection vibe run --project my-project --type fix "Fix race condition in session token refresh" # Shorthand aliases vibe discovery --project my-project "Audit logging coverage across all API endpoints"
-
Monitor progress:
vibe status vibe logs --follow
# List available run types and their stages
vibe pipeline types
# Validate a custom run type YAML before deploying
vibe pipeline validate path/to/my-pipeline.yaml
# List local pipeline runs
vibe pipeline list
# Plan only (no execution) — useful for review before committing
vibe pipeline plan --type feature "Add caching layer to API responses"
# Show full definition of a run type (stages, gates, criteria, family)
vibe pipeline show feature
# Scaffold a custom run type template
vibe pipeline init
# Creates .vibe/run_types/custom.yaml with documented fieldsQueued jobs dispatch in FIFO order by default. Use promote and demote to adjust priority:
# Bump a queued job up in priority
vibe promote abc123
# Lower a queued job's priority
vibe demote abc123
# View current queue state including priority, lock mode, and parallelism
vibe queueBeyond pause, resume, and cancel, two additional lifecycle commands are available:
# Abandon a job — stops execution and deletes the git branch
vibe abandon abc123
# Abandon the most recent active job (no ID needed)
vibe abandonabandon differs from cancel: cancel preserves the branch for later inspection, while abandon deletes it for a clean slate.
Vibe revolves around a few core entities:
- Daemon: The background process that manages job queues, executes tasks, and persists state.
- Project: A registered directory where Vibe can run jobs. Jobs are isolated per project.
- Job: A single unit of work (e.g., a pipeline run) with its own state, logs, and artifacts.
- Pipeline: A multi-stage workflow that Vibe orchestrates. Three run types are bundled (
feature,discovery,fix), and you can define custom ones via YAML. - Stage Type: Each pipeline stage is classified as
research(read-only) orimplementation(code-mutating). Research stages are restricted to read-only tools for safety. - Gate: A stage-level configuration that controls whether the pipeline pauses for operator approval (
manual) or advances automatically (auto). Gates support atimingfield:before(default) fires before stage execution;afterfires after stage execution for output review. - Executor: The backend that runs a pipeline stage.
claudeinvokes Claude Code,commandruns a shell command, andchecksruns the project check suite directly. Thecreate_executor()factory selects the backend from stage metadata. - Pipeline Family: A run type's concurrency classification —
research(shared access, parallel-eligible) orimplementation(exclusive access, serialized). Declared in the run type YAML via thefamilyfield; overridden at runtime if stage metadata implies implementation.
For detailed concepts, command reference, and configuration options, see the Usage Guide.
make testOr with coverage:
make test-covmake lintThis runs ruff check and ruff format on the codebase.
vibe/
├── src/vibe/
│ ├── daemon/ # Background server (Starlette/Uvicorn)
│ ├── cli/ # CLI client (Click)
│ ├── pipeline/ # Pipeline state machine and execution logic
│ │ └── executors/ # Stage executor backends (Claude, command, manual gate)
│ ├── providers/ # AI provider integrations (Claude)
│ ├── models/ # Pydantic models for roles and pipelines
│ ├── renderers/ # Tool-native output renderers (Claude Code, Cursor)
│ ├── defaults/ # Bundled YAML role and run type definitions
│ ├── checks.py # Check execution and retry logic
│ └── roles.py # Role resolution and prompt assembly
├── tests/ # Comprehensive test suite
├── desktop/ # Desktop application (Tauri v2 + React)
│ ├── src/ # React application source
│ │ ├── screens/ # Top-level views (Research, Coding, Settings)
│ │ ├── components/ # UI components and design system
│ │ └── lib/ # Daemon client, hooks, providers
│ └── src-tauri/ # Tauri v2 Rust shell and config
└── .vibe/ # Project configuration directory
- Gate Timing: Gates now support
timing: before(pre-execution approval) andtiming: after(post-execution review). Default isbeforefor backward compatibility. - Abandon Command:
vibe abandon [JOB_ID]stops a job and deletes its git branch. Supports running, paused, interrupted, and queued jobs. - Daemon API Authentication: Bearer token authentication on all mutating API routes. Token is auto-generated on daemon startup and read by the CLI transparently.
- Run Type Selection on
vibe run: The--type/-tflag selects any registered run type (default:feature). Replaces the need for separatevibe discovery/vibe fixaliases for common types. - Pipeline Inspection:
vibe pipeline show <name>displays the full run type definition.vibe pipeline initscaffolds a custom run type template in.vibe/run_types/. - Extensible Criterion Types: The
Criterion.typefield now accepts custom string types alongside built-in enums. Custom criteria useextra_configfor arbitrary parameters, supporting project-specific validation without code changes. - Job Status: Abandoned: New terminal status for jobs stopped via
vibe abandon. Distinct fromcancelled— abandoned jobs have their branches deleted. - Stage Executor Protocol: Stages now dispatch through a pluggable executor interface. Set
executor_type: commandto run shell commands as pipeline stages, orexecutor_type: checksto run the project check suite. The default (claude) preserves existing behavior. - Pipeline Families: Run types declare a
familyfield (researchorimplementation). Research-family pipelines run concurrently per project; implementation-family pipelines require exclusive access. A derived effective family prevents declaredresearchpipelines from bypassing serialization when they contain code-mutating stages. - Parallel Research Scheduling: Multiple research jobs execute simultaneously on the same project via a read/write lock model. Implementation jobs wait for exclusive access.
vibe queueshows lock mode (parallelorserialized) andvibe jobsshows wait reasons for blocked jobs. - New SSE Event Types:
stage_started,stage_blocked,gate_waiting,stage_retrying, andgate_resultprovide finer-grained pipeline execution visibility. - Enhanced Queue Display:
vibe queueshows lock mode (parallel/serialized), priority, and pending count.vibe jobsshows run type, family tag, queue position, and wait reason. - Configurable Review Cycle Names: Quality gate policies accept custom
review_stage,fix_stage, andvalidate_stagenames, enabling custom pipelines with non-default review cycles. - Custom Run Types: Define pipeline shapes via YAML with a three-tier registry (project, global, bundled). Validate with
vibe pipeline validate. - Stage Type Classification: Stages declare
stage_type: researchorstage_type: implementation. Research stages enforce read-only tool access. - Manual Gates: Any stage can pause for operator approval via
gate: {type: manual}in the run type YAML. Not limited to plan review. - Job Priority:
vibe promoteandvibe demoteadjust dispatch priority for queued jobs. Higher priority dispatches first; FIFO breaks ties. - Pipeline Subcommands:
vibe pipeline typeslists available run types;vibe pipeline validatechecks custom YAML;vibe pipeline listshows local runs. - Unified Dispatch: All run types (bundled and custom) use the same generic execution path. No special-casing by pipeline name.
- Daemon-based execution: Jobs now run in a persistent background process.
- Job Control: Added
pause,resume,cancel, andapprovecommands for fine-grained job management. - Job Retry:
vibe retry <job_id> [context...]re-runs a failed job from its failure point, preserving completed stage artifacts. - Live Logs: Real-time streaming of job logs with
vibe logs --follow. Automatically reconnects on connection loss using SSE event IDs. - Quota Ceiling Management: Configure
providers.claude_code.quota_ceilingsinvibe.yamlto cap Claude Code utilization. Jobs pause automatically when the ceiling is breached and resume when quota recovers. - Artifact Management: Retrieve and view generated files via
vibe artifacts. - Metric-based Checks:
vibe.yamlcheck steps now support automated pass/fail based on extracted metrics (e.g., test coverage). - Gate Failure Policies: Criteria now support
on_failure: fail,retry, orwarnfor graduated quality gate responses. - Exit Criteria Activation: Pipeline stages validate their output through exit criteria. Bundled pipelines use
on_failure: warnfor backward compatibility. - Queue Command:
vibe queueshows per-project queue state. Use--jsonfor machine-readable output. - Crash Recovery: The daemon automatically recovers all job states on restart. Running jobs are marked
interruptedfor resume; queued jobs are re-enqueued in original order; paused and awaiting-approval jobs retain project ownership. - Security Hardening: Race condition protection on concurrent approve/reject operations; YAML safety linting enforced via ruff.