Skip to content

TPal126/vibe-os

Repository files navigation

VIBE OS v0.6.0 Tauri v2 React 18 Rust TypeScript


VIBE OS
Reasoning-First Agentic IDE

See every decision. Direct every action. Audit everything.
A desktop IDE that turns AI coding agents into transparent, graph-aware coding partners.
Multi-backend workflow orchestration (Claude + Codex) with visual pipeline builder, custom MCP tools,
knowledge-graph context injection, and an append-only audit trail of every choice your agents make.

Quick StartWhat It DoesArchitectureInterfaceFeaturesTesting


The Problem

AI coding tools are black boxes. You paste a prompt, hope for the best, and get back code you didn't watch being written. You can't see what context the model used, what decisions it made, or why it chose one approach over another. And every tool forces you to pay for API access on top of whatever subscription you already have.

VIBE OS makes AI-assisted development visible, auditable, and directable — orchestrating multiple backends on top of your existing subscriptions.


Quick Start

Prerequisites

Requirement Version Why
Node.js 18+ Frontend + sidecar build tooling
Rust 1.89+ Tauri backend compilation
Claude Code CLI Latest Auth + execution backend (npm install -g @anthropic-ai/claude-code)
Git Any Repository management
NASM Any Windows only — required by SurrealDB's crypto deps

No Anthropic API key required. VIBE OS authenticates through your existing Claude Code subscription.

Install & Run

# Clone
git clone https://github.com/TPal126/vibe-os.git
cd vibe-os

# Install frontend dependencies
npm install

# Build the Node agent sidecar (bundles the Claude Agent SDK)
cd agent-sidecar && npm install && npm run build && cd ..

# Run tests (205+ tests across Rust + TypeScript)
npm run test:all

# Launch in development mode
npm run tauri dev

# Build distributable binary (Windows/macOS/Linux)
npm run tauri build

First launch creates ~/.vibe-os/vibe-os.db, copies starter skill files to ~/.vibe-os/skills/, and spawns the agent sidecar which auto-detects your installed claude binary and available CLIs (git, gh, aws, docker, node, python, etc.).


What It Does

VIBE OS is a reasoning-first desktop IDE that owns the orchestration layer on top of multiple AI backends. It runs a native agent loop via the Claude Agent SDK in a Tauri sidecar, supports multi-backend workflow pipelines (Claude + Codex), injects graph-aware context before every query, and exposes custom MCP tools that let agents read and write the knowledge graph directly.

  • Multi-Backend Workflow Orchestration — visual pipeline builder with phase sequencing, gated transitions, and artifact handoff across Claude and Codex backends
  • Native Agent SDK Loop@anthropic-ai/claude-agent-sdk running in a Node sidecar, not CLI stdout parsing
  • Backend Adapters — pluggable BackendAdapter trait with Claude, Codex, and test-fake implementations
  • Graph-Native Context — SurrealDB knowledge graph queried and injected into every system prompt
  • VIBE OS MCP Tools — 6 custom tools let agents access provenance, impact analysis, architecture topology, and record their own decisions
  • Multi-Project Home — project cards with resource summaries, delete support, up to 20 concurrent projects
  • Project Setup Flow — two-step project creation with unified resource catalog and inline pipeline builder
  • Pipeline Builder UI — drag-and-drop phase palette, backend/framework/model configuration per phase, gated vs. auto transitions
  • Unified Events Timeline — single append-only log with both actions and decisions, kind-tagged, exportable
  • Auto-Detected CLIsgit, gh, aws, docker, kubectl, node, npm, python, cargo, etc. surfaced in system prompt and title bar
  • Light + Dark Themes — CSS-variable driven, toggle in title bar, persists across sessions
  • Multi-Session Agents — run multiple agent sessions simultaneously with attention routing
  • Agent Capture — save agent-spawned subagents as reusable .md definitions in ~/.vibe-os/agents/
  • Knowledge Graph Visualizer — D3 force-directed view of repos, modules, functions, decisions, and sessions

