GitHub Docs

AI-powered desktop code editor built with Tauri 2 and Monaco. VibeCoder provides a VS Code-like editing experience with a native Rust backend, Monaco Editor frontend, integrated AI chat, autonomous agent mode, explicit-chord diff-mode AI editing (⌘.), terminal, Git panel, code review, and a WASM extension system.

What’s new in 0.5.19

  • Office documents edit in place. DOCX paragraph and table-cell edits keep run styling; table rows insert and delete from the Word view and blank cells stay typeable; XLSX renders like Excel with Office charts; PPTX keeps run styles and edits through anchored Markdown.
  • Document RAG. Workspace PDFs and Office files are indexed for the agent’s search_documents tool; the home directory and filesystem root are refused.
  • Git. Commit patch preview in the diff view.
  • Polish. PDF zoom no longer flickers; header window dragging restored; SQLite files open to the database tab; “Daily Briefing” replaces “Morning Briefing”.

Added in 0.5.15:

  • Charts. Bar, line, pie and area charts, edited as JSON and touched up in the SVG editor; embedded OOXML charts now render in the DOCX/XLSX/PPTX viewers, with series names resolved from live formulas.
  • Image and SVG editing. Crop, rotate, resize, brightness and contrast in the image viewer; select, move, resize, rotate and recolor in SVG; diagrams can be touched up and exported as SVG; transparent SVGs sit on a checkerboard.
  • Office fidelity. XLSM macros preserved, PPTX shapes movable and resizable inside groups, DOCX run formatting and table-cell edits preserved. Undo/redo is unified across every document editor.
  • Baize theme and an editable title bar; chat and terminal state stay alive across panel switches.
  • Settings. A shared Embedding Model section and local-provider settings.
  • Fixed: dropped files replaced the whole window in VibeCoder and VibeDesk.

Added in 0.5.14: no user-facing feature — release-pipeline hardening and performance fixes. 0.5.12 brought full-duplex voice, the + composer menu and per-model context budgets.

Earlier releases: 0.5.10 brought the four-panel workspace security review, verified findings, “Fix with AI” everywhere, and Settings that can hide and reorder panels; 0.5.9 brought the plugin marketplace, real connectors, and 27 Tauri commands the panels were already calling; 0.5.8 brought voice input, selectable embedding models, the SkillForge panel and signed macOS builds.

Architecture Overview

┌──────────────────────────────────────────────────────────────────┐
│                    Frontend (React + TypeScript)                 │
│  Monaco Editor │ AI Chat │ Agent Panel  │ Manager View           │
│  Git Panel │ Terminal │ Command Palette │ Review Panel           │
│  Checkpoints │ Artifacts │ Hooks Config │ History                │
│  Context Picker │ Memory/Rules │ Theme Toggle                    │
└──────────────────────────┬───────────────────────────────────────┘
                           │ Tauri IPC (invoke / events)
┌──────────────────────────▼───────────────────────────────────────┐
│                   Tauri Rust Backend                             │
│  commands.rs    — 1,367 Tauri commands (files, git, AI, agent …) │
│  agent_executor — ToolExecutorTrait for agent tool calls         │
│  flow.rs        — Flow Awareness Engine (activity tracking)      │
│  memory.rs      — Workspace + global AI rules (.vibecoder.md)    │
└──────────────────────────┬───────────────────────────────────────┘
                           │
         ┌─────────────────┴──────────────────────┐
         │          Rust Library Crates           │
         ├─────────────┬──────────────────────────┤
         │ vibe-core   │ vibe-ai                  │
         │ vibe-lsp    │ vibe-extensions          │
         │ vibe-collab │                          │
         └─────────────┴──────────────────────────┘

Getting Started

Prerequisites

Requirement Version Install
Rust ≥ 1.75 stable rustup.rs
Node.js ≥ 18 nodejs.org
npm any bundled with Node.js
Tauri prerequisites v2 tauri.app/start/prerequisites

On macOS, also ensure Xcode Command Line Tools are installed:

xcode-select --install

Development Setup

cd vibecoder

# Install JavaScript dependencies
npm install

# Start development server (hot reload for frontend + Rust backend)
npm run tauri dev

Production Build

npm run tauri build

The installer is placed in src-tauri/target/release/bundle/.

Build it this way, not with cargo build --release. The frontend is compiled into the binary, and that only happens when the tauri/custom-protocol feature is on. tauri build passes it; a bare cargo build --release does not, and the app it produces points its window at the dev server instead. With nothing listening on localhost:1420 that is a blank white window — no panic, no log line, nothing on screen to say why.

Both halves of the build now say so rather than leaving you to find out:

warning: vibe-coder@0.5.14: this release build will not embed the frontend — it
will load http://localhost:1420 and open on a blank window. Build it with
`npm run tauri:build` (or `make build-vibecoder`), or add
`--features custom-protocol`.

and the binary repeats it on stderr at startup. If you do want a release build from cargo directly, cargo build --release -p vibe-coder --features custom-protocol embeds the frontend properly — build dist/ first, since that is what gets embedded. The feature is deliberately not a default: embedding brotli-compresses the whole bundle during macro expansion, and every cargo check of the crate would otherwise pay for it.

Features

Editor

  • Monaco Editor — same engine as VS Code; full syntax highlighting, IntelliSense, multi-cursor
  • Rope-based buffer — built on ropey for efficient O(log n) edits on large files
  • Batch edits — apply_batch_edits for bulk insert/delete operations
  • Multi-cursor — update_cursors for synchronised cursor state
  • DiffComplete (⌘.) — explicit-chord AI editing surface; DiffCompleteModal collects an instruction (with optional user-picked extra files for context), vibe_ai::diffcomplete::generate returns a unified diff, DiffReviewPanel shows per-hunk accept/reject with optional Monaco edit-before-apply and a regenerate-with-refinement loop. A deliberate alternative to keystroke-driven ghost text. Keystroke-driven inline completion was removed on 2026-04-26; inline completion returned later as an explicit-trigger-only surface bound to ⌥\ (vibe_ai::ghost, 12-line cap) — it never fires on a keystroke. See ghost-text.md.
  • Diagrams (Mermaid, PlantUML) — a ```mermaid or ```plantuml block in a markdown preview is drawn rather than printed, and a .mmd / .puml file opens as the picture with Source to go back to the text. The preview follows the buffer, so the diagram changes as you type. Mermaid is drawn in the app; PlantUML is a Java program with no browser port, so it is drawn by the PlantUML on your machine and nothing is sent to a remote renderer — if none is installed the diagram says so and how to install it, instead of quietly posting your architecture to plantuml.com. A diagram that will not parse shows the renderer’s own message and the source that produced it, never an empty box.
  • Documents (DOCX, EPUB, PDF, Pages) — Word documents, e-books, PDFs and Apple Pages files open in the editor area. Two up puts any of them into a two-page spread: real facing pages for a PDF (drawn here with PDF.js, with page navigation and arrow keys), two columns of a screen for the formats that are text rather than sheets. EPUBs render as books: the publisher’s own stylesheets (scoped and sanitised), images, cover, nested table of contents and working cross-chapter links. All four are view-only — editing is handed to the real application (Open in Word / LibreOffice), because a text edit does not round-trip faithfully into the original container. See documents.md
  • Archives (ZIP, TAR, and friends) — a .zip, .jar, .vsix, .tar.gz or .tar.zst in the explorer expands like a folder, and anything inside it opens read-only in the editor with highlighting, search, and image/PDF rendering. Trying to edit one offers the way out: extract the whole archive into a sibling folder named after it (dist.tar.gz → dist/, never merging into an existing one) and reopen the file from there, writable. The archive itself is never rewritten — re-encoding a signed .apk or a .vsix is not a promise worth making. See archives.md
  • File watching — auto-detects external changes using notify
  • Multi-workspace — open multiple folders simultaneously
  • Language detection — automatic language mode from file extension

AI Integration

The AI chat panel supports all 25 providers via the shared vibe-ai crate:

  • Local: Ollama (default, no API key), LocalEdit
  • Cloud: Claude, OpenAI, Gemini, Grok, Groq, Mistral, Cerebras, DeepSeek, Zhipu, MiniMax
  • Platform: OpenRouter, Azure OpenAI, Bedrock, Copilot, Vercel AI
  • Inference: Perplexity, Together AI, Fireworks AI, SambaNova
  • Meta: Failover (automatic provider fallback chain)

Select the provider from the dropdown in the header, or switch per chat tab in ChatTabManager. Provider configuration is handled through the Keyssettings tab (BYOK), environment variables, or ~/.vibecli/config.toml.

Provider Advanced Options

Option Config key Description
api_key_helper [claude] api_key_helper = "~/.vibecli/get-key.sh" Shell script that emits a fresh API key on stdout; falls back to static api_key
thinking_budget_tokens [claude] thinking_budget_tokens = 10000 Enable Claude extended thinking mode with N token budget

