{"id":44173775,"url":"https://github.com/lugassawan/rimba","last_synced_at":"2026-06-13T08:01:53.799Z","repository":{"id":337378224,"uuid":"1152352620","full_name":"lugassawan/rimba","owner":"lugassawan","description":"Git worktree manager CLI — automate branch naming, dependency sharing, hooks, and parallel development workflows","archived":false,"fork":false,"pushed_at":"2026-06-10T10:42:17.000Z","size":1032,"stargazers_count":2,"open_issues_count":29,"forks_count":5,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-10T11:05:00.864Z","etag":null,"topics":["branch-management","cli","developer-productivity","developer-tools","git","git-worktree","git-worktrees","go","golang","parallel-development","workflow-automation","worktree"],"latest_commit_sha":null,"homepage":null,"language":"Go","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/lugassawan.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-02-07T18:44:09.000Z","updated_at":"2026-06-10T10:01:29.000Z","dependencies_parsed_at":"2026-03-17T20:05:11.927Z","dependency_job_id":"d2aa1f88-b488-4b5c-8598-088af2cbf0ee","html_url":"https://github.com/lugassawan/rimba","commit_stats":null,"previous_names":["lugassawan/rimba"],"tags_count":19,"template":false,"template_full_name":null,"purl":"pkg:github/lugassawan/rimba","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lugassawan%2Frimba","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lugassawan%2Frimba/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lugassawan%2Frimba/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lugassawan%2Frimba/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lugassawan","download_url":"https://codeload.github.com/lugassawan/rimba/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lugassawan%2Frimba/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34276504,"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-06-13T02:00:06.617Z","response_time":62,"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":["branch-management","cli","developer-productivity","developer-tools","git","git-worktree","git-worktrees","go","golang","parallel-development","workflow-automation","worktree"],"created_at":"2026-02-09T12:11:17.368Z","updated_at":"2026-06-13T08:01:53.786Z","avatar_url":"https://github.com/lugassawan.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\".github/rimba-128.png\" alt=\"rimba\" width=\"128\" height=\"128\" /\u003e\n  \u003ch1\u003erimba\u003c/h1\u003e\n  \u003cp\u003eA CLI tool to create, sync, merge, and organize git worktrees — so you can work on multiple branches in parallel without the hassle.\u003c/p\u003e\n\u003c/div\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/lugassawan/rimba/releases/latest\"\u003e\u003cimg src=\"https://img.shields.io/github/v/release/lugassawan/rimba\" alt=\"Release\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/lugassawan/rimba/actions/workflows/ci.yml\"\u003e\u003cimg src=\"https://img.shields.io/github/actions/workflow/status/lugassawan/rimba/ci.yml?branch=main\u0026label=CI\" alt=\"CI\" /\u003e\u003c/a\u003e\n  \u003ca href=\"go.mod\"\u003e\u003cimg src=\"https://img.shields.io/badge/go-%3E%3D1.25-00ADD8?logo=go\" alt=\"Go\" /\u003e\u003c/a\u003e\n  \u003ca href=\"LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/badge/license-MIT-green\" alt=\"License\" /\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n**rimba** automates the full git worktree lifecycle — branch naming, file copying, dependency sharing, post-create hooks, and cleanup — so you can develop across multiple branches simultaneously with zero friction.\n\n---\n\n## Table of Contents\n\n- [Features](#features)\n- [Installation](#installation)\n  - [Verifying releases](#verifying-releases)\n- [Quick Start](#quick-start)\n- [Commands](#commands)\n- [Configuration](#configuration)\n- [Trust model](#trust-model)\n- [Troubleshooting](#troubleshooting)\n- [Contributing](CONTRIBUTING.md)\n- [License](#license)\n\n## Features\n\n🌿 **Core Workflow**\n\n- **Automatic branch naming** — fixed prefix types (`feature/`, `bugfix/`, `hotfix/`, `docs/`, `test/`, `chore/`) selected per task via flags\n- **File \u0026 directory copying** — auto-copies `.env`, `.env.local`, `.envrc`, `.tool-versions` and other files or directories (e.g. `.vscode/`) into new worktrees\n- **Duplicate worktrees** — copy an existing worktree with auto-suffixed or custom name\n- **Local merge** — merge worktree branches into main or other worktrees with auto-cleanup\n- **Sync worktrees** — rebase or merge onto the latest main branch, with bulk sync support\n- **Monorepo support** — service-scoped worktrees with auto-detected 3-segment branch naming (`service/prefix/task`)\n\n🔧 **Automation**\n\n- **Shared dependencies** — auto-detect lockfiles and clone dependency directories using copy-on-write\n- **Post-create hooks** — run shell commands after worktree creation (e.g. `./gradlew build`)\n- **Auto-cleanup hook** — post-merge Git hook that cleans merged worktrees after `git pull`\n- **Stale cleanup** — prune stale references or auto-detect and remove merged worktrees\n\n🖥️ **Developer Experience**\n\n- **Status dashboard** — colored tabular view with dirty state, ahead/behind counts, and filtering\n- **Pre-execution hints** — shows available flags before long-running commands, auto-filtered and suppressible\n- **Worktree navigation** — open worktrees or run commands inside them via `open`\n- **Shell completions** — bash, zsh, fish, and PowerShell\n- **Cross-platform** — Linux, macOS, and Windows (amd64/arm64)\n\n## Installation\n\n### Quick install (Linux/macOS)\n\n```sh\ncurl -sSfL https://raw.githubusercontent.com/lugassawan/rimba/main/scripts/install.sh | bash\n```\n\n### Go install\n\n```sh\ngo install github.com/lugassawan/rimba@latest\n```\n\n### Build from source\n\n```sh\ngit clone https://github.com/lugassawan/rimba.git\ncd rimba\nmake build\n# Binary is at ./bin/rimba\n```\n\n### Verifying releases\n\nEach release publishes a `checksums.txt` signed with [cosign](https://github.com/sigstore/cosign) keyless signing (Sigstore OIDC via GitHub Actions). To verify a downloaded checksum file:\n\n```sh\ncosign verify-blob \\\n  --certificate checksums.txt.pem \\\n  --signature checksums.txt.sig \\\n  --certificate-identity-regexp 'https://github.com/lugassawan/rimba/.github/workflows/release.yml@refs/tags/v.*' \\\n  --certificate-oidc-issuer 'https://token.actions.githubusercontent.com' \\\n  checksums.txt\n```\n\nEach release archive also ships a companion `*.sbom.json` (SPDX format) on the GitHub Release page.\n\n## Quick Start\n\n```sh\n# Initialize rimba in your repo\nrimba init\n\n# Create a worktree for a task\nrimba add my-feature\n\n# List all worktrees with status (colored output)\nrimba list\n\n# Remove a worktree and its branch when done\nrimba remove my-feature\n```\n\n## Commands\n\n| Command | Description |\n|---------|-------------|\n| `rimba init` | Initialize rimba in the current repo; with `--agents` also installs team agent files, `--agents --local` for personal agent files, `-g`/`--global` for user-level installation, all registering the MCP server |\n| `rimba add \u003ctask\u003e` | Create a new worktree with auto-prefixed branch (`service/task` for monorepos), or `pr:\u003cnum\u003e` to create one from a GitHub PR |\n| `rimba remove \u003ctask\u003e` | Remove a worktree and delete its branch |\n| `rimba rename \u003cold\u003e \u003cnew\u003e` | Rename a worktree's task, branch, and directory |\n| `rimba duplicate \u003ctask\u003e` | Create a copy of an existing worktree |\n| `rimba archive \u003ctask\u003e` | Archive a worktree (remove directory, keep branch) |\n| `rimba restore \u003ctask\u003e` | Restore an archived worktree from its preserved branch |\n| `rimba list` | List worktrees (compact by default; `--full` for all columns) |\n| `rimba status` | Show worktree dashboard; `--detail` adds disk size, 7-day commit velocity, and disk-footprint summary |\n| `rimba log` | Show last commit from each worktree, sorted by recency |\n| `rimba open \u003ctask\u003e` | Open a worktree or run a command inside it |\n| `rimba merge \u003ctask\u003e` | Merge a worktree branch into main or another worktree |\n| `rimba sync \u003ctask\u003e` | Rebase or merge a worktree onto the latest main |\n| `rimba merge-plan` | Recommend optimal merge order to minimize conflicts |\n| `rimba conflict-check` | Detect file overlaps between worktree branches |\n| `rimba exec \u003ccommand\u003e` | Run a shell command across worktrees |\n| `rimba hook install` | Install post-merge and pre-commit hooks |\n| `rimba hook uninstall` | Remove the rimba hooks |\n| `rimba hook status` | Show whether the rimba hooks are installed |\n| `rimba deps status` | Show detected dependency modules for all worktrees |\n| `rimba deps install \u003ctask\u003e` | Detect and install dependencies for a worktree |\n| `rimba clean` | Prune stale references or remove merged/stale worktrees |\n| `rimba update` | Check for updates and replace the binary in place; reminds you to refresh agent files after a successful update |\n| `rimba version` | Print version, commit, build date, and platform info (os/arch/go) |\n| `rimba mcp` | Start MCP server for AI tool integration |\n| `rimba completion` | Generate shell completion scripts (bash, zsh, fish, powershell) |\n\n\u003e See [docs/commands.md](docs/commands.md) for the full reference with all flags, examples, and notes.\n\n## Configuration\n\n`rimba init` creates a `.rimba/` directory with team-shared and personal config files:\n\n```toml\ncopy_files = ['.env', '.env.local', '.envrc', '.tool-versions', '.vscode']\npost_create = ['./gradlew build']\n\n[open]\nide = 'code .'\nagent = 'claude'\n```\n\n\u003e See [docs/configuration.md](docs/configuration.md) for the full field reference, dependency management, and environment variables.\n\nRunning `rimba init --agents` or `rimba init -g` additionally creates or patches MCP server config files in client tools (`.mcp.json`, `.cursor/mcp.json`, `~/.claude.json`, and others). See [docs/configuration.md#mcp-server-registration](docs/configuration.md#mcp-server-registration) for the full list of patched files and entry format.\n\n## Trust model\n\n**`.rimba/settings.toml` is committed and team-shared.** The following fields execute shell commands verbatim via `sh -c`:\n\n- `post_create` — runs after a worktree is created (e.g. `rimba add`, `rimba duplicate`, `rimba restore`)\n- `post_rename` — runs after a worktree is renamed (`rimba rename`)\n- `deps.modules[].install` — runs when installing dependencies into a worktree\n\n### Consent gate\n\nrimba will **not** execute committed shell commands until you have explicitly approved them. On the first run in a new clone (or whenever the command set changes), rimba prints the commands and prompts for consent:\n\n```\nThis repo's .rimba/settings.toml will run shell commands that have not been approved:\n  pnpm install\n  ./scripts/setup.sh\n\nRun these commands? [y/N]\n```\n\nApproval is stored locally in `.rimba/trust.local.toml` (covered by the `.rimba/*.local.toml` gitignore glob — each user consents independently). The approval is keyed by a hash of the command set; changing any command re-arms the gate.\n\n**Pre-approve without prompting** (e.g. for `rimba trust` after reviewing settings, or in CI):\n\n```sh\nrimba trust           # review and approve interactively\nrimba trust --yes     # approve without prompt (non-interactive)\nrimba trust --show    # inspect commands and current approval status\n```\n\n**CI / non-interactive environments:** pass `--yes` or set `RIMBA_TRUST_YES=1`:\n\n```sh\nRIMBA_TRUST_YES=1 rimba add my-task\nrimba add my-task --yes\n```\n\nAs a defense-in-depth measure, the `copy_files` entries and `deps.modules[].lockfile` paths are validated to stay within the worktree directory — paths that escape via `..` are rejected with an error. Note that `worktree_dir` is intentionally not subject to this constraint, because its default value (`../\u003crepo\u003e-worktrees`) is itself a `../`-relative path.\n\n## Global flags\n\n| Flag | Description |\n|------|-------------|\n| `--json` | Output in JSON (where supported: `list`, `status`, `deps status`, `conflict-check`, `exec`) |\n| `--no-color` | Disable colored output (also respects `NO_COLOR`) |\n| `--debug` | Log git commands and timings to stderr (also respects `RIMBA_DEBUG=1`) |\n\n## Troubleshooting\n\nHit an error? rimba prints an actionable `To fix:` hint with most failures. Common errors — trust-gate\nprompts, `exec` scope, dirty-worktree sync blocks, init/config issues — are documented with cause and\nfix in the troubleshooting guide.\n\n\u003e See [docs/troubleshooting.md](docs/troubleshooting.md) for the full troubleshooting reference.\n\nPass `--debug` to any command (or set `RIMBA_DEBUG=1`) to log git commands and their timings to stderr:\n\n```sh\nrimba list --debug\n```\n\n## License\n\n[MIT](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flugassawan%2Frimba","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flugassawan%2Frimba","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flugassawan%2Frimba/lists"}