Introduction
Vibe Action is a command router that executes shell commands and LLM prompts via simple YAML pipelines.
Why Vibe Action
- ⚡ One command = complex pipeline — chain shell scripts and LLM calls into a single action
- 🔗 Tag system — connect steps via
{tag}references with automatic dependency graph - 🔧 Modifiers — 20+ inline value transformations with arguments
- 🔀 When/Then — conditional execution in YAML without shell scripts
- 🌳 AST parsing —
{tag|ast}auto-detects language from file,{tag|ast:rs}for explicit - 🖥️ System tags — 15 built-in tags:
{system_clipboard},{system_dir_pwd},{system_os}and more - 👁️ Vision support — screenshot description, person identification, image from URL or clipboard
- 🌐 Fetch — load and summarize web pages, PDFs, images via
loadandtextmodifiers - 📦 Scan — scan codebase and export AST as structured JSON
- 🧪 Benchmarks — automatic testing of all actions with timing and output validation
- ⚡ Action cache — instant startup via snapshot-based validation
- 🤖 Batch LLM — parallel execution across cluster nodes with role-based routing (tiny, small, medium, large, vision)
- ✅ Type-safe — validate outputs with
expect: string | listand regexcheck - 🔔 Notifications — optional desktop notifications on completion
- 🔐 Confirmations — ask before executing dangerous commands
- 💬 Self-documenting — built-in
faqcommand answers questions about Vibe Action itself - 🎯 CLI-first — no browser, no context switching. Everything in the terminal
- 🔌 IDE Integration — built-in
apiblock for seamless VS Code and IntelliJ plugin support - ⏱️ Process Guard — new runs automatically supersede previous ones, keeping state predictable
- 🔒 Open & Flexible — open source. Use local models via Ollama or cloud APIs (DeepSeek, Qwen, Kimi, Zhipu)
- 🦀 Fast — built in Rust
Key Concepts
YAML Pipelines
Describe your workflow in YAML, not code:
name: extract
about: Extract matching lines from text and logs
args:
- name: file
short: f
input: string
help: Path to the log or text file
- name: query
short: q
input: string
help: Extraction criteria (e.g., 'find all errors')
actions:
- tag: tag_lines
run: cmd
expect: list
action: cat {file}
- tag: tag_content
run: small
expect: string
action: |
[Task]
If the line matches the query — output the EXACT line unchanged.
If it does not match — output only a single dash: "-"
Do NOT skip lines. Process every line.
[Query]
{query}
[Line]
{tag_lines}
- tag: tag_clean
run: value
expect: string
action: '{tag_content|trim:-}'
- tag: tag_extract
run: value
expect: string
action: '{tag_clean|uniq|join}'
When/Then Conditions
Use when/then for conditional logic without shell scripts:
- tag: tag_result
run: cmd
expect: string
action:
- when: '{tag_check|contains:DIRTY}'
then: echo "{tag_content}"
- when: '{tag_check|contains:CLEAR}'
then: echo "No errors found."
System Tags
Access environment context anywhere in your pipelines:
- tag: tag_info
run: value
expect: string
action: |
User: {system_user}
OS: {system_os}
PWD: {system_dir_pwd}
Date: {system_date}
How It Works
- You write a YAML file describing your workflow — steps, types, dependencies
- The engine parses it and builds a dependency graph from
{tag}references - Steps execute in order — shell commands run locally, LLM prompts go to your cluster
- Results are validated against expected types and optional regex patterns
- Final output is displayed on screen, copied to clipboard, or sent as notification