@ Context System

Type @ in the chat input to open the Context Picker — a dropdown that lets you inject additional context:

Reference Description
@git Current branch, changed files, and diff excerpt
@file:<path> Contents of a specific file
@file:<path>:N-M Specific line range from a file
@folder:<path> Recursive directory tree listing
@web:<url> Fetched & stripped plain text from a URL (6 000 char limit)
@terminal Last 200 lines of terminal output (ANSI-stripped)
@symbol:<name> Symbol search via CodebaseIndex, returns source snippet
@codebase:<query> Semantic codebase search via CodebaseIndex
@github:owner/repo#N Fetch GitHub issue/PR title, state, author, labels, body
@jira:PROJECT-123 Fetch Jira issue summary, status, assignee, description
@html-selected Inject the last HTML element selected via Browser panel inspect mode

The backend resolves references via resolve_at_references() in commands.rs and injects them into the system prompt.

Jirarequires JIRA_BASE_URL, JIRA_EMAIL, and JIRA_API_TOKEN environment variables. GitHubuses optional GITHUB_TOKEN for higher rate limits.

Smart Context Builder

The ContextBuilder in vibe-core builds a ranked, token-budget-aware context by combining:

  1. Git branch + changed file list — always included
  2. Git diff — up to 25% of budget
  3. Top-ranked symbols (via codebase index) — up to 30% of budget
  4. Open file contents — remaining budget

Flow Awareness

The Flow Awareness Engine (flow.rs) tracks developer activity (file opens, edits, saves, terminal commands) in a 100-event ring buffer. Recent activity is injected into AI context via get_flow_context().

Agent Mode

The Agent Panelprovides autonomous multi-step task execution:

  • Plan mode — agent generates a plan before executing
  • Approval tiers — auto, suggest, always-ask policies
  • Tool execution — TauriToolExecutor supports: read_file, write_file, bash, search_files, list_directory, web_search, fetch_url, get_weather, task_complete
  • Step timeline — each tool call emits agent:step events rendered in the UI
  • Pending approval — destructive operations emit agent:pending for user review
  • Streaming — LLM output streamed via agent:chunk Tauri events
  • Diff review — pending writes shown in a Monaco DiffEditor with Accept/Reject

Multi-Agent Orchestration (Manager View)

The Manager Viewenables running multiple agents in parallel:

  • Task board — submit multiple tasks simultaneously
  • Git worktrees — each agent operates on an isolated worktree branch
  • Parallel execution — start_parallel_agents spawns concurrent agent loops
  • Status tracking — manager:agent_update and manager:agent_step events
  • Branch merging — merge_agent_branch with merge/squash/rebase strategies
  • Status polling — get_orchestrator_status for initial render

Code Review (Review Panel)

AI-powered code review via the Review Panel:

  • Compares base_ref vs target_ref (defaults to HEAD vs working tree)
  • Returns structured ReviewReport with:
    • Issues — file, line, severity (hint/warning/error/critical), category (security/performance/correctness/style/testing), description, suggested fix
    • Suggestions — general improvement recommendations
    • Scores — overall, correctness, security, performance, style (0–100)
  • Color-coded severity badges and score bars in the UI

Git Panel

Source Control is four tabs, so the working tree and the things you do to it stop competing for one scrolling column:

Tab What it holds
Changes File status, staging, commit, push/pull, branch switching, history — and the control that starts a code review
Review The findings from the last review run
Tools AI branch-name suggestion, AI merge-conflict resolution, changelog generation, and the repository’s settings — user identity, remote, SSH detection, HTTPS credentials
GitHub Remote, Actions and triage
Feature Status
File status (M/N/D/R) with color coding Done
Branch display in status bar Done
Diff viewer Done
Stage/unstage files Done
Commit Done
Push / Pull Done
Branch list and switching Done
Discard changes Done
Git stash (create / pop) Done
Commit history Done

Modified files appear yellow (M), new files green (N), deleted files red (D).

What the diff compares. From the Changes list, a file is shown as HEAD against your working copy. From a commit in History, it is shown as that commit against its first parent — which is what the commit itself changed, not what has happened since. The header names the comparison, including the short hash when you are looking at a commit.

Both sides come from git’s object store. A file with no previous version — new in the working tree, added by the commit you are inspecting, or any file in a repository’s first commit — compares against empty, which is correct: every line really is an addition. A binary file is reported as binary rather than decoded into a pane full of replacement characters.

Commit messages are clipped in the history list to their subject line, or 100 characters, whichever comes first. more expands the body; it appears only when there is a body to show.

Starting a review is on the Changes tab, because reviewing is an action on the changes you are looking at. The findings land on Review, and pressing Run Review takes you there.

Checkpoints

The Checkpoint Panelprovides a timeline of AI checkpoints backed by Git stashes:

  • Create checkpoint — create_checkpoint(label) saves current workspace state
  • List checkpoints — browse all stash entries with labels and timestamps
  • Restore checkpoint — apply a stash without dropping it
  • Auto-checkpoint — agent mode can auto-create checkpoints before destructive operations

Artifacts

The Artifacts Paneldisplays structured AI output:

  • Rich artifact cards with metadata
  • Annotations and inline comments
  • Async feedback mechanism

Hooks Configuration

The Hooks Panelprovides a UI for configuring event-driven hooks:

Hook Event Description
PreToolUse Fires before an agent tool call
PostToolUse Fires after an agent tool call
SessionStart Fires when an agent session begins
TaskCompleted Fires when an agent task finishes
Stop Fires when an agent stops

Each hook can be configured with:

  • Handler type — command (runs a shell command) or llm (sends a prompt)
  • Tool filters — restrict to specific tools
  • Async exec — run hook in background

Configuration is saved to .vibecoder/hooks.json (workspace or global).

Memory & Rules

The Memory Panelprovides editors for AI rules:

  • Project rules — .vibecoder.md in workspace root (committed alongside code)
  • Global rules — ~/.vibecoder/rules.md (personal defaults)
  • Both are injected into every AI system prompt via combined_rules()

Agent History

The History Paneldisplays an audit log of past agent sessions:

  • Session list — list_trace_sessions() enumerates JSONL trace files
  • Session detail — load_trace_session() returns all entries (tool calls, LLM turns, approvals)
  • Expand and browse individual trace entries

Terminal

An integrated terminal panel using portable-pty:

  • Full PTY — supports interactive programs (vim, htop, etc.)
  • Powered by xterm.js on the frontend
  • Multiple terminal instances (spawn_terminal returns terminal IDs)
  • Terminal resize support (resize_terminal)
  • Accessible via the status bar “Show Terminal” button

Command Palette

Press Cmd+P (macOS) / Ctrl+P (Windows/Linux) to open the Command Palette:

  • Fuzzy file search (powered by fuse.js)
  • Editor command list
  • Quick navigation

Theme System

  • Dark and light themes
  • Toggle via moon/sun icon in the status bar
  • Theme persists across sessions (stored in localStorage)
  • All UI elements (editor, panels, status bar) respect the active theme

AI Panel Tabs

The AI panel (toggle with AI Chat in the header) has 246 panel components + 41 composites across categories:

Core AI & Chat

Tab Component Description
Chat ChatTabManager Multiple independent chat tabs, each with per-tab provider selection; voice input, and full-duplex voice — an open microphone you can interrupt
Agent AgentPanel Autonomous multi-step agent with step timeline, approval UI, Turbo mode, and plan mode
Agent Modes AgentModesPanel Switch between Smart, Rush, and Deep agent modes
Memory MemoryPanel Edit per-workspace .vibecoder.md and global ~/.vibecoder/rules.md
History HistoryPanel Audit log of past agent sessions; browse and expand trace entries
Checkpoints CheckpointPanel Timeline of AI checkpoints with restore, auto-checkpoint
Artifacts ArtifactsPanel Structured output cards with annotations and async feedback
Manager ManagerView Multi-agent orchestration: task board, worktrees, parallel execution
Hooks HooksPanel Configure event-driven hooks (PreToolUse, PostToolUse, etc.)
Jobs BackgroundJobsPanel Submit tasks to VibeCLI daemon; live SSE stream; job persistence across restarts
Keys SettingsPanel BYOK API key management for all cloud providers. Its Voice section sets the speech engine, language and voice the daemon speaks with — shared with VibeDesk and VibeAIChat, since the daemon is what speaks. See Choosing a voice engine
Counsel CounselPanel Multi-LLM deliberation: structured debates between multiple AI providers with role-based personas, voting, and synthesis
Compare MultiModelPanel Side-by-side dual-provider comparison: provider/model selectors, timing/tokens, Ctrl+Enter
Model Wizard ModelWizardPanel Guided model selection wizard for optimal provider/model choice
Discussion DiscussionModePanel Discussion and planning mode for exploring ideas before coding
Clarifying ClarifyingQuestionsPanel AI-driven clarifying questions for ambiguous requests

Delivery

