Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Concepts

This page introduces the vocabulary used throughout Vibe Factory. The Glossary has one-line definitions; this page explains how the pieces fit together.

Task

A task is the unit of work you hand to the framework: a title and a description, in plain language, of what you want. Tasks live on a board with the statuses backlog, planning, building, review, ready, done, failed and cancelled.

vibe task add "Add OAuth login with GitHub" \
  --description "Users should be able to sign in with their GitHub account…"

Complexity

Before doing anything expensive the pipeline assesses the task: trivial, simple, standard or complex. The class picks a profile: a trivial fix skips the specification; a complex feature adds research and a self-critique of the spec.

Specification

The spec captures what must be built and how success will be checked: a summary, a list of requirements (functional, non-functional, constraints) each with acceptance criteria, and the context gathered from your codebase (relevant files, conventions, assumptions). It is stored both as JSON and as a readable spec.md.

Plan and subtasks

The plan breaks the spec into ordered phases of subtasks. A subtask is small enough for one fresh agent session: a title, a precise description, the files to touch, the subtasks it depends on, and how to verify it. Subtasks without dependencies on each other can run in parallel.

Agents and roles

An agent is a model running in a loop with tools. Vibe Factory ships one agent per role: complexity assessor, spec gatherer, researcher, writer and critic, planner, coder, QA reviewer, QA fixer, merge resolver and commit-message writer. Each role has a system prompt, a set of allowed tools, a model and a thinking level. All of it is configurable from .vibe/agents/*.toml without writing code.

Tools

Tools are what agents can do: read, write and edit files, list and search the tree, and run shell commands. Tools are confined to the workspace and governed by a security policy. Plugins can add tools (a browser, a database client, an issue tracker…).

Workspace

Agents never work in your checkout by default. The workspace is a git worktree on a dedicated branch, created per task. When QA approves, the branch is merged (or left for you to review). in_place mode disables isolation for quick experiments.

Pipeline and phases

The pipeline runs the phases assess → spec → plan → build → qa → fix → merge. Each phase reads the artefacts of the previous ones and writes its own into .vibe/tasks/<task>/. A run can be watched live, interrupted, and resumed.

Events, trace and history

Everything a run does is published as an event (a phase started, an agent called a tool, a subtask was committed, the run finished with its totals) and appended to the task’s events.jsonl. Events are the contract between the engine and every interface: the live output of vibe run, vibe events, the terminal UI, the web UI and the macOS app all show events, and none of them keeps a state of its own (Events).

What does not fit in an event is referenced by one. The complete output of each tool call goes to the trace store, .vibe/tool-output/, local and ignored by git, and the tool_returned event points to it (Tool call trace).

A read layer turns events and git back into views: the activity of every task in time order, the history of what a task delivered (runs, commits, changed files, validations, QA verdict, tokens, active time, cost; see History), and the trace of a run’s tool calls. The command line, the terminal UI and vibe serve use the same read layer, so they always agree.

Providers and models

A provider is a model vendor or API (Anthropic, OpenAI, a local Ollama…). Models are referred to as provider/model, for example anthropic/claude-sonnet-5 or ollama/qwen2.5-coder. Each phase can use a different model.

Memory

Memory is what survives a single run: gotchas discovered while coding, conventions, decisions. The default store is a set of files in the task directory; plugins can provide richer back-ends.

Plugins and hooks

A plugin bundles extensions: tools, agents, providers, workspaces, memory stores and hooks. A hook observes or vetoes what agents do (for example “never let an agent run npm publish”) and can enrich prompts with project rules. In-process (Rust) plugins can contribute every kind of extension; out-of-process plugins, written in any language speaking the plugin protocol, contribute tools, agents and the before_tool hook.