Architecture

Three-Process Design

+-----------------------------------------------------+
|                    Frontend                          |
|   React 18 . TypeScript 5.5 . Zustand . Tailwind    |
|   Monaco . D3.js . Vite 6 . @dnd-kit . Lucide      |
+-----------------------------------------------------+
                          |
                   Tauri IPC Bridge
                          |
+-----------------------------------------------------+
|                  Rust Backend                         |
|   SQLite (WAL) . SurrealDB (embedded)               |
|   BackendAdapter trait (Claude / Codex / Fake)       |
|   WorkflowEngine . ArtifactStore . Graph context     |
|   Sidecar lifecycle + stdin/stdout bridge            |
+-----------------------------------------------------+
                    |             |
         stdin/stdout JSON    CLI spawn
                    |             |
+---------------------+   +-------------------+
| Node Agent Sidecar  |   |  Codex CLI        |
| claude-agent-sdk    |   |  JSONL events     |
| VIBE OS MCP server  |   +-------------------+
+---------------------+
          |
          v
   Claude Code binary

Why this architecture:

  • No API key cost — the SDK uses your Claude Code subscription, not direct Anthropic API access
  • Multi-backend — pluggable BackendAdapter trait lets the workflow engine dispatch phases to different AI backends (Claude, Codex) in a single pipeline
  • Typed messages — SDK emits structured SDKAssistantMessage / SDKResultMessage events directly, no stdout parsing gymnastics
  • Graph context injection — Rust assembles provenance and session history from SurrealDB before each query and appends it to the system prompt
  • Custom tools — the sidecar exposes a VIBE OS MCP server whose tools call back into Rust for graph queries
  • Zero wrapper overhead — we control the full prompt composition, tool orchestration, and event routing

VIBE OS MCP Tools

The sidecar exposes an in-process MCP server with tools that give Claude direct access to your knowledge graph:

Tool Purpose
vibe_graph_provenance Decision history, skill attribution, and test coverage for a function
vibe_graph_impact Direct + indirect callers, dependent tickets, validating tests
vibe_record_decision Agent records architectural choices with rationale, confidence, reversibility
vibe_search_graph Free-text search across functions, modules, decisions, skills
vibe_session_context Current session's action history, decisions, token spend
vibe_architecture Module topology, import graph, call graph for a subsystem

When Claude calls any of these, the request flows sidecar → Rust → SurrealDB → back to the SDK as a tool result. No guessing, no hallucinated history — the agent sees what actually happened.

Graph-Native Context Assembly

Before every query() call, Rust extracts file and function references from the user's message, queries SurrealDB for provenance (decisions, skill attribution, test coverage) and session history, and injects it into the system prompt under a # VIBE OS Context section. This is where VIBE OS gets meaningfully smarter than raw Claude Code.


The Interface

Home Screen

+-----------------------------------------------------------------------+
|  VIBE OS                        6 CLIs  0 repos  1 skill  $0.00  - x  |
+-----------------------------------------------------------------------+
|                                                                       |
|   PROJECTS                                                            |
|                                                                       |
|   +-------------------+  +-------------------+  +-----------------+   |
|   | vibe-os       (X) |  | seat-sniper       |  | + New Project   |   |
|   | 2 active          |  | idle              |  |                 |   |
|   | 3 repos 2 skills  |  | 1 repo            |  |                 |   |
|   | + New session     |  |                   |  |                 |   |
|   +-------------------+  +-------------------+  +-----------------+   |
|                                                                       |
|   Clear all projects                                                  |
+-----------------------------------------------------------------------+

Each card shows name, active session count, resource summary chips, and a delete button on hover. The title bar shows CLI count, active repo/skill counts, cost, and a theme toggle.

Project Setup (click "+ New Project")

Two-step flow: Step 1 — name, description, and resource catalog (repos, skills, agents with checkbox composition and drag-drop repo adding). Step 2 — visual pipeline builder.