Tab Component Description
Engagement EngagementPanel The four-phase delivery spine — Discover & Assess, Prove, Build & Harden, Operate & Transfer. Every promised deliverable with the panel that produces it, gates with their measurement procedure and verdict, evidence, blockers, and markdown status/handover exports. See Engagements

Development & Code

Tab Component Description
Specs SpecPanel Spec-driven development: AI-generated user stories, tasks, and acceptance criteria
Spec Pipeline SpecPipelinePanel End-to-end spec-to-code pipeline with validation
Workflow WorkflowPanel Code Complete 8-stage development pipeline with AI-generated checklists per stage
Orchestrate OrchestrationPanel Workflow orchestration with lessons and task tracking
Autofix AutofixPanel Codemod auto-fix: detect linter (clippy/eslint/ruff/gofmt/prettier), run fix, diff preview, apply/revert
AST Edit AstEditPanel AST-based code editing and structural transformations
Transform TransformPanel Code transformation and refactoring tools
Edit Predict EditPredictionPanel RL Q-learning next-edit prediction with confidence scoring
Full-Stack Gen FullStackGenPanel Full-stack application generation from prompts
App Builder AppBuilderPanel App scaffolding: quick start, templates, provisioning, managed backend
Scaffold ScaffoldPanel Project scaffolding with framework templates
Build BuildPanel Build system management and monitoring
Cascade CascadePanel Cascade AI pipeline with multi-step reasoning
Self Review SelfReviewPanel AI self-review of generated code
Automations AutomationsPanel Automation rules and triggers

Testing & Quality

Tab Component Description
Tests TestPanel Test runner with framework detection, live log stream, filter tabs, pass/fail badges
Coverage CoveragePanel Code coverage: auto-detect tool, run coverage, per-file % bars, uncovered lines, filter tabs, raw output
QA Validation QaValidationPanel Multi-round QA validation pipeline with severity-weighted scoring
Batch Builder BatchBuilderPanel Batch code generation: 10 agent roles, 3M+ line target, pause/resume
SWE-bench SweBenchPanel SWE-bench benchmarking harness: run, compare, export
Arena ArenaPanel Blind A/B model comparison: hidden identities, vote (A/B/Tie/Both bad), reveal, persistent leaderboard
BugBot BugBotPanel AI code scanner with severity/category filter and fix snippets
Metrics CodeMetricsPanel Code metrics: complexity, LOC, duplication analysis
Visual VisualTestPanel Visual regression testing with screenshot comparison
Render Opt RenderOptimizePanel React re-render optimization analysis (~74% reduction)

Security

Tab Component Description
RedTeam RedTeamPanel Autonomous 5-stage pentest pipeline with findings feed, CVSS scores, and report export
BlueTeam BlueTeamPanel Defensive security: incident management, IOC tracking, SIEM integration, forensics, playbooks
PurpleTeam PurpleTeamPanel ATT&CK exercises: attack simulation, detection validation, coverage gap analysis
Security Scan SecurityScanPanel Security scanning with vulnerability detection
Compliance CompliancePanel Compliance reporting and policy enforcement

Agent Teams & Orchestration

Tab Component Description
Teams AgentTeamPanel Multi-agent team orchestration with inter-agent messaging
Agent Teams AgentTeamsPanel Agent team hierarchy with role-based composition
Sub-Agent SubAgentPanel Sub-agent role management and delegation
Team Govern TeamGovernancePanel Team plugin marketplace governance and policies
Watch Devices WatchDevicesPanel Approve / rename / revoke paired Apple Watch and Wear OS clients (new in 0.5.5)
Paired Mobiles PairedMobilesPanel Manage paired VibeMobile devices; view JWT expiry, revoke (new in 0.5.5)
Branch Agent BranchAgentPanel Branch-per-task agent execution with auto-merge
Cloud Autofix CloudAutofixPanel Cloud-hosted BugBot autofix agents
GH Actions GhActionsPanel GitHub Actions agent for CI/CD automation
CI Bot CIReviewPanel CI review bot for automated PR analysis
Soul SoulPanel AI personality and behavior configuration

Context & Memory

Tab Component Description
Steering SteeringPanel Workspace/global steering files with templates
Open Memory OpenMemoryPanel Cognitive memory engine: 5 sectors, associative graph, HNSW index, XOR obfuscation at rest (not cryptographic)
Context Bundle ContextBundlePanel Context bundles/spaces with priority ordering and TOML serialization
Fast Context FastContextPanel Fast context retrieval and SWE-grep
Infinite Context InfiniteContextPanel 5-level context hierarchy with token budget, eviction, and compression
Session Memory SessionMemoryPanel Long-session memory profiling with leak detection
Session Browser SessionBrowserPanel Browse and resume past sessions
Session Sharing SessionSharingPanel Share sessions across users and devices
Project Context ProjectContextPanel Project-level context and configuration
Org Context OrgContextPanel Organization-wide context and policies
Plan Document PlanDocumentPanel Plan documentation and tracking

Infrastructure & DevOps

Tab Component Description
Docker DockerPanel Docker container/image management with build, run, logs
K8s K8sPanel Kubernetes cluster management: pods, services, deployments, scale, logs
CI/CD CicdPanel CI/CD pipeline configuration and status monitoring
CI Gates CiGatesPanel CI quality gates with automated pass/fail criteria
CI Status CiStatusPanel CI pipeline status monitoring
Sandbox SandboxPanel Container sandbox for safe code execution (Docker/Podman)
Cloud Sandbox CloudSandboxPanel Cloud-hosted sandbox execution environments
Cloud CloudAgentPanel Cloud-hosted agent execution with Docker backends
Cloud Provider CloudProviderPanel AWS/GCP/Azure integration: service detection, IAM, Terraform/CloudFormation templates
VM Orchestrator VmOrchestratorPanel Virtual machine orchestration and management
Channel Daemon ChannelDaemonPanel Background channel daemon service management
Deploy DeployPanel Deploy to 6 targets (Vercel/Netlify/Railway/GH Pages/GCP/Firebase) with custom domain support
Env EnvPanel Environment variable manager with .env file support
SSH SshPanel SSH connection manager with terminal sessions
Profiler ProfilerPanel Performance profiling with flame graph visualization
Process ProcessPanel System process monitor with kill capability
Health HealthMonitorPanel Service health monitor with uptime tracking
Resilience ResiliencePanel Resilience testing and chaos engineering
IDP IdpPanel Internal Developer Platform: Backstage, Cycloid, Humanitec, Port, scorecards
Developer Excellence DeveloperExcellencePanel DORA four keys, engineering-practice maturity and onboarding readiness, computed from the repository. Every value carries its proxy and sample size; a metric with no signal is shown as unmeasured with the change that would make it measurable, never as zero. See Developer Excellence

Data, AI & ML

Tab Component Description
Auto Research AutoResearchPanel Autonomous iterative research: 5 strategies, 7 domains, cross-run learning
Training TrainingPanel Distributed ML training: DeepSpeed, FSDP, LoRA configuration
Inference InferencePanel ML inference server management: vLLM, TGI, Triton, llama.cpp
FineTune FineTuningPanel Model fine-tuning configuration and monitoring
Vector DB VectorDbPanel Vector database management: Qdrant, Pinecone, pgvector
Doc Ingest DocumentIngestPanel Multi-format document ingestion for RAG pipelines
Web Crawler WebCrawlerPanel Web crawler with robots.txt, sitemaps, rate limiting
Data Analysis DataAnalysisPanel Data analysis and visualization
Image Gen ImageGenPanel AI image generation
AI/ML Workflow AiMlWorkflowPanel AI/ML workflow pipeline management
Quantum QuantumComputingPanel Quantum computing simulation and algorithms
Knowledge KnowledgeGraphPanel Knowledge graph visualization
Conversational Search ConversationalSearchPanel Natural language code search with conversation context

Git & Collaboration

Tab Component Description
Git GitPanel Full Git workflow, in tabs: Changes, Review, Tools, GitHub; AI commit message button
GH Sync GitHubSyncPanel GitHub sync with ahead/behind status, push/pull, repo management
Collab CollabPanel CRDT multiplayer collaboration: create/join rooms, peer list with color indicators, copy invite link
Review ReviewPanel AI code review with issues, scores, and suggestions
Diff Review DiffReviewPanel Diff review and commentary
Migrations MigrationsPanel Database migration manager with up/down tracking
Agile AgilePanel Agile project management with sprints and stories
Work Mgmt WorkManagementPanel Work item tracking and management

MCP & Extensions

Tab Component Description
MCP McpPanel MCP server management with OAuth 2.0 install flow and tool testing
MCP Lazy McpLazyPanel MCP lazy loading with tool search and LRU eviction
MCP Directory McpDirectoryPanel MCP verified plugin directory: search, install, review
ACP AcpPanel Agent Client Protocol: server/client modes, capability negotiation
Marketplace MarketplacePanel Extension marketplace with install/update/ratings
Remote Control RemoteControlPanel Remote control and session management
Usage Metering UsageMeteringPanel Credit system: per-user/project/team budgets, alerts, chargeback

