vibe-tree

skill
Guvenlik Denetimi
Basarisiz
Health Gecti
  • License — License: MIT
  • Description — Repository has a description
  • Active repo — Last push 0 days ago
  • Community trust — 259 GitHub stars
Code Basarisiz
  • rm -rf — Recursive force deletion command in .github/workflows/ci.yml
  • process.env — Environment variable access in apps/desktop/e2e/final-test.spec.ts
  • execSync — Synchronous shell command execution in apps/desktop/e2e/helpers/test-git-repo.ts
  • fs.rmSync — Destructive file system operation in apps/desktop/e2e/helpers/test-git-repo.ts
  • process.env — Environment variable access in apps/desktop/e2e/helpers/test-launcher.ts
  • process.env — Environment variable access in apps/desktop/e2e/menu-structure.spec.ts
  • execSync — Synchronous shell command execution in apps/desktop/e2e/open-cwd.spec.ts
  • process.env — Environment variable access in apps/desktop/e2e/open-cwd.spec.ts
  • process.env — Environment variable access in apps/desktop/e2e/project-close-pty-cleanup.spec.ts
Permissions Gecti
  • Permissions — No dangerous permissions requested

Bu listing icin henuz AI raporu yok.

SUMMARY

Vibe code with Claude in parallel git worktrees

README.md
VibeTree Logo

VibeTree

Run every AI coding agent in its own git worktree, in parallel.

License: MIT
Release
CI

Works with Claude Code, OpenAI Codex CLI, Gemini CLI, Aider, opencode, and any other terminal program.


VibeTree is mission control for parallel AI coding agents. Every task gets its own git worktree: an isolated checkout with its own branch and a persistent terminal. Run one agent per worktree, watch them all at once, review each branch's diff, and throw away failed experiments with one click. Use it as a desktop app, or run the server and drive your agents from any browser, including your phone.

Screenshot

VibeTree Screenshot

Demo

VibeTree Demo

Why worktrees

  • Parallel agents do not stomp on each other: each works in its own checkout on its own branch
  • Every conversation maps to one reviewable diff; review and merge per branch
  • Failed experiment? Delete the worktree and its branch is gone with it

Quick start

Desktop app

Download the latest dmg, exe, or AppImage from the Releases page, or run from source:

pnpm install
pnpm dev:desktop

Server + web (browser and phone)

pnpm install
pnpm dev:all        # server + web dev servers; scan the QR code with your phone

Single-process production deployment (one server serves the UI and the API):

pnpm build
pnpm start:server   # http://localhost:3002

Or with Docker:

npm run deploy

The web app is an installable PWA: open it on your phone, add it to your home screen, and check on your agents from anywhere on your network.

Features

Feature Description
Parallel worktrees One isolated checkout, branch, and terminal per task
Any AI CLI It is a real terminal: claude, codex, gemini, aider, or plain shells
Persistent sessions Terminals keep running and their scrollback survives reloads and reconnects
Lifecycle hooks Run your own scripts when worktrees are created or removed
Git diff view Review unstaged and staged changes per worktree
Command scheduler Queue a command to run in a terminal after a delay, once or repeatedly
Desktop notifications Get notified when your agent finishes or asks a question (desktop)
IDE integration Open any worktree in VS Code or Cursor (desktop)
Remote access Web UI over HTTP/WebSocket with QR pairing for phones
Dark/light mode Follows your system, with manual override

Worktree hooks

Automate per-worktree setup and teardown by adding executable scripts to your repository, using the same trust model as git hooks:

mkdir -p .vibetree/hooks

cat > .vibetree/hooks/post-create <<'EOF'
#!/bin/sh
# Runs in the new worktree after it is created
cp "$VIBETREE_PROJECT_PATH/.env" .env 2>/dev/null || true
npm install
EOF

cat > .vibetree/hooks/pre-remove <<'EOF'
#!/bin/sh
# Runs in the worktree before it is removed; failure warns but never blocks
docker compose down 2>/dev/null || true
EOF

chmod +x .vibetree/hooks/post-create .vibetree/hooks/pre-remove

Hooks receive VIBETREE_HOOK, VIBETREE_PROJECT_PATH, VIBETREE_WORKTREE_PATH, and VIBETREE_BRANCH. Output is captured and surfaced in the UI; a 120 second timeout kills hung scripts.

Security

  • The desktop app embeds its server on 127.0.0.1 with a per-launch token; nothing is exposed to the network.
  • The standalone server binds 0.0.0.0 by default so phones can reach it. Authentication is off by default; to require a login, set:
AUTH_REQUIRED=true
VIBETREE_USERNAME=you
VIBETREE_PASSWORD=a-strong-password

The server warns at startup when it is network-reachable without auth. See apps/server/.env.example for all options, including LAN development mode.

Architecture

A pnpm + Turborepo monorepo. Desktop and web share one backend: the same server core is embedded by the Electron app and run standalone for the web.

apps/
  desktop/       Electron app (embeds the server on loopback)
  web/           React PWA (talks to the server over WebSocket)
  server/        Standalone server CLI (QR pairing, static web serving)
packages/
  core/          Git and PTY session logic, shared types, WebSocket adapter
  server-core/   Express + WebSocket server, auth, REST API
  ui/            Shared terminal component
  auth/          Login page and auth context for the web app

See ARCHITECTURE.md for details, and DOCKER.md for cloud deployment.

Development

pnpm install
pnpm dev:desktop   # desktop app
pnpm dev:all       # server + web
pnpm test:run      # unit tests
pnpm --filter @vibetree/desktop test:e2e   # desktop e2e (Playwright)
pnpm --filter @vibetree/web test:e2e       # web e2e (Playwright)
pnpm typecheck && pnpm lint

bin/launch-with-project /path/to/project [--name "CustomName"] launches the desktop app with a project pre-opened.

Roadmap

  • Disk-persisted session buffers that survive server restarts
  • An "agent needs input" dashboard across all worktrees
  • Password setup from the web UI (the auth seam is in place)
  • Homebrew, winget, and npx distribution

License

MIT. See LICENSE.

Yorumlar (0)

Sonuc bulunamadi