+-----------------------------------------------------------------------+
|  PIPELINE BUILDER                                                     |
|                                                                       |
|  +-------------+     +------------------------------------------+     |
|  | PHASES      |     |  PIPELINE CANVAS                         |     |
|  |             |     |                                          |     |
|  | [Ideation]  |     |  +----------+  gate  +----------+       |     |
|  | [Planning]  |     |  | Planning |------->| Execution|       |     |
|  | [Execution] |     |  | Claude   |        | Codex    |       |     |
|  | [Verify]    |     |  +----------+  auto  +----------+       |     |
|  | [Review]    |     |                                          |     |
|  | [Custom]    |     +------------------------------------------+     |
|  +-------------+                                                      |
|                       +------------------------------------------+    |
|                       | PHASE CONFIG                             |    |
|                       | Backend: [Claude v] Framework: [React v] |    |
|                       | Model: [Sonnet v]   Prompt: [...]        |    |
|                       +------------------------------------------+    |
+-----------------------------------------------------------------------+

Drag phases from the palette onto the canvas, configure backend/framework/model per phase, and toggle gated vs. auto transitions between phases.

Conversation View

Click a project and you get the quadrant layout: full chat on the left with inline activity cards, knowledge graph visualizer on the right, resource controls and audit trail in the bottom quadrants. Rich cards render inline: file modifications, test results with pass/fail breakdowns, architectural decisions, preview URLs, outcome summaries with cost and token counts. Pipeline runs show a PhaseIndicator header with current phase and progress, GatePromptCard for human-gated transitions, and InteractionCard for framework question/answer flows.

VIBE OS quadrant layout


Features in Depth

1. Multi-Backend Workflow Pipelines

Define multi-phase development workflows with a visual drag-and-drop builder. Each phase can target a different backend (Claude or Codex), a specific framework, and a model. Phases connect via gated transitions (human approval required) or auto transitions (proceed on success). The WorkflowEngine in Rust dispatches each phase to the appropriate BackendAdapter, the ArtifactStore passes context between phases, and inline conversation cards (PhaseIndicator, GatePromptCard, InteractionCard) let you monitor and control the pipeline from the chat view.

2. Native Agent Loop via Claude Agent SDK

VIBE OS runs @anthropic-ai/claude-agent-sdk in a Node sidecar process managed by Tauri's shell plugin. Messages flow through typed SDKMessage events — no CLI stdout parsing, no event classification heuristics. The sidecar manages session lifecycles (multi-turn via streamInput(), cancel via query.close(), resume across restarts) and exposes the VIBE OS MCP server so custom tools are available to Claude on every call.

3. Graph-Native Context Injection

SurrealDB stores a knowledge graph of your code (repos, modules, functions, classes) connected to every decision, action, test, and skill your sessions produce. Before each agent call, Rust queries the graph for provenance on referenced files, recent session history, and architecture context, then injects it as a # VIBE OS Context section in the system prompt. Token-budgeted so graph context doesn't crowd out skills and repo summaries.

4. Unified Resource Catalog

Repos, skills, and agents live in a single scrollable panel with collapsible sections and checkboxes. Everything you've ever added persists globally — check items to include them in a project, uncheck to remove from context without deleting. Repo adding supports three paths: native folder picker (multi-select), GitHub URL batch paste, and drag-and-drop from the OS file explorer.

5. Agent Capture

When Claude spawns a subagent during a session, an inline card appears with a "Save Agent" button. Click it to edit the agent's name, description, system prompt, and tool permissions, then save it as a .md file in ~/.vibe-os/agents/ (with a copy to .claude/agents/ for native Claude Code discovery). Captured agents appear in the resource catalog and can be reused on any future project.

6. Unified Events Timeline