Developer Toolbox

Tab Component Description
HTTP HttpPlayground HTTP request builder: method/URL/headers/body, quick-launch localhost, route discovery, response viewer with JSON pretty-print
Cost CostPanel AI cost observatory: per-provider breakdown, total spend, budget limit, cost history table, clear history
Deps DepsPanel Dependency viewer with outdated detection, update, add/remove
Scripts ScriptPanel Script runner with task detection (npm, make, cargo)
Notebook NotebookPanel Jupyter-style notebook with code cells and outputs
Bookmarks BookmarkPanel Code bookmark manager with annotations
Bisect BisectPanel Git bisect automation to find regression commits
Snippets SnippetPanel Code snippet library with search and insertion
Mock MockServerPanel Mock HTTP server for API development and testing
GraphQL GraphQLPanel GraphQL playground with schema introspection
Load Test LoadTestPanel Load testing with configurable concurrency and latency charts
API Docs ApiDocsPanel OpenAPI/Swagger documentation viewer
Utilities UtilitiesPanel Developer utilities: hash, UUID, lorem ipsum, timestamp
Database DatabasePanel SQLite/PostgreSQL browser with AI query generation
VibeSql VibeSqlPanel SQL editor with syntax highlighting and results
Streaming StreamingPanel Streaming data viewer (Kafka, NATS, Pulsar)
Webhooks WebhookPanel Webhook endpoint manager with request logging
WebSocket WebSocketPanel WebSocket client for testing real-time connections
Network NetworkPanel Network tools: port scan, DNS lookup, TLS inspection

UI & Design

Tab Component Description
Canvas CanvasPanel Freeform drawing canvas for diagrams and wireframes
Design Canvas DesignCanvasPanel Design canvas for UI prototyping
Design Import DesignImportPanel Import from Figma and other design tools
Img2App ScreenshotToApp Screenshot-to-code: upload image, generate UI code
Colors ColorPalettePanel Color palette generator with design token export
ColorConv ColorConverterPanel Color format converter (HEX/RGB/HSL/CMYK)
Diff DiffToolPanel Visual diff comparison tool
Markdown MarkdownPanel Markdown editor with live preview

Converters & Utilities

Tab Component Description
Cron CronPanel Cron expression builder with human-readable descriptions
Regex RegexPanel Regex tester with match highlighting and group extraction
JWT JwtPanel JWT decoder/encoder with claims inspection
Encoding EncodingPanel Base64/URL/HTML encoding and decoding
NumBase NumberBasePanel Number base converter (binary, octal, decimal, hex)
DataGen DataGenPanel Test data generator with customizable schemas
Timestamp TimestampPanel Unix timestamp converter with timezone support
JSON JsonToolsPanel JSON formatter, validator, and path query tool
CIDR CidrPanel CIDR/subnet calculator for network planning
Unicode UnicodePanel Unicode character lookup and conversion
Units UnitConverterPanel Unit converter (length, weight, temperature, etc.)
CSV CsvPanel CSV viewer and editor with filtering

Monitoring & Admin

Tab Component Description
Dashboard DashboardPanel Project overview dashboard with stats and activity
Admin AdminPanel Admin panel with RBAC, audit log, user management
Log LogPanel Structured log viewer with filtering and search
Traces TraceDashboard OpenTelemetry trace viewer with span timeline
Recording AgentRecordingPanel Record and replay agent sessions
GPU GpuTerminalPanel GPU-accelerated terminal with performance monitoring
Audio Output AudioOutputPanel Text-to-speech audio output
Debug Mode DebugModePanel AI debug mode with step-through analysis
Demo DemoPanel Demo and showcase mode

Agents

Tab Component Description
Browser BrowserPanel Embedded iframe browser with inspect mode, element selection
Browser Agent BrowserAgentPanel Browser automation agent with CDP
Desktop Agent DesktopAgentPanel Desktop automation agent
Observe-Act ObserveActPanel Screenshot → vision model → action → verify loop that drives the real desktop. See Observe-Act

Integration & Migration

Tab Component Description
Supabase SupabasePanel Supabase connection, table browser, SQL editor, AI query
Auth AuthPanel Auth scaffold generator (4 providers × 5 frameworks)
Legacy Migrate MigrationsPanel Legacy migration engine: 18 source languages, 10 targets, 6 strategies

UI Components

Component File Description
App src/App.tsx Root component, global state, layout
AIChat src/components/AIChat.tsx Streaming AI chat panel; multimodal input
AgentPanel src/components/AgentPanel.tsx Autonomous agent UI; plan mode toggle
ManagerView src/components/ManagerView.tsx Multi-agent parallel orchestration UI
CheckpointPanel src/components/CheckpointPanel.tsx Checkpoint timeline; restore, auto-checkpoint
ArtifactsPanel src/components/ArtifactsPanel.tsx Rich artifact cards; annotations, feedback
MemoryPanel src/components/MemoryPanel.tsx Rules / memory editor
HistoryPanel src/components/HistoryPanel.tsx Agent session trace viewer
HooksPanel src/components/HooksPanel.tsx Hooks configuration UI; event/handler/filter editor
ReviewPanel src/components/ReviewPanel.tsx AI code review; issues, scores, suggestions
ChatTabManager src/components/ChatTabManager.tsx Multi-tab chat manager with per-tab provider selection
DiffCompleteModal src/components/DiffCompleteModal.tsx ⌘. AI edit modal — instruction + extra context, calls diffcomplete_generate, hands off to DiffReviewPanel
DiffReviewPanel src/components/DiffReviewPanel.tsx Per-hunk accept/reject for unified diffs, with optional Monaco edit-before-apply
BackgroundJobsPanel src/components/BackgroundJobsPanel.tsx VibeCLI daemon job queue with live SSE stream
BrowserPanel src/components/BrowserPanel.tsx Embedded iframe browser with inspect mode (), element selection, Send to Chat
ArenaPanel src/components/ArenaPanel.tsx Blind A/B model comparison with voting, leaderboard, and Send winner to Chat
CostPanel src/components/CostPanel.tsx AI cost observatory with per-provider breakdown, budget limit, and history
AutofixPanel src/components/AutofixPanel.tsx Codemod auto-fix with linter detection, diff preview, and apply/revert
SettingsPanel src/components/SettingsPanel.tsx BYOK API key management for all cloud providers, plus Profile, Appearance, Panels & Tabs, OAuth, Customizations, Embeddings, Integrations, Voice, Sessions and Background Jobs
SpecPanel src/components/SpecPanel.tsx Spec-driven development with AI task generation
WorkflowPanel src/components/WorkflowPanel.tsx Code Complete 8-stage workflow with pipeline visualization and checklists
RedTeamPanel src/components/RedTeamPanel.tsx Autonomous pentest pipeline with 5-stage visualization and CVSS findings
McpPanel src/components/McpPanel.tsx MCP server management with OAuth 2.0, tool testing, add/edit/delete
DeployPanel src/components/DeployPanel.tsx Deploy to 6 targets with custom domain support and history
BugBotPanel src/components/BugBotPanel.tsx AI code scanner with severity badges and fix snippets
SupabasePanel src/components/SupabasePanel.tsx Supabase connection, table browser, SQL, AI queries
AuthPanel src/components/AuthPanel.tsx Auth scaffold generator (4 providers × 5 frameworks)
GitHubSyncPanel src/components/GitHubSyncPanel.tsx GitHub sync with commit/push/pull and repo management
SteeringPanel src/components/SteeringPanel.tsx Workspace/global steering files with templates
TestPanel src/components/TestPanel.tsx Test runner with framework detection, ▶ Run Tests, live log stream, filter tabs, pass/fail badges
CollabPanel src/components/CollabPanel.tsx CRDT multiplayer session management: create/join rooms, peer list with color indicators, invite link
DatabasePanel src/components/DatabasePanel.tsx SQLite/PostgreSQL browser with AI query generation
ContextPicker src/components/ContextPicker.tsx @ context dropdown; file, folder, git, web, terminal, symbol, github, jira, html-selected picker
GitPanel src/components/GitPanel.tsx Full Git workflow, in tabs: Changes, Review, Tools, GitHub; AI commit message button (AI)
Terminal src/components/Terminal.tsx xterm.js terminal integration
CommandPalette src/components/CommandPalette.tsx Fuzzy search command palette
ThemeToggle src/components/ThemeToggle.tsx Dark/light theme switcher
Modal src/components/Modal.tsx Reusable modal dialog
MarkdownPreview src/components/MarkdownPreview.tsx Rendered markdown preview
OnboardingTour src/components/OnboardingTour.tsx First-run guided tour with feature highlights; localStorage-gated, dismissible
EmptyState src/components/EmptyState.tsx Reusable empty state placeholder with icon and message
LoadingSpinner src/components/LoadingSpinner.tsx Reusable loading spinner with optional label

