{"id":44164373,"url":"https://github.com/guoyongchang/worktree-manager","last_synced_at":"2026-07-05T02:01:07.786Z","repository":{"id":337374219,"uuid":"1150379907","full_name":"guoyongchang/worktree-manager","owner":"guoyongchang","description":"A simple GUI to manage Git Worktrees. Visual Git Worktree manager for parallel branch development. Multi-repo workspaces, smart symlinks, built-in terminal, browser remote access, and AI-ready MCP integration. Built with Tauri 2 + React + Rust.","archived":false,"fork":false,"pushed_at":"2026-07-04T01:32:19.000Z","size":18799,"stargazers_count":55,"open_issues_count":4,"forks_count":3,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-07-04T03:17:50.015Z","etag":null,"topics":["ai-tools","branch","claude-code","codex","desktop-app","git","gui","harness","mcp","multi-repo-app","open-source","repo","rust","tauri","worktree"],"latest_commit_sha":null,"homepage":"https://guoyongchang.github.io/worktree-manager/","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/guoyongchang.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-02-05T07:56:57.000Z","updated_at":"2026-07-02T07:19:18.000Z","dependencies_parsed_at":null,"dependency_job_id":"ba08a652-0c7b-4a75-a0f1-5a1fdc80b409","html_url":"https://github.com/guoyongchang/worktree-manager","commit_stats":null,"previous_names":["guoyongchang/worktree-manager"],"tags_count":201,"template":false,"template_full_name":null,"purl":"pkg:github/guoyongchang/worktree-manager","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/guoyongchang%2Fworktree-manager","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/guoyongchang%2Fworktree-manager/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/guoyongchang%2Fworktree-manager/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/guoyongchang%2Fworktree-manager/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/guoyongchang","download_url":"https://codeload.github.com/guoyongchang/worktree-manager/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/guoyongchang%2Fworktree-manager/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35141083,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-05T02:00:06.290Z","response_time":100,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai-tools","branch","claude-code","codex","desktop-app","git","gui","harness","mcp","multi-repo-app","open-source","repo","rust","tauri","worktree"],"created_at":"2026-02-09T09:00:37.964Z","updated_at":"2026-07-05T02:01:07.759Z","avatar_url":"https://github.com/guoyongchang.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n\u003cimg src=\"docs/icons/app-icon.svg\" width=\"128\" height=\"128\" alt=\"Worktree Manager\"\u003e\n\n# Worktree Manager\n\n**The missing GUI for Git Worktrees.**\n\nWork on multiple branches simultaneously, across multiple repos, without `stash`, `clone`, or context-switching pain.\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)\n[![GitHub release](https://img.shields.io/github/v/release/guoyongchang/worktree-manager)](https://github.com/guoyongchang/worktree-manager/releases)\n[![Platform](https://img.shields.io/badge/platform-Windows%20%7C%20macOS%20%7C%20Linux-lightgrey.svg)](https://github.com/guoyongchang/worktree-manager/releases)\n[![Built with Tauri](https://img.shields.io/badge/built%20with-Tauri%202-orange.svg)](https://tauri.app/)\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"#-quick-start\"\u003eQuick Start\u003c/a\u003e •\n  \u003ca href=\"#-features\"\u003eFeatures\u003c/a\u003e •\n  \u003ca href=\"#-screenshots\"\u003eScreenshots\u003c/a\u003e •\n  \u003ca href=\"#-faq\"\u003eFAQ\u003c/a\u003e •\n  \u003ca href=\"README.zh-CN.md\"\u003e中文\u003c/a\u003e\n\u003c/p\u003e\n\n[**Download**](https://github.com/guoyongchang/worktree-manager/releases) |\n[Documentation](https://guoyongchang.github.io/worktree-manager/) |\n[MCP Integration](docs/MCP.md)\n\n\u003c/div\u003e\n\n---\n\n## Why Worktree Manager?\n\nYou're deep in a feature branch. Fifteen files changed. Dev server running. Then Slack pings: **production is down**.\n\n**Without Worktree Manager** — `git stash` → switch branch → `npm install` → wait for rebuild → fix → switch back → `git stash pop` → pray for no conflicts → restart dev server. **15 minutes minimum.**\n\n**With Worktree Manager** — Click \"New Worktree\", type `hotfix-payment`, done. Your feature branch keeps running. Dependencies are shared via symlink — instant setup. Fix, push, archive. **30 seconds.**\n\n### Multi-Repo Workspaces \u0026 Parallel AI Development\n\nGroup related repos into a **Workspace**. Creating a Worktree creates a `git worktree` across all linked projects at once. Each Worktree gets its own terminal — run Claude Code, Codex, or Cursor in parallel across different branches without conflicts.\n\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"docs/gif/card1-multi-repo.gif\" width=\"680\" alt=\"Multi-Repo Workspaces — one click switches all repos, each worktree runs its own AI agent\"\u003e\n\u003c/p\u003e\n\n### Zero-Cost Context Switching\n\nP0 alert mid-development? Create a `hotfix-payment` Worktree → AI-assisted fix → merge to main → archive → switch back. **Uncommitted code, terminal output, dev servers — everything stays intact.**\n\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"docs/gif/card2-hotfix-story.gif\" width=\"680\" alt=\"Zero-cost context switching — hotfix without losing any work\"\u003e\n\u003c/p\u003e\n\n---\n\n## 📸 Screenshots\n\n| Main Interface | Create Worktree |\n| :---: | :---: |\n| ![Main Interface](docs/screenshots/main-view.png) | ![Create Worktree](docs/screenshots/new-worktree.png) |\n\n| Terminal \u0026 AI Coding | Browser Remote Access |\n| :---: | :---: |\n| ![Terminal](docs/screenshots/use-example-1.png) | ![Remote Access](docs/screenshots/remote-access.png) |\n\n| Voice Input \u0026 AI Refine |\n| :---: |\n| ![Voice Input](docs/screenshots/voice-and-refine.png) |\n\n---\n\n## 🚀 Quick Start\n\n### Download\n\n| Platform | Download |\n|----------|----------|\n| macOS    | [`.dmg`](https://github.com/guoyongchang/worktree-manager/releases/latest) |\n| Windows  | [`-setup.exe`](https://github.com/guoyongchang/worktree-manager/releases/latest) |\n| Linux    | [`.AppImage` / `.deb`](https://github.com/guoyongchang/worktree-manager/releases/latest) |\n\n\u003e **Only requirement: Git 2.0+.** No Node.js or Rust needed at runtime.\n\n### Get Started in 3 Steps\n\n1. **Create a Workspace** — Point to your project directory or create a new one\n2. **Add Projects** — Import repos via GitHub shorthand (`owner/repo`), SSH, or HTTPS\n3. **Create Worktrees** — Click \"+\", name your branch, select projects, go\n\nThat's it. Your worktree is ready with all dependencies symlinked and terminals pre-configured.\n\n---\n\n## ✨ Features\n\n### Core\n\n| Feature | Description |\n|---------|-------------|\n| 🌿 **Parallel Branches** | Work on multiple branches at the same time in isolated directories, sharing the same `.git` data |\n| 📦 **Multi-Repo Workspaces** | Group related repos (frontend + backend + shared libs) — create a worktree and all repos switch together |\n| 🔗 **Smart Symlinks** | Auto-link `node_modules`, `.next`, `vendor`, `target` etc. Zero disk waste, zero reinstall |\n| 🏷️ **Tag Organization** | Tag projects by team, domain, or stack. Filter and batch-select when creating worktrees |\n\n### Git Operations\n\n| Feature | Description |\n|---------|-------------|\n| 🔄 **One-Click Operations** | Sync, merge to test, pull, push — all from the UI with real-time diff stats |\n| 📊 **Branch Insights** | See how many commits you're ahead/behind at a glance |\n| ⚡ **Batch Actions** | Trigger operations across all projects in a worktree simultaneously |\n| 📝 **AI Commit Messages** | Generate commit messages with Qwen AI (optional) |\n\n### Terminal \u0026 Remote\n\n| Feature | Description |\n|---------|-------------|\n| 💻 **Built-in Terminal** | Full terminal emulator (xterm.js + PTY) with shell integration and search |\n| 🎤 **Voice Input** | Speak to type in terminal — powered by Dashscope ASR with AI text refinement |\n| 🌐 **Browser Remote** | Share your workspace over the network with password protection |\n| 🔒 **ngrok Tunneling** | Optional public access via ngrok — no port forwarding needed |\n\n### Integrations\n\n| Feature | Description |\n|---------|-------------|\n| 🖥️ **IDE Integration** | One-click open in VS Code, Cursor, or IntelliJ IDEA |\n| 🤖 **AI-Ready (MCP)** | Built-in [MCP server](docs/MCP.md) — let Claude Code, Cursor, or Codex manage worktrees via natural language |\n| 📁 **Safe Archiving** | Pre-archive checks catch uncommitted changes and running processes. Restore anytime |\n\n---\n\n## ❓ FAQ\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eWhat is a Git worktree?\u003c/strong\u003e\u003c/summary\u003e\n\nA Git worktree lets you check out multiple branches into separate directories while sharing a single `.git` database. Unlike cloning, worktrees share history, refs, and hooks — no extra disk space for repository data. [Learn more](https://git-scm.com/docs/git-worktree)\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eHow does the symlink feature work?\u003c/strong\u003e\u003c/summary\u003e\n\nWhen creating a worktree, Worktree Manager automatically creates symlinks for directories you specify (e.g., `node_modules`, `.next`, `target`). These point to the main project's directories, so you never need to reinstall dependencies. You can configure which folders to link per project.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eCan I use it with a single repo?\u003c/strong\u003e\u003c/summary\u003e\n\nAbsolutely. While multi-repo workspaces are a key feature, Worktree Manager works perfectly with a single repository too.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eDoes browser remote access require installing anything on the remote machine?\u003c/strong\u003e\u003c/summary\u003e\n\nNo. The remote machine only needs a modern browser. Everything runs through the web interface — terminal, file browsing, git operations, worktree management.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eIs my data safe when sharing via browser?\u003c/strong\u003e\u003c/summary\u003e\n\nYes. Browser access is password-protected with challenge-response authentication (no plaintext passwords over the wire). You can also limit access to LAN-only or use ngrok for secure tunneling.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eWhat does the MCP integration do?\u003c/strong\u003e\u003c/summary\u003e\n\nThe built-in [Model Context Protocol](docs/MCP.md) server lets AI coding assistants (Claude Code, Cursor, Codex) create worktrees, check status, and run git operations through natural language — without leaving your AI chat. See [MCP docs](docs/MCP.md) for setup.\n\n\u003c/details\u003e\n\n---\n\n## 📂 How It Works\n\n\u003cdetails\u003e\n\u003csummary\u003eWorkspace directory structure\u003c/summary\u003e\n\n```\nworkspace/\n├── .worktree-manager.json        # Workspace config\n├── projects/                     # Main repos (base branches)\n│   ├── frontend/\n│   └── backend/\n└── worktrees/                    # Your worktrees\n    ├── feature-checkout-v2/\n    │   ├── projects/\n    │   │   ├── frontend/         # ← git worktree (own branch)\n    │   │   │   └── node_modules  # ← symlink to main\n    │   │   └── backend/\n    │   ├── .claude -\u003e ../../.claude       # Shared files\n    │   └── CLAUDE.md -\u003e ../../CLAUDE.md\n    └── hotfix-payment/\n        └── ...\n```\n\nShared items (`.claude`, `CLAUDE.md`, config files) are automatically symlinked across all worktrees so AI assistants and tooling configs stay in sync.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eWorkspace config example (\u003ccode\u003e.worktree-manager.json\u003c/code\u003e)\u003c/summary\u003e\n\n```jsonc\n{\n  \"name\": \"My Project\",\n  \"worktrees_dir\": \"worktrees\",\n  \"linked_workspace_items\": [\".claude\", \"CLAUDE.md\"],\n  \"tags\": [\n    { \"id\": \"fe\", \"name\": \"Frontend\", \"color\": \"#3B82F6\" },\n    { \"id\": \"be\", \"name\": \"Backend\", \"color\": \"#10B981\" }\n  ],\n  \"projects\": [\n    {\n      \"name\": \"web-app\",\n      \"base_branch\": \"main\",\n      \"test_branch\": \"test\",\n      \"merge_strategy\": \"merge\",\n      \"linked_folders\": [\"node_modules\", \".next\"],\n      \"tags\": [\"fe\"]\n    }\n  ]\n}\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eAdding projects — supported formats\u003c/summary\u003e\n\n| Format | Example |\n|--------|---------|\n| GitHub shorthand | `facebook/react` |\n| SSH | `git@github.com:facebook/react.git` |\n| SSH (custom port) | `ssh://git@gitlab.com:1022/org/repo.git` |\n| HTTPS | `https://github.com/facebook/react.git` |\n\n\u003c/details\u003e\n\n---\n\n## 🔧 Building from Source\n\n\u003cdetails\u003e\n\u003csummary\u003eFor contributors and developers\u003c/summary\u003e\n\n**Prerequisites:** Node.js 20+, Rust 1.70+ ([install](https://rustup.rs)), Git 2.0+\n\n```bash\ngit clone https://github.com/guoyongchang/worktree-manager.git\ncd worktree-manager\nnpm install\n\n# Development\nnpm run build \u0026\u0026 npm run tauri dev\n\n# Production build\nnpm run tauri build\n\n# Verify command contracts (IPC ↔ HTTP sync)\nnpm run contracts\n```\n\n**Tech Stack:** Tauri 2 · React 19 · TypeScript 5 · Tailwind CSS 4 · Rust (axum, git2, tokio) · xterm.js\n\nSee [TESTING.md](docs/TESTING.md) for the testing strategy.\n\n\u003c/details\u003e\n\n---\n\n## Contributing\n\nContributions are welcome! Please open an issue first to discuss what you'd like to change.\n\n## License\n\n[MIT](LICENSE)\n\n---\n\n\u003cdiv align=\"center\"\u003e\n\n**If Worktree Manager saves you time, consider giving it a ⭐!**\n\n[Report Bug](https://github.com/guoyongchang/worktree-manager/issues) ·\n[Request Feature](https://github.com/guoyongchang/worktree-manager/issues) ·\n[Documentation](https://guoyongchang.github.io/worktree-manager/)\n\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fguoyongchang%2Fworktree-manager","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fguoyongchang%2Fworktree-manager","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fguoyongchang%2Fworktree-manager/lists"}