A single events table stores both actions and decisions with a kind field. Actions track file creates, test runs, repo toggles — the low-level breadcrumbs. Decisions add rationale, confidence scores, impact category, and reversibility. The vibe_record_decision MCP tool lets Claude record its own reasoning inline, which then becomes provenance context for future sessions. Everything is append-only and exportable to JSON or CSV.

7. Auto-Detected CLIs

On sidecar startup, VIBE OS scans PATH for common developer CLIs (git, gh, aws, docker, kubectl, node, npm, python, cargo, pip, terraform, gcloud). Detected tools are listed in the agent's system prompt so Claude knows what's available, and a count badge in the title bar shows the running tally with a tooltip listing every version. No configuration, no install flow — if it's on PATH, the agent can use it.

8. Multi-Session Agents with Attention Routing

Each project can have multiple Claude sessions running simultaneously, each with independent conversation history via the SDK. Background sessions that need input trigger OS desktop notifications and surface through pulsing badges in the title bar and project cards. Switch sessions via the tab strip; sessions survive navigation and app restarts through the SDK's native session persistence.

9. Light + Dark Themes

A small pill toggle in the title bar switches between themes instantly via CSS variable overrides — zero component changes required. The preference persists to SQLite and loads before first render to avoid flash. Every color (backgrounds, borders, text, accents, status colors) is re-mapped for the light palette with adjusted contrast.

10. Knowledge Graph Visualizer

An interactive D3 force-directed graph of the knowledge base: nodes for repos, modules, functions, classes, decisions, sessions, and tests, with edges for imports, calls, inheritance, session provenance, and decision impact. Filter by node type, search by name, click-to-inspect for details. Auto-updates as the agent works.


Testing

VIBE OS has 205+ tests across the stack:

# Run all tests (TypeScript + Rust)
npm run test:all

# TypeScript only (Vitest) — 153 tests
npm run test

# Rust only (Cargo) — ~52 tests
npm run test:rust

# Watch mode
npm run test:watch

Test Coverage

Area Tests What's Tested
TypeScript (Vitest) 153 Event parser, event normalization, agent slice, project slice, pipeline slice, layout slice, token slice, repo slice, component rendering (PhaseIndicator, GatePromptCard, InteractionCard), useAgentStream hook, resource catalog wiring
Rust SQLite ~20 Decisions, events, audit, sessions, workspaces, token budgets, pipeline persistence, migrations
Rust SurrealDB ~17 Node CRUD, edge creation, population pipeline, provenance queries, impact queries, session reports
Rust workflow ~8 Workflow runner integration, pipeline progression, gate management, backend adapters
Rust event stream ~7 Stream parsing, event classification, Codex JSONL parsing, serialization fixtures

Tests use real captured agent output as fixtures, not assumed formats.


Tech Stack

Frontend

  • React 18 + TypeScript 5.5 (strict mode)
  • Vite 6 for dev server + production bundling
  • Tailwind CSS 4 with CSS-variable-driven theme system
  • Zustand 5 state management (20 composed slices)
  • Monaco Editor for the escape-hatch code editor
  • D3.js for the knowledge graph visualizer
  • @dnd-kit for drag-and-drop pipeline builder
  • Lucide icons

Backend

  • Rust 1.89+
  • Tauri 2 (tauri-plugin-shell, tauri-plugin-dialog, tauri-plugin-notification, tauri-plugin-clipboard-manager)
  • rusqlite 0.32 (bundled) for operational data, WAL mode
  • SurrealDB 3.0 (embedded, kv-surrealkv) for the knowledge graph
  • Tokio async runtime
  • Notify + notify-debouncer-mini for file watching

Agent Sidecar

  • Node.js 18+
  • @anthropic-ai/claude-agent-sdk — the agent loop
  • Zod for MCP tool schema validation
  • esbuild for bundling

State Management

Zustand store with 20 slices, persisted to SQLite via a custom storage adapter:

Slice Responsibility
projectSlice Project CRUD, active project, project card state, max 20 cap
sessionSlice Active session lifecycle
agentSlice Multi-session chat, agent events, outcome detection, attention routing
agentDefinitionSlice Saved agent .md definitions from ~/.vibe-os/agents/
repoSlice Unified repo management — local + GitHub, CRUD, toggle, branch metadata
skillSlice Skill discovery, toggle state, sync to ~/.claude/skills/
promptSlice System prompt, task context, composed prompt with token budget
editorSlice Open files, active file, save with timestamp
consoleSlice REPL output, command history
eventSlice Unified events (actions + decisions), load, export
decisionSlice Legacy decision state (kept for backward compat)
auditSlice Legacy audit state (kept for backward compat)
diffSlice Pending diffs, accept/reject flow
previewSlice Preview URL, auto-refresh toggle
workspaceSlice Workspace CRUD, file tree, CLAUDE.md watcher
layoutSlice Drawer state, editor panel, quadrant tabs, pinned panes
dashboardSlice Session goal
pipelineSlice Pipeline builder state, phase CRUD, run tracking, gate advancement
tokenSlice Token budgets per skill/repo/session with warnings
themeSlice Light/dark theme state + persistence

Rust Backend Structure

src-tauri/src/
  lib.rs                    # Tauri builder, command registration, state init
  db.rs                     # SQLite init with WAL mode, migrations via user_version
  backends/
    mod.rs                  # BackendAdapter trait, AgentProcesses registry
    claude.rs               # ClaudeAdapter — wraps Claude CLI with stream-json output
    codex.rs                # CodexAdapter — wraps Codex CLI with JSONL events
    fake.rs                 # FakeAdapter — test double for workflow engine tests
  commands/
    agent_commands_v2.rs    # SDK sidecar management, start/send/cancel agent
    agent_commands.rs       # Agent definition CRUD (.md file management)
    claude_commands.rs      # Legacy CLI wrapper (kept for fallback)
    context_commands.rs     # Prompt composition, skill discovery, skill sync
    db_commands.rs          # Session CRUD, settings, claude sessions
    events_commands.rs      # Unified events (actions + decisions)
    pipeline_commands.rs    # Pipeline CRUD, phase management
    project_commands.rs     # Project CRUD (SQLite-backed)
    workflow_commands.rs    # Start pipeline, advance gate, get run status
    decision_commands.rs    # Legacy decision ops
    audit_commands.rs       # Legacy audit ops
    file_commands.rs        # File read/write with audit logging
    workspace_commands.rs   # Workspace scaffolding, file tree, CLAUDE.md watcher
    token_commands.rs       # Token budget CRUD
    graph_commands.rs       # SurrealDB graph queries (provenance, impact, etc.)
    architecture_commands.rs # Architecture analysis
    script_commands.rs      # Script tracking, skill generation
    shell_commands.rs       # Shell command spawning
  workflow/
    runner.rs               # WorkflowRunner + WorkflowEngine — phase sequencing, gate management
    context.rs              # ArtifactStore — phase context handoff
  graph/
    schema.rs               # SCHEMALESS tables + indexes
    nodes.rs / edges.rs     # CRUD primitives
    queries.rs              # Composite queries (provenance, impact, session report)
    population.rs           # Populate from events, decisions, actions
    indexer.rs              # Source file walker + function/class extraction
  services/
    sidecar.rs              # Node sidecar process lifecycle
    tool_handler.rs         # Dispatches MCP tool requests to graph queries
    event_stream.rs         # Legacy CLI stream parser

105 Tauri commands total, registered in lib.rs's invoke_handler!.


Node Agent Sidecar

agent-sidecar/
  package.json              # depends on @anthropic-ai/claude-agent-sdk + zod
  build.mjs                 # esbuild bundler (bundles SDK inline, not external)
  src/
    main.ts                 # stdin/stdout JSON line protocol dispatcher
    session.ts              # SessionManager wrapping SDK query() lifecycle
    tools.ts                # 6 VIBE OS MCP tools with Zod schemas
    types.ts                # Shared protocol types (commands + events)