Tauri Commands (Backend API)

The React frontend communicates with the Rust backend using Tauri’s invoke() IPC and Tauri event emitters.

File Operations

Command Description
read_file(path) Read file contents
write_file(path, content) Write file to disk
list_directory(path) List files/folders for sidebar
create_directory(path) Create a new directory
delete_item(path) Delete file or directory
rename_item(path, new_name) Rename file or directory
save_file(path) Save buffer contents to disk
is_rich_document(path) Whether the path is a DOCX / EPUB / Pages file this build can open as text
read_document_text(path) Open a document as a text buffer for the viewers (see documents.md)
read_document_preview(path) Base64 preview image embedded in the document (Pages only)
render_plantuml(source) Draw a PlantUML diagram locally, returning SVG; the error says how to install it when nothing can
plantuml_renderer() Which PlantUML will draw, or null when none will
read_epub_book(path) EPUB metadata, cover, spine and table of contents
read_epub_chapter(path, chapter) One EPUB chapter’s markup, stylesheets and referenced media
list_archive(path) One level inside an archive — the archive itself, or a virtual archive!/folder path (see archives.md)
read_archive_file(path) A member of an archive as text
read_archive_file_base64(path) A member of an archive as base64 bytes
plan_archive_extraction(path) Where an extraction would put things, without writing anything
extract_archive(path, destination?) Extract an archive into a folder named after it, and report where the member in path landed

Workspace Operations

Command Description
set_workspace_folder(path) Make path the single workspace root (replaces the previous one)
get_workspace_folders() List workspace folders
open_file_in_workspace(path) Open file within workspace

Text Buffer Operations

Command Description
insert_text(params) Insert text at buffer position
delete_text(params) Delete text range from buffer
apply_batch_edits(params) Batch insert/delete operations
update_cursors(params) Synchronise cursor positions
Command Description
search_files(query, case_sensitive) Search file contents with walkdir + regex
search_files_for_context(query) File path search for @ picker (max 20 results)

Git Operations

Command Description
get_git_status() Get branch + file status map
git_commit(path, message, files) Stage and commit selected files
git_push(path, remote, branch) Push to remote
git_pull(path, remote, branch) Pull from remote
git_diff(path, file_path) Get diff for a file
git_list_branches(path) List all branches
git_switch_branch(path, branch) Switch to a branch
git_get_history(path, limit) Get commit history
git_discard_changes(path, file_path) Discard changes for a file
git_stash_create(path, name) Create a named stash
git_stash_pop(path) Pop the most recent stash
get_git_context() Formatted git context for AI injection

LSP Operations

Command Description
lsp_completion(language, root_path, params) Request completions from language server
lsp_resolve_completion(language, root_path, item) Fill in documentation / auto-import edits for one item
lsp_hover(language, root_path, params) Request hover info
lsp_goto_definition(language, root_path, params) Go to definition
lsp_signature_help(language, root_path, params) Parameter hints for the call being typed
lsp_did_open(language, root_path, uri, text) Register a document (idempotent — reopening resyncs)
lsp_did_change(language, root_path, uri, text) Push the document’s current text; the client owns the version
lsp_did_save(language, root_path, uri) Notify LSP of document save
lsp_did_close(language, root_path, uri) Release the document and drop its diagnostics
lsp_diagnostics(language, root_path, uri) Latest published diagnostics; null = nothing published yet, [] = clean
lsp_language_support(language, root_path) Server state + trigger characters for a language
lsp_restart_language(language) Stop the server and clear the “not installed” memo
lsp_list_servers() Every supported language, its server binary, and whether it’s installed

IntelliSense in the editor. vibecoder/src/lib/lsp.ts bridges these to Monaco: completion (with snippets, auto-imports and resolved docs), hover, go-to-definition, signature help, and diagnostics as squiggles. Four non-obvious invariants hold it together — all four have failed in the past, and each one alone makes IntelliSense look broken:

  1. Model URIs must be real file URIs. The <Editor> needs a path prop, or every file shares one model at inmemory://model/1 — a URI no server has heard of. fileUri() and vibe_lsp::path_to_uri must encode identically.
  2. Edits must be pushed with lsp_did_change, debounced but always flushed before a request; otherwise the server answers against the text as it was when the file opened.
  3. Completion kinds are mapped by name, not by number: LSP Text is 1, Monaco’s is 18, and Monaco renumbers between versions.
  4. Trigger characters come from the server and are registered up front. Without them foo. shows nothing while mid-identifier completion works.

Servers are found at their install locations, not just on PATH — a Finder-launched app inherits launchd’s bare PATH and would find none of them. Languages Monaco already services in-browser (TypeScript, JavaScript, JSON, CSS, HTML) deliberately get no LSP providers: Monaco’s cannot be unregistered, so adding ours would duplicate every suggestion. The status bar shows which source is active for the current file, and offers a retry with the install hint when a server is missing.

Language coverage — TIOBE top 30

28 of 30 have a language server; the 2 that don’t, can’t. Coverage is pinned by tests on both sides — manager.rs::every_tiobe_top_30_language_has_a_configured_server (language id → server binary) and lsp.test.ts → “TIOBE top-30 coverage” (file extension → language id). Both halves are required: an extension that routes nowhere gets no IntelliSense however many servers are configured.

# Language Server # Language Server
1 Python pyright-langserver 16 Rust rust-analyzer
2 C clangd 17 MATLAB matlab-language-server
3 C++ clangd 18 Assembly asm-lsp
4 Java jdtls 19 Swift sourcekit-lsp
5 C# OmniSharp 20 Ada ada_language_server
6 JavaScript Monaco built-in 21 PL/SQL sqls †
7 Visual Basic OmniSharp 22 Prolog swipl
8 SQL sqls 23 COBOL superbol-free
9 R R + languageserver 24 Kotlin kotlin-language-server
10 Delphi/Object Pascal pasls 25 SAS sas-lsp
11 Scratch — ‡ 26 Classic Visual Basic — ‡
12 Perl perl-language-server 27 Objective-C clangd
13 Fortran fortls 28 Dart dart language-server
14 PHP intelephense 29 Ruby solargraph
15 Go gopls 30 Lua lua-language-server

† PL/SQL and T-SQL get generic SQL analysis — no dialect-aware server for either exists. They keep their own language ids so the status bar names the dialect and a real server can be dropped in later.

‡ The two exemptions are not gaps we intend to close: Scratch is a block language whose .sb3 is a zip archive, not source text, and VB6 has no LSP implementation in existence. Both are asserted as deliberate in the tests, so adding a third exemption requires stating a reason.

Beyond the top 30, ranks 31–50 add servers for Lisp, Julia, ML/OCaml/Caml, TypeScript, Haskell, ABAP, Zig, Erlang, Scala, T-SQL, PowerShell and Solidity. Four have no LSP in existence (VBScript, X++, GML, FoxPro) and two more are visual languages (LabVIEW, Ladder Logic).

Beyond TIOBE

84 languages get IntelliSense: 79 through a language server, plus the 10 Monaco services in-browser (some overlap). Two invariants are enforced by tests: every configured server is reachable from at least one file extension, and every routed extension has a server — the halves cannot drift apart.

Area Languages
Modern systems Zig zls · Nim nimlangserver · Crystal crystalline · V v-analyzer · D serve-d · Odin ols · Vala · CUDA clangd
Functional Gleam gleam lsp · Elixir · Erlang · Haskell · OCaml · F# · Elm · PureScript · ReScript · Clojure · Racket · Lisp · Scala
Web frameworks Svelte svelteserver · Vue vue-language-server · Astro astro-ls
Infrastructure Terraform/HCL terraform-ls · Nix nil · CMake · Docker · Protobuf protols · YAML · TOML
Shaders / hardware GLSL glsl_analyzer · WGSL wgsl-analyzer · SystemVerilog svls · VHDL vhdl_ls
Shell / docs Bash · PowerShell · Nushell nu --lsp · LaTeX texlab · Markdown · GraphQL

Svelte, Vue and Astro are a deliberate exception to the built-in-service rule. All three highlight as html, and html is Monaco-serviced — so the check is keyed on the LSP language, not the Monaco one. Keying it on the Monaco language (as it originally was) silently skipped Volar and svelteserver, the only things that understand script blocks, props and typed templates. Those files therefore get some HTML suggestions alongside the framework server’s: a little overlap beats no framework IntelliSense.

.v stays V (vlang); SystemVerilog is reached through the unambiguous .sv / .svh. See the ambiguity table above for .pl and .m.

Two extensions are genuinely ambiguous, and IntelliSense follows the same choice detectLanguage makes for highlighting, so a file never highlights as one language and completes as another:

Extension Resolves to Other claimant How to reach the other
.pl Perl Prolog name Prolog files .pro / .prolog
.m MATLAB Objective-C .mm is unambiguously Objective-C

Syntax highlighting

Monaco ships grammars for ~91 languages. VibeCoder supplies 27 more from vibecoder/src/lib/monarch — Zig, Nim, Crystal, V, D, Vala, Odin, Gleam, Haskell, Elm, PureScript, ReScript, Erlang, Nix, CMake, Protobuf, LaTeX, PostScript, MATLAB, Assembly, COBOL, SAS, Ada, Fortran, Prolog, VHDL, FoxPro and Astro. Each is a declarative LanguageSpec (keywords, comment markers, string forms) that a shared factory turns into a Monarch tokenizer plus a language configuration, so ⌘/ comments correctly and brackets match too.

Registration happens at editor mount and never overrides a Monaco built-in — if Monaco gains one of these, theirs wins and ours is skipped (a test enforces it). Grammars are built lazily via onLanguage, so mount cost stays flat.

Two invariants are test-enforced, both of which were silently broken before:

  • Every id detectLanguage can return is registered. Monaco rejects an unknown language id, so matlab, cobol, sas and cmake files got neither highlighting nor IntelliSense — the LSP providers are keyed on the same id.
  • Every server-backed extension has a highlighting entry. A file with a language server and no detectLanguage mapping renders as plain text.

Zig, Nim, Crystal, D and V no longer borrow C++/Python/Ruby highlighting. The approximation mis-coloured the keywords each language actually has, and left their LSP providers registered against cpp.

Grammar tests run Monaco’s own Monarch engine and assert on real tokens, not on the shape of the definition — the only way to catch the cases that actually break: nested comments that un-comment the rest of the file ({- -}, /+ +/, #[ ]#), MATLAB’s A' transpose versus 'a char array', Ada’s Obj'Length attribute versus 'x', PostScript’s nested (a (b) c) strings, and case-insensitive keywords in COBOL/Ada/Fortran/VHDL/SAS/CMake.

Installing a missing server

The status bar shows the active server, or the missing one with its install command and a Copy install button. parseInstallHint splits the backend’s hint into a runnable command and a documentation link — 51 of the 79 servers yield a copyable one-liner, 23 a project URL, and 5 are genuinely prose (“Included with Xcode”). A test runs the parser over the real hint table and rejects any command that could not be pasted as-is, which is how cargo install --git — plausible-looking and inert — was caught.

The command is copied, never run: installing software is the user’s decision, and several hints need a platform choice first.

AI Operations

Command Description
send_chat_message(request) Send messages to AI provider; returns response + pending writes
diffcomplete_generate(...) ⌘. diff-mode AI edit — returns a unified diff for modal review (the only AI editing surface)
get_available_ai_providers() List configured AI providers
fetch_url_for_context(url) Fetch & strip a URL for AI context
get_provider_api_keys() Load BYOK API key settings
save_provider_api_keys(settings) Persist BYOK API keys to ~/.vibecli/profile_settings.db (encrypted)
search_workspace_symbols(query, workspace_path) Regex-based symbol search across workspace

Agent Operations

Command Description
start_agent_task(task, approval_policy, provider) Start autonomous agent loop
respond_to_agent_approval(approved) Approve or reject a pending agent tool call

Agent events emitted:

Event Payload Description
agent:chunk String Streaming LLM text
agent:pending AgentPendingPayload Tool call needs approval
agent:step AgentStepPayload Step completed
agent:done String Agent finished
agent:error String Error occurred

Multi-Agent Orchestration

Command Description
start_parallel_agents(tasks, provider, policy) Spawn parallel agents on worktrees
get_orchestrator_status() Snapshot of all agent statuses
merge_agent_branch(agent_id, strategy) Merge agent branch (merge/squash/rebase)

Orchestrator events emitted:

Event Payload Description
manager:agent_update AgentInstanceInfo Agent status change
manager:agent_step {id, step_num, tool} Per-step progress

Memory & Rules

Command Description
get_vibecoder_rules() Load project-level rules (.vibecoder.md)
save_vibecoder_rules(content) Save project-level rules
get_global_rules() Load global rules (~/.vibecoder/rules.md)
save_global_rules(content) Save global rules

Checkpoints

Command Description
create_checkpoint(label) Create a git stash checkpoint
list_checkpoints() List all checkpoints
restore_checkpoint(index) Restore checkpoint by index

Trace / History

Command Description
list_trace_sessions() List all agent trace sessions
load_trace_session(session_id) Load entries from a trace session

Hooks Configuration

Command Description
get_hooks_config(workspace_path?) Load hooks configuration
save_hooks_config(hooks, workspace_path?) Save hooks configuration

Code Review

Command Description
run_code_review(workspace_path, base_ref?, target_ref?) Run AI code review, return structured report

MCP Server Management

Command Description
get_mcp_servers() Load configured MCP servers from ~/.vibecoder/mcp.json
save_mcp_servers(servers) Persist MCP server configurations
test_mcp_server(server) Test a server and list its tools
initiate_mcp_oauth(server_name, client_id, auth_url, token_url, redirect_uri, scopes) Build OAuth URL and open browser for authorization
complete_mcp_oauth(server_name, auth_code, client_id, token_url, redirect_uri) Exchange auth code for token, persist encrypted in the ProfileStore under mcp.oauth.<server>
get_mcp_token_status(server_name) Check OAuth token status (connected/expired)

MCP OAuth Flow

The MCP panel supports OAuth 2.0 for authenticating with MCP servers:

  1. Click OAuthon a server → enter Client ID, Auth URL, Token URL, and Scopes
  2. Click Open Browser → authorize in your browser
  3. Paste the authorization code back into the modal
  4. Token is exchanged and stored encrypted in the ProfileStore (~/.vibecli/profile_settings.db) under mcp.oauth.<server>. A pre-0.5.9 ~/.vibecoder/mcp-tokens.json is migrated into the store and deleted on first read.

Connected servers show a green OAuthbadge.

Deploy & Custom Domains

Command Description
detect_deploy_target(workspace) Auto-detect deploy target from project files
run_deploy(target, workspace) Deploy to selected target (Vercel/Netlify/Railway/GH Pages/GCP/Firebase)
get_deploy_history() List previous deployments
set_custom_domain(target, domain) Configure a custom domain for the selected target

Custom Domain Support

After deploying, enter a custom domain in the Custom Domainfield:

  • Vercel: calls the Vercel REST API (requires VERCEL_TOKEN env var)
  • Other targets: returns CNAME record instructions for manual DNS configuration

Code Complete Workflow

Command Description
list_workflows(workspace_path) List all workflows with stage progress
get_workflow(workspace_path, name) Get a workflow by name
create_workflow(workspace_path, name, description) Create a new 8-stage workflow
advance_workflow_stage(workspace_path, name) Mark current stage complete, advance to next
update_workflow_checklist_item(workspace_path, name, stage_index, item_id, done) Toggle a checklist item
generate_stage_checklist(workspace_path, name, stage_index, provider) AI-generate checklist for a stage

Test Runner

Command Description
detect_test_framework(workspace) Auto-detect test framework from project files (Cargo/npm/pytest/Go)
run_tests(app, workspace, command?) Run tests, stream test:log events, return TestRunResult with summary and per-test details
generate_commit_message(workspace) Run git diff --staged → AI prompt → imperative one-liner commit message

Code Coverage

Command Description
detect_coverage_tool(workspace) Auto-detect coverage tool (cargo-llvm-cov / nyc / coverage.py / go-cover)
run_coverage(app, workspace, tool) Run coverage, parse LCOV/Go coverprofile, return CoverageResult with per-file percentages and uncovered lines

Multi-Model Comparison

Command Description
compare_models(prompt, provider_a, model_a, provider_b, model_b) Send same prompt to two providers in parallel, return CompareResult with timing, tokens, and errors

HTTP Playground

Command Description
send_http_request(method, url, headers, body?) Send HTTP request with 30s timeout, return HttpResponseData (status, headers, body, duration)
discover_api_endpoints(workspace) Grep workspace for Express/Axum/FastAPI/Spring route patterns (max 60 results)

Cost & Performance Observatory

Command Description
record_cost_entry(session_id, provider, model, prompt_tokens, completion_tokens, task_hint?) Append cost record to ~/.vibecoder/cost-log.jsonl with estimated_cost_usd pricing
get_cost_metrics() Load all entries, compute per-provider aggregates, total cost/tokens, budget remaining
set_cost_limit(limit_usd?) Set or clear monthly budget cap (persisted at ~/.vibecoder/cost-config.json)
clear_cost_history() Delete the cost log file

AI Git Workflow

Command Description
suggest_branch_name(task_description) AI-generated concise hyphenated branch name from task description
resolve_merge_conflict(file_path, conflict_text) AI-resolved merge conflict preserving both sides
generate_changelog(workspace, since_ref?) Convert git log into Keep-a-Changelog format via LLM

Codemod & Lint Auto-Fix

Command Description
run_autofix(workspace, framework?) Auto-detect and run linter fix mode (clippy/eslint/ruff/gofmt/prettier), return diff + file count
apply_autofix(workspace, apply) Stage fixed changes (apply=true) or revert via git restore (apply=false)

Arena Mode (Blind A/B Comparison)

Command Description
save_arena_vote(vote) Persist a blind vote to ~/.vibecoder/arena-votes.json (provider A/B, winner, prompt, timestamp)
get_arena_history() Load all arena votes and compute per-provider stats (wins/losses/ties/win-rate)

Multiplayer Collaboration

Command Description
create_collab_session(room_id?, user_name, daemon_port?) Create a new collab room; returns room ID, peer ID, and WebSocket URL
join_collab_session(room_id, user_name, daemon_port?) Join an existing collab room by ID
leave_collab_session() Leave the current collab session (WebSocket cleanup handled by frontend)
list_collab_peers(room_id, daemon_port?, api_token?) List connected peers in a room via daemon REST API
get_collab_status(room_id?) Get collab connection status (connected, room_id, peer_count)

Flow Tracking

Command Description
track_flow_event(kind, data) Record a developer activity event
get_flow_context() Get recent activity as formatted context

Terminal Operations

Command Description
spawn_terminal() Spawn a new PTY terminal
write_terminal(id, data) Send input to terminal
resize_terminal(id, rows, cols) Resize terminal

Counsel (Multi-LLM Deliberation)

Command Description
counsel_create_session(topic, participants, moderator_idx) Create a multi-LLM deliberation session with role-based participants
counsel_list_sessions() List all counsel session summaries
counsel_get_session(session_id) Load a counsel session by ID
counsel_run_round(session_id) Execute a deliberation round across all participants
counsel_synthesize(session_id) Generate moderator synthesis of all rounds
counsel_inject_message(session_id, message) Inject a user interjection between rounds
counsel_vote(session_id, round_idx, participant_idx, delta) Vote on a participant’s response

Counsel events emitted:

Event Payload Description
counsel:chunk String Streaming participant response text

SuperBrain (Multi-Provider Routing)

Command Description
superbrain_route(query) Route a query to the best provider using keyword-based analysis
superbrain_query(query, mode) Execute query in a specific mode (SmartRouter/Consensus/ChainRelay/BestOfN/Specialist)
superbrain_get_modes() List available SuperBrain modes with descriptions

SuperBrain events emitted:

Event Payload Description
superbrain:chunk String Streaming response from current model

Utility

Command Description
open_external_url(url) Open URL in system browser

Rust Crates

vibe-core

Foundational editor primitives:

Module Struct/Fn Description
buffer TextBuffer Rope-based text buffer with undo/redo, multi-cursor
file_system FileSystem Async open/save, file watching
workspace Workspace Multi-folder workspace management
git get_status, commit, push, etc. Git operations via git2
search — File and content search with walkdir + regex
terminal TerminalManager PTY terminal via portable-pty
diff DiffEngine, DiffHunk Text diff via similar
executor CommandExecutor Sandboxed command execution
context ContextBuilder Token-budget-aware smart context for AI requests
index CodebaseIndex Symbol indexing with TF-IDF embeddings for relevance ranking
index/embeddings EmbeddingIndex Vector similarity search over codebase symbols
index/symbol Symbol, SymbolKind Symbol extraction from source files

vibe-ai

AI abstraction layer:

Module Description
provider AIProvider trait, Message, CodeContext, ImageAttachment
providers/ollama Ollama HTTP API (streaming)
providers/claude Anthropic Claude API (streaming + vision)
providers/openai OpenAI Chat Completions API (streaming + vision)
providers/gemini Google Gemini API (streaming)
providers/grok xAI Grok API (streaming)
providers/groq Groq API (streaming)
providers/mistral Mistral API (streaming)
providers/cerebras Cerebras API (streaming)
providers/deepseek DeepSeek API (streaming)
providers/zhipu Zhipu GLM API (streaming)
providers/openrouter OpenRouter multi-model API
providers/azure_openai Azure OpenAI Service API
providers/bedrock AWS Bedrock with SigV4 auth
providers/copilot GitHub Copilot integration
providers/vercel_ai Vercel AI SDK API
providers/local_edit Local edit provider
providers/failover Automatic provider fallback chain
chat ChatEngine — session management
completion CompletionEngine — inline code completion
agent AgentLoop — plan→act→observe loop with approval tiers
planner PlannerAgent — plan generation without execution
multi_agent MultiAgentOrchestrator — parallel agents on git worktrees
hooks HookRunner — event-driven hooks (shell + LLM handlers)
skills SkillLoader — auto-activating context snippets
artifacts ArtifactStore — structured output with annotations
policy AdminPolicy — glob-based tool allow/deny with denied_tool_patterns = ["bash(rm*)"]
rules RulesLoader — load .vibecli/rules/*.md with YAML front-matter path-pattern filtering
tools ToolCall, ToolResult, prompt-based tool framework
mcp McpClient — JSON-RPC 2.0 MCP server integration
trace TraceWriter — JSONL audit log + session resume
otel OpenTelemetry span attribute constants

vibe-collab

CRDT-based multiplayer collaboration:

Module Description
server CollabServer — DashMap concurrent room registry, get_or_create_room, cleanup empty rooms
room CollabRoom — Y.Doc per room, Y.Text per file path, peer list, broadcast channel fan-out
protocol Yjs binary sync protocol (SyncStep1/SyncStep2/Update), encode/decode/apply helpers
awareness PeerInfo, CursorState, AwarenessState, 8-color peer palette
error CollabError enum with HTTP status code conversion

vibe-lsp

Language Server Protocol client:

  • JSON-RPC message framing via jsonrpc-core and tokio-util
  • Async LSP server process management
  • LSP types from lsp-types
  • Full document lifecycle notifications (didOpen, didChange, didSave)
  • Wired to Monaco for go-to-definition, hover, completions, diagnostics

vibe-docfmt

Rich document formats read and written as text — see documents.md:

Module Struct/Fn Description
lib read_text, write_text Path-level API; a write is verified by re-reading the rewritten file, and refuses rather than replacing on mismatch
model Document, Block, Span The block model shared by every format
markdown to_markdown, from_markdown, to_plain_text The editable buffer, in both directions
xmltree parse, serialize XML tree that round-trips byte-for-byte where untouched
surgical apply, BlockAdapter Diff-driven element edits shared by DOCX and EPUB
docx read, write OOXML; images, footnotes and page setup survive a save
epub read, write Spine chapters; stylesheets, OPF and metadata preserved
epub_view read_book, read_chapter Reading for display: metadata, cover, TOC (nav doc or NCX), and each chapter with its stylesheets and media resolved
pdf read, write Content streams walked into lines per page; a changed page is appended as an incremental update, so the original bytes stay put
pdf/font Encoder What a font’s codes mean, in both directions — ToUnicode CMap, base encoding, /Differences; a code with no character makes its run opaque rather than guessed
pages/snappy decompress, compress Apple’s IWA block framing around raw Snappy
pages/protobuf Message Wire-format walker that keeps unknown fields byte-identical
pages/iwa parse_stream, serialize_stream Archive streams inside an iWork document
pages/text find_storages, set_text Text substitution plus character-index remapping

vibe-sheetfmt

Spreadsheet formats read and written as a grid, not a text buffer — a Workbook of Sheets of Cells, reusing vibe-docfmt’s xmltree/zipedit for OOXML package handling:

Module Struct/Fn Description
lib read_workbook, write_workbook Path-level API, same write-then-verify contract as vibe-docfmt
model Workbook, Sheet, Cell, CellKind, CellStyle, CellBorders, MergedRange, FrozenPanes, DefinedName, RowHeight Cell.kind (text/number/date/bool) is read-side classification, resolved from the cell’s style against xl/styles.xml’s numFmt — XLSX has no native date type, so “date” means a number whose style is date-shaped. merged_ranges/frozen/defined_names/row_heights are read-side only; a save leaves <mergeCells>/<pane>/<definedNames>/a <row>’s own ht untouched since a write only ever rewrites a changed cell’s <c>
xlsx read, write Shared strings and cell styles untouched; only a changed cell’s <c> is rewritten, never as a shared-string-table edit. CellStyle resolves font bold/italic/color/name/size, solid fill, borders and alignment from cellXfs, including theme colors (<color theme tint>, via vibe_docfmt::drawingml, using SpreadsheetML’s own reordered theme-slot index and single-float tint — a different mechanism from DrawingML’s a:schemeClr) and the legacy indexed palette (openpyxl’s COLOR_INDEX table)
csv read, write RFC 4180 quoting; every cell is CellKind::Text
numbers read_preview Apple’s archive format is unpublished — preview image only, not writable

vibe-slidefmt

Slide-deck formats read and written as positioned shapes, not a text buffer — a Deck of Slides of Shapes with an EMU Frame:

Module Struct/Fn Description
lib read_deck, write_deck Path-level API; Deck.writable is false for Keynote (unpublished archive format, preview-image fallback)
model Deck, Slide, Shape, Run, Frame Shape.text is what an edit diffs and rewrites; Shape.runs (PPTX only) is the same text as its real paragraphs/runs — bold, italic, a color (literal or resolved through the slide’s theme), a hyperlink — for display, not for what a save writes back. Slide.notes (presenter notes) is likewise read-side only
pptx read, write Shape trees including nested <p:grpSp> groups (composed into slide-space EMU), picture fills, background and schemeClr theme colors (lumMod/lumOff/shade/tint, applied in document order via vibe_docfmt::drawingml) all inherited/resolved through slide → layout → master → theme; tables (a:tbl in a graphicFrame, whose own p:xfrm — not spPr’s — was the position bug fixed alongside this) as real cells with merges and a literal per-cell fill; shape rotation and outline (a:ln)
keynote read, write Reverse-engineered .iwa object graph (verified against LibreOffice’s libetonyek); falls back to the embedded preview image when the structure can’t be read

vibe-extensions

WASM extension system:

  • Powered by wasmtime 27
  • Auto-loads *.wasm files from ~/.vibecoder/extensions/
  • Host functions: host_log, host_notify, host_read_file, host_write_file
  • String ABI: extensions export alloc(size) → ptr and memory
  • Extension lifecycle callbacks: init(), on_file_save(path), on_text_change(path, content)
  • Extension Manager — frontend ExtensionManager.ts + ExtensionHost Web Worker
  • VS Code API shim — partial vscode namespace compatibility layer

Writing an Extension

Extensions are compiled to wasm32-unknown-unknown. A minimal Rust extension:

// In your extension's lib.rs (target: wasm32-unknown-unknown)
extern "C" {
    fn host_log(ptr: i32, len: i32);
}

#[no_mangle]
pub extern "C" fn init() -> i32 {
    let msg = "Hello from extension!";
    unsafe { host_log(msg.as_ptr() as i32, msg.len() as i32); }
    0
}

#[no_mangle]
pub extern "C" fn alloc(size: i32) -> i32 {
    let mut v: Vec<u8> = Vec::with_capacity(size as usize);
    let ptr = v.as_ptr() as i32;
    std::mem::forget(v);
    ptr
}

Backend Modules

agent_executor.rs

TauriToolExecutor implements ToolExecutorTrait for the desktop environment:

Tool Method Description
read_file read_file(path) Read file contents (truncated at 8 KB)
write_file write_file(path, content) Write file with auto-mkdir
bash run_bash(command) Shell command execution in workspace root
search_files search_files(query, glob?) Content search with optional glob filter
list_directory list_dir(path) Directory listing
web_search web_search(query) DuckDuckGo Lite search
fetch_url fetch_url(url) Fetch and strip HTML from URL
get_weather vibe_ai::weather::get_weather(location) Current conditions via Open-Meteo (no API key)
task_complete — Signal task completion

Note: apply_patch is not supported — the agent is instructed to use write_file with full contents instead.

flow.rs — Flow Awareness Engine

Tracks developer activity in a 100-event ring buffer:

Event Kind Data Trigger
file_open File path Opening a file
file_edit File path Editing a file (debounced)
file_save File path Saving a file
terminal_cmd Command string Running a terminal command

context_string(limit) returns a formatted summary: recently opened files, recently edited files, and recent terminal commands.

memory.rs — AI Rules

Function Description
load_workspace_rules(root) Load <workspace>/.vibecoder.md
load_global_rules() Load ~/.vibecoder/rules.md
combined_rules(root) Merge both into a single system-prompt injection
save_workspace_rules(root, content) Save project rules
save_global_rules(content) Save global rules (creates ~/.vibecoder/ if needed)

counsel.rs — Multi-LLM Deliberation

Structured multi-round debates between AI providers:

Struct Description
CounselSession Manages deliberation with topic, participants, rounds, and synthesis
CounselParticipant AI provider assigned a role (Expert, Devil’s Advocate, Skeptic, Creative, Pragmatist, Researcher)
CounselRound Collection of responses with optional user feedback per round
CounselResponse Individual model response with voting support

superbrain.rs — Multi-Provider Query Routing

Intelligent query routing and multi-model synthesis:

Mode Description
SmartRouter Keyword-based routing to best model per task type
Consensus All models respond; majority view synthesized
ChainRelay Sequential refinement — each model builds on previous
BestOfN All models respond; judge picks the best
Specialist Decomposes query into subtasks assigned to different models

web_client.rs — Browser-Based Web Client

Self-contained single-page web client for zero-install access (similar to Bolt.new/v0):

  • No external CDN dependencies (air-gap safe)
  • Chat and Agent modes with SSE streaming
  • Markdown rendering with syntax highlighting
  • Dark/light theme support, responsive design
  • Served from the VibeCLI serve command

Keyboard Shortcuts

Source of truth: vibecoder/src/constants/shortcuts.ts, which the welcome screen renders from and shortcuts.test.ts checks against the handlers in App.tsx. Update that file first, then this table.

Global — a window listener, so these work anywhere in the app:

Shortcut Action
Cmd/Ctrl + S Save file
Cmd/Ctrl + O Open folder
Cmd/Ctrl + K Command palette
Cmd/Ctrl + P Command palette
Cmd/Ctrl + Shift + P Command palette (VS Code alias)
Cmd/Ctrl + B Toggle sidebar
Cmd/Ctrl + J Toggle AI panel
Cmd/Ctrl + `` Toggle terminal
Cmd/Ctrl + 1–9 Switch panel tab, in ALL_TABS order: 1 chat · 2 agent-os · 3 ai-teams · 4 ai-playground · 5 ai-context · 6 ai-generation · 7 marketplace · 8 project-hub · 9 planning
Cmd/Ctrl + Shift + E Focus explorer sidebar
Cmd/Ctrl + Shift + G Focus git sidebar
Cmd/Ctrl + Shift + M Maximize panels (Esc restores)

In the editor — Monaco commands, so they need a file open and the editor focused. They do not fire from the welcome screen, the AI panel, the terminal, or the sidebar:

Shortcut Action
Cmd/Ctrl + . AI Edit (DiffComplete) on the selection, or the whole file
Option/Alt + \ AI inline completion
Tab Indent selection

Accessibility (WCAG 2.1 AA)

VibeCoder implements WCAG 2.1 Level AA accessibility:

Feature Description
Focus-visible outlines 2px blue outline on keyboard focus (:focus-visible); suppressed on mouse click
Skip-to-content link Hidden link appears on first Tab press, jumps past sidebar to editor region
Command palette ARIA role="dialog", combobox input, listbox results, option items, aria-activedescendant
Modal focus trap Tab cycles within modal; Escape closes; previous focus restored on close
Agent status announcements aria-live="polite" region announces running/complete/error/idle to screen readers
Screen-reader utility .sr-only CSS class for visually-hidden accessible text
Onboarding tour First-run guided walkthrough (localStorage gate), dismissible

Testing

17,170 test functions across the workspace (counted at v0.5.14 by #[test] / #[tokio::test] attribute).

Crate Tests Key coverage areas
vibecli 5,262+ session store, serve, config, review, workflow, REPL, redteam, gateway, transform, marketplace, background agents, TUI, tool executor, bugbot, vim editor, security scan, automations, legacy migration, batch builder, QA validation, RAG, GPU cluster, inference, training, counsel, superbrain, web client, open memory, auto research, blue/purple team, IDP, agent teams, cloud agents, workflow orchestration
vibe-ai 1,020+ 23 provider backends + failover, tools, trace, hooks, policy, skills, artifacts, planner, MCP, agent teams, multi-agent, SigV4, gemini
vibe-core 293 buffer, git, diff, context, file system, workspace, search, terminal, index/embeddings
vibe-coder (Tauri) 227 Tauri commands, coverage, cost, flow, agent executor, shadow workspace
vibe-lsp 74 LSP client, features, manager, language configs
vibe-collab 53 CRDT rooms, server registry, protocol sync, awareness
vibe-extensions 46 loader, manifest, permissions, registry

Benchmarks: 8 Criterion benchmarks covering cosine similarity (384d/1536d/batch), symbol extraction (50/500 fns), index build (100 files), symbol search, and relevance scoring.

# Rust unit tests
cargo test --workspace

# Specific crates
cargo test -p vibe-core
cargo test -p vibe-ai
cargo test -p vibe-collab

# TypeScript type check
cd vibecoder && npx tsc --noEmit

# End-to-end tests
cd vibecoder/e2e && npm test

See TESTING.md for manual testing checklist.

Debugging

Open DevTools in the running app:

  • macOS: Cmd + Option + I
  • Windows/Linux: Ctrl + Shift + I

Or right-click anywhere and select Inspect.

See DEBUG.md for common troubleshooting steps.