The sidecar is built with esbuild into a single self-contained dist/main.mjs (~800KB with the SDK bundled inline). Rust spawns it via node dist/main.mjs and communicates through stdin/stdout JSON lines. On startup it auto-detects the claude executable via where claude / which claude so the SDK knows where to execute.


Databases

SQLite (WAL mode) at ~/.vibe-os/vibe-os.db for operational data:

  • sessions — VIBE OS app sessions
  • claude_sessions — per-project Claude session metadata
  • events — unified action + decision timeline (append-only)
  • audit_log, decisions — legacy tables kept for backward compat
  • projects — SQLite-backed project CRUD (replaces settings-based storage)
  • pipelines — workflow pipeline definitions per project
  • pipeline_phases — ordered phases within a pipeline (backend, framework, model, gate config)
  • phase_runs — execution state for each phase in a pipeline run
  • settings — key/value persistence (theme, global repos, token budgets)
  • token_budgets — per-scope budget enforcement
  • workspaces — workspace metadata
  • repos — unified repo registry (replaces old global/workspace split)

Schema migrations via PRAGMA user_version (currently v9).

SurrealDB (embedded, kv-surrealkv) at ~/.vibe-os/graph/ for the knowledge graph:

  • Node tables: repo, module, fn_def, class, ticket, skill, event, session, prompt, test
  • Edge tables: belongs_to, imports, calls, inherits, defined_in, informed_by, modified, addresses, validated_by, led_to, triggered_by, implemented_by, occurred_in, produced, branched_from, session_uses_repo, project_contains_repo

Queried via SurrealQL with composite graph traversals.


Keyboard Shortcuts

Shortcut Action
Ctrl+Shift+C Toggle editor panel (escape hatch)
Ctrl+S / Cmd+S Save active file (audit logged)
Ctrl+R / Cmd+R Focus Python console
Enter (in chat) Send message to Claude
Shift+Enter (in chat) New line

Design System

Dark Theme (default)

Role Hex
Background #08090d
Surface #12141c
Border #232738
Text #b8bdd4
Accent #5b7cfa
Green #34d399
Red #f87171
Orange #fbbf24
Cyan #22d3ee

Light Theme

Role Hex
Background #f8f9fc
Surface #ffffff
Border #e2e5f0
Text #3a3f56
Accent #4a66d9
Green #16a34a
Red #dc2626
Orange #d97706
Cyan #0ea5ba

Typography: Instrument Sans (UI), JetBrains Mono (code), Space Mono (branding).

Theme switching is instant via [data-theme="light"] attribute on <html> — no component-level changes, every color resolves via CSS variables.


Data Locations

Path What's There
~/.vibe-os/vibe-os.db SQLite operational database
~/.vibe-os/graph/ SurrealDB knowledge graph
~/.vibe-os/skills/ User skill markdown files
~/.vibe-os/agents/ Saved agent definitions
~/.vibe-os/repos/ Cloned GitHub repos (when no workspace active)
~/vibe-workspaces/{name}/ Per-project workspaces
~/.claude/skills/ Skill sync target for Claude Code discovery
~/.claude/agents/ Agent sync target for Claude Code discovery

License

MIT


Disclaimer

VIBE OS is an independent open-source project and is not affiliated with, endorsed by, or sponsored by Anthropic or OpenAI. It builds on top of the publicly available @anthropic-ai/claude-agent-sdk and integrates with the Codex CLI. Users must have their own Claude Code and/or Codex installations and subscriptions. "Claude" and "Claude Code" are trademarks of Anthropic, PBC. "Codex" is a trademark of OpenAI.


Built with Tauri v2, React 18, and Rust. Multi-backend workflow orchestration powered by the Claude Agent SDK.

About

Reasoning-first AI coding IDE. Native Agent SDK loop with SurrealDB knowledge-graph context injection and custom MCP